diff --git a/apps/tutorial/serviceworker.js.map b/apps/tutorial/serviceworker.js.map index 815ffea7c..4d064c984 100644 --- a/apps/tutorial/serviceworker.js.map +++ b/apps/tutorial/serviceworker.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../node_modules/fp-ts/lib/number.js", "../../node_modules/fp-ts/lib/function.js", "../../node_modules/fp-ts/lib/Apply.js", "../../node_modules/fp-ts/lib/Chain.js", "../../node_modules/fp-ts/lib/internal.js", "../../node_modules/fp-ts/lib/FromEither.js", "../../node_modules/fp-ts/lib/Functor.js", "../../node_modules/fp-ts/lib/Eq.js", "../../node_modules/fp-ts/lib/Ord.js", "../../node_modules/fp-ts/lib/Magma.js", "../../node_modules/fp-ts/lib/Semigroup.js", "../../node_modules/fp-ts/lib/ReadonlyNonEmptyArray.js", "../../node_modules/fp-ts/lib/NonEmptyArray.js", "../../node_modules/fp-ts/lib/Separated.js", "../../node_modules/fp-ts/lib/Witherable.js", "../../node_modules/fp-ts/lib/Zero.js", "../../node_modules/fp-ts/lib/ReadonlyArray.js", "../../node_modules/fp-ts/lib/Array.js", "../../node_modules/fraction.js/fraction.js", "../../node_modules/pretty-format/node_modules/ansi-styles/index.js", "../../node_modules/pretty-format/build/collections.js", "../../node_modules/pretty-format/build/plugins/AsymmetricMatcher.js", "../../node_modules/pretty-format/build/plugins/DOMCollection.js", "../../node_modules/pretty-format/build/plugins/lib/escapeHTML.js", "../../node_modules/pretty-format/build/plugins/lib/markup.js", "../../node_modules/pretty-format/build/plugins/DOMElement.js", "../../node_modules/pretty-format/build/plugins/Immutable.js", "../../node_modules/react-is/cjs/react-is.production.min.js", "../../node_modules/react-is/index.js", "../../node_modules/pretty-format/build/plugins/ReactElement.js", "../../node_modules/pretty-format/build/plugins/ReactTestComponent.js", "../../node_modules/pretty-format/build/index.js", "../../node_modules/fraction.js/fraction.js", "../../node_modules/pretty-format/node_modules/ansi-styles/index.js", "../../node_modules/pretty-format/build/collections.js", "../../node_modules/pretty-format/build/plugins/AsymmetricMatcher.js", "../../node_modules/pretty-format/build/plugins/DOMCollection.js", "../../node_modules/pretty-format/build/plugins/lib/escapeHTML.js", "../../node_modules/pretty-format/build/plugins/lib/markup.js", "../../node_modules/pretty-format/build/plugins/DOMElement.js", "../../node_modules/pretty-format/build/plugins/Immutable.js", "../../node_modules/react-is/cjs/react-is.production.min.js", "../../node_modules/react-is/index.js", "../../node_modules/pretty-format/build/plugins/ReactElement.js", "../../node_modules/pretty-format/build/plugins/ReactTestComponent.js", "../../node_modules/pretty-format/build/index.js", "../../packages/common/src/angle-parser.ts", "../../packages/common/src/format.ts", "../../packages/common/src/number-formatter.ts", "../../packages/common/src/complex.ts", "../../packages/common/src/config.ts", "../../packages/common/src/detailed-error.ts", "../../packages/common/src/emit-event.ts", "../../packages/common/src/equate.ts", "../../packages/common/src/numeric-range.ts", "../../packages/common/src/util.ts", "../../packages/common/src/anti-control-gate.ts", "../../packages/common/src/bloch-display.ts", "../../packages/common/src/control-gate.ts", "../../packages/common/src/h-gate.ts", "../../packages/common/src/measurement-gate.ts", "../../packages/common/src/phase-gate.ts", "../../packages/common/src/qft-dagger-gate.ts", "../../packages/common/src/qft-gate.ts", "../../packages/common/src/rnot-gate.ts", "../../packages/common/src/rx-gate.ts", "../../packages/common/src/ry-gate.ts", "../../packages/common/src/rz-gate.ts", "../../packages/common/src/s-dagger-gate.ts", "../../packages/common/src/s-gate.ts", "../../packages/common/src/spacer-gate.ts", "../../packages/common/src/swap-gate.ts", "../../packages/common/src/t-dagger-gate.ts", "../../packages/common/src/t-gate.ts", "../../packages/common/src/write-gate.ts", "../../packages/common/src/x-gate.ts", "../../packages/common/src/y-gate.ts", "../../packages/common/src/z-gate.ts", "../../node_modules/neverthrow/dist/index.es.js", "../../packages/simulator/src/matrix.ts", "../../packages/simulator/src/state-vector.ts", "../../packages/simulator/src/util.ts", "../../packages/simulator/src/simulator.ts", "../../packages/common/src/angle-parser.ts", "../../packages/common/src/format.ts", "../../packages/common/src/number-formatter.ts", "../../packages/common/src/complex.ts", "../../packages/common/src/config.ts", "../../packages/common/src/detailed-error.ts", "../../packages/common/src/emit-event.ts", "../../packages/common/src/equate.ts", "../../packages/common/src/numeric-range.ts", "../../packages/common/src/util.ts", "../../packages/common/src/anti-control-gate.ts", "../../packages/common/src/bloch-display.ts", "../../packages/common/src/control-gate.ts", "../../packages/common/src/h-gate.ts", "../../packages/common/src/measurement-gate.ts", "../../packages/common/src/phase-gate.ts", "../../packages/common/src/qft-dagger-gate.ts", "../../packages/common/src/qft-gate.ts", "../../packages/common/src/rnot-gate.ts", "../../packages/common/src/rx-gate.ts", "../../packages/common/src/ry-gate.ts", "../../packages/common/src/rz-gate.ts", "../../packages/common/src/s-dagger-gate.ts", "../../packages/common/src/s-gate.ts", "../../packages/common/src/spacer-gate.ts", "../../packages/common/src/swap-gate.ts", "../../packages/common/src/t-dagger-gate.ts", "../../packages/common/src/t-gate.ts", "../../packages/common/src/write-gate.ts", "../../packages/common/src/x-gate.ts", "../../packages/common/src/y-gate.ts", "../../packages/common/src/z-gate.ts", "../../node_modules/neverthrow/dist/index.es.js", "src/serviceworker.js"], - "sourcesContent": ["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Field = exports.MonoidProduct = exports.MonoidSum = exports.SemigroupProduct = exports.SemigroupSum = exports.MagmaSub = exports.Show = exports.Bounded = exports.Ord = exports.Eq = exports.isNumber = void 0;\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * @category refinements\n * @since 2.11.0\n */\nvar isNumber = function (u) { return typeof u === 'number'; };\nexports.isNumber = isNumber;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Eq = {\n equals: function (first, second) { return first === second; }\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Ord = {\n equals: exports.Eq.equals,\n compare: function (first, second) { return (first < second ? -1 : first > second ? 1 : 0); }\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Bounded = {\n equals: exports.Eq.equals,\n compare: exports.Ord.compare,\n top: Infinity,\n bottom: -Infinity\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Show = {\n show: function (n) { return JSON.stringify(n); }\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.MagmaSub = {\n concat: function (first, second) { return first - second; }\n};\n/**\n * `number` semigroup under addition.\n *\n * @example\n * import { SemigroupSum } from 'fp-ts/number'\n *\n * assert.deepStrictEqual(SemigroupSum.concat(2, 3), 5)\n *\n * @category instances\n * @since 2.10.0\n */\nexports.SemigroupSum = {\n concat: function (first, second) { return first + second; }\n};\n/**\n * `number` semigroup under multiplication.\n *\n * @example\n * import { SemigroupProduct } from 'fp-ts/number'\n *\n * assert.deepStrictEqual(SemigroupProduct.concat(2, 3), 6)\n *\n * @category instances\n * @since 2.10.0\n */\nexports.SemigroupProduct = {\n concat: function (first, second) { return first * second; }\n};\n/**\n * `number` monoid under addition.\n *\n * The `empty` value is `0`.\n *\n * @example\n * import { MonoidSum } from 'fp-ts/number'\n *\n * assert.deepStrictEqual(MonoidSum.concat(2, MonoidSum.empty), 2)\n *\n * @category instances\n * @since 2.10.0\n */\nexports.MonoidSum = {\n concat: exports.SemigroupSum.concat,\n empty: 0\n};\n/**\n * `number` monoid under multiplication.\n *\n * The `empty` value is `1`.\n *\n * @example\n * import { MonoidProduct } from 'fp-ts/number'\n *\n * assert.deepStrictEqual(MonoidProduct.concat(2, MonoidProduct.empty), 2)\n *\n * @category instances\n * @since 2.10.0\n */\nexports.MonoidProduct = {\n concat: exports.SemigroupProduct.concat,\n empty: 1\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Field = {\n add: exports.SemigroupSum.concat,\n zero: 0,\n mul: exports.SemigroupProduct.concat,\n one: 1,\n sub: exports.MagmaSub.concat,\n degree: function (_) { return 1; },\n div: function (first, second) { return first / second; },\n mod: function (first, second) { return first % second; }\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndomorphismMonoid = exports.not = exports.SK = exports.hole = exports.pipe = exports.untupled = exports.tupled = exports.absurd = exports.decrement = exports.increment = exports.tuple = exports.flow = exports.flip = exports.constVoid = exports.constUndefined = exports.constNull = exports.constFalse = exports.constTrue = exports.constant = exports.unsafeCoerce = exports.identity = exports.apply = exports.getRing = exports.getSemiring = exports.getMonoid = exports.getSemigroup = exports.getBooleanAlgebra = void 0;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.10.0\n */\nvar getBooleanAlgebra = function (B) { return function () { return ({\n meet: function (x, y) { return function (a) { return B.meet(x(a), y(a)); }; },\n join: function (x, y) { return function (a) { return B.join(x(a), y(a)); }; },\n zero: function () { return B.zero; },\n one: function () { return B.one; },\n implies: function (x, y) { return function (a) { return B.implies(x(a), y(a)); }; },\n not: function (x) { return function (a) { return B.not(x(a)); }; }\n}); }; };\nexports.getBooleanAlgebra = getBooleanAlgebra;\n/**\n * Unary functions form a semigroup as long as you can provide a semigroup for the codomain.\n *\n * @example\n * import { Predicate, getSemigroup } from 'fp-ts/function'\n * import * as B from 'fp-ts/boolean'\n *\n * const f: Predicate = (n) => n <= 2\n * const g: Predicate = (n) => n >= 0\n *\n * const S1 = getSemigroup(B.SemigroupAll)()\n *\n * assert.deepStrictEqual(S1.concat(f, g)(1), true)\n * assert.deepStrictEqual(S1.concat(f, g)(3), false)\n *\n * const S2 = getSemigroup(B.SemigroupAny)()\n *\n * assert.deepStrictEqual(S2.concat(f, g)(1), true)\n * assert.deepStrictEqual(S2.concat(f, g)(3), true)\n *\n * @category instances\n * @since 2.10.0\n */\nvar getSemigroup = function (S) { return function () { return ({\n concat: function (f, g) { return function (a) { return S.concat(f(a), g(a)); }; }\n}); }; };\nexports.getSemigroup = getSemigroup;\n/**\n * Unary functions form a monoid as long as you can provide a monoid for the codomain.\n *\n * @example\n * import { Predicate } from 'fp-ts/Predicate'\n * import { getMonoid } from 'fp-ts/function'\n * import * as B from 'fp-ts/boolean'\n *\n * const f: Predicate = (n) => n <= 2\n * const g: Predicate = (n) => n >= 0\n *\n * const M1 = getMonoid(B.MonoidAll)()\n *\n * assert.deepStrictEqual(M1.concat(f, g)(1), true)\n * assert.deepStrictEqual(M1.concat(f, g)(3), false)\n *\n * const M2 = getMonoid(B.MonoidAny)()\n *\n * assert.deepStrictEqual(M2.concat(f, g)(1), true)\n * assert.deepStrictEqual(M2.concat(f, g)(3), true)\n *\n * @category instances\n * @since 2.10.0\n */\nvar getMonoid = function (M) {\n var getSemigroupM = exports.getSemigroup(M);\n return function () { return ({\n concat: getSemigroupM().concat,\n empty: function () { return M.empty; }\n }); };\n};\nexports.getMonoid = getMonoid;\n/**\n * @category instances\n * @since 2.10.0\n */\nvar getSemiring = function (S) { return ({\n add: function (f, g) { return function (x) { return S.add(f(x), g(x)); }; },\n zero: function () { return S.zero; },\n mul: function (f, g) { return function (x) { return S.mul(f(x), g(x)); }; },\n one: function () { return S.one; }\n}); };\nexports.getSemiring = getSemiring;\n/**\n * @category instances\n * @since 2.10.0\n */\nvar getRing = function (R) {\n var S = exports.getSemiring(R);\n return {\n add: S.add,\n mul: S.mul,\n one: S.one,\n zero: S.zero,\n sub: function (f, g) { return function (x) { return R.sub(f(x), g(x)); }; }\n };\n};\nexports.getRing = getRing;\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.11.0\n */\nvar apply = function (a) { return function (f) { return f(a); }; };\nexports.apply = apply;\n/**\n * @since 2.0.0\n */\nfunction identity(a) {\n return a;\n}\nexports.identity = identity;\n/**\n * @since 2.0.0\n */\nexports.unsafeCoerce = identity;\n/**\n * @since 2.0.0\n */\nfunction constant(a) {\n return function () { return a; };\n}\nexports.constant = constant;\n/**\n * A thunk that returns always `true`.\n *\n * @since 2.0.0\n */\nexports.constTrue = \n/*#__PURE__*/\nconstant(true);\n/**\n * A thunk that returns always `false`.\n *\n * @since 2.0.0\n */\nexports.constFalse = \n/*#__PURE__*/\nconstant(false);\n/**\n * A thunk that returns always `null`.\n *\n * @since 2.0.0\n */\nexports.constNull = \n/*#__PURE__*/\nconstant(null);\n/**\n * A thunk that returns always `undefined`.\n *\n * @since 2.0.0\n */\nexports.constUndefined = \n/*#__PURE__*/\nconstant(undefined);\n/**\n * A thunk that returns always `void`.\n *\n * @since 2.0.0\n */\nexports.constVoid = exports.constUndefined;\n/**\n * Flips the order of the arguments of a function of two arguments.\n *\n * @since 2.0.0\n */\nfunction flip(f) {\n return function (b, a) { return f(a, b); };\n}\nexports.flip = flip;\nfunction flow(ab, bc, cd, de, ef, fg, gh, hi, ij) {\n switch (arguments.length) {\n case 1:\n return ab;\n case 2:\n return function () {\n return bc(ab.apply(this, arguments));\n };\n case 3:\n return function () {\n return cd(bc(ab.apply(this, arguments)));\n };\n case 4:\n return function () {\n return de(cd(bc(ab.apply(this, arguments))));\n };\n case 5:\n return function () {\n return ef(de(cd(bc(ab.apply(this, arguments)))));\n };\n case 6:\n return function () {\n return fg(ef(de(cd(bc(ab.apply(this, arguments))))));\n };\n case 7:\n return function () {\n return gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))));\n };\n case 8:\n return function () {\n return hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments))))))));\n };\n case 9:\n return function () {\n return ij(hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))))));\n };\n }\n return;\n}\nexports.flow = flow;\n/**\n * @since 2.0.0\n */\nfunction tuple() {\n var t = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n t[_i] = arguments[_i];\n }\n return t;\n}\nexports.tuple = tuple;\n/**\n * @since 2.0.0\n */\nfunction increment(n) {\n return n + 1;\n}\nexports.increment = increment;\n/**\n * @since 2.0.0\n */\nfunction decrement(n) {\n return n - 1;\n}\nexports.decrement = decrement;\n/**\n * @since 2.0.0\n */\nfunction absurd(_) {\n throw new Error('Called `absurd` function which should be uncallable');\n}\nexports.absurd = absurd;\n/**\n * Creates a tupled version of this function: instead of `n` arguments, it accepts a single tuple argument.\n *\n * @example\n * import { tupled } from 'fp-ts/function'\n *\n * const add = tupled((x: number, y: number): number => x + y)\n *\n * assert.strictEqual(add([1, 2]), 3)\n *\n * @since 2.4.0\n */\nfunction tupled(f) {\n return function (a) { return f.apply(void 0, a); };\n}\nexports.tupled = tupled;\n/**\n * Inverse function of `tupled`\n *\n * @since 2.4.0\n */\nfunction untupled(f) {\n return function () {\n var a = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n return f(a);\n };\n}\nexports.untupled = untupled;\nfunction pipe(a, ab, bc, cd, de, ef, fg, gh, hi) {\n switch (arguments.length) {\n case 1:\n return a;\n case 2:\n return ab(a);\n case 3:\n return bc(ab(a));\n case 4:\n return cd(bc(ab(a)));\n case 5:\n return de(cd(bc(ab(a))));\n case 6:\n return ef(de(cd(bc(ab(a)))));\n case 7:\n return fg(ef(de(cd(bc(ab(a))))));\n case 8:\n return gh(fg(ef(de(cd(bc(ab(a)))))));\n case 9:\n return hi(gh(fg(ef(de(cd(bc(ab(a))))))));\n default:\n var ret = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n ret = arguments[i](ret);\n }\n return ret;\n }\n}\nexports.pipe = pipe;\n/**\n * Type hole simulation\n *\n * @since 2.7.0\n */\nexports.hole = absurd;\n/**\n * @since 2.11.0\n */\nvar SK = function (_, b) { return b; };\nexports.SK = SK;\n/**\n * Use `Predicate` module instead.\n *\n * @since 2.0.0\n * @deprecated\n */\nfunction not(predicate) {\n return function (a) { return !predicate(a); };\n}\nexports.not = not;\n/**\n * Use `Endomorphism` module instead.\n *\n * @category instances\n * @since 2.10.0\n * @deprecated\n */\nvar getEndomorphismMonoid = function () { return ({\n concat: function (first, second) { return flow(first, second); },\n empty: identity\n}); };\nexports.getEndomorphismMonoid = getEndomorphismMonoid;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sequenceS = exports.sequenceT = exports.getApplySemigroup = exports.apS = exports.apSecond = exports.apFirst = exports.ap = void 0;\nvar function_1 = require(\"./function\");\nfunction ap(F, G) {\n return function (fa) { return function (fab) {\n return F.ap(F.map(fab, function (gab) { return function (ga) { return G.ap(gab, ga); }; }), fa);\n }; };\n}\nexports.ap = ap;\nfunction apFirst(A) {\n return function (second) { return function (first) {\n return A.ap(A.map(first, function (a) { return function () { return a; }; }), second);\n }; };\n}\nexports.apFirst = apFirst;\nfunction apSecond(A) {\n return function (second) { return function (first) {\n return A.ap(A.map(first, function () { return function (b) { return b; }; }), second);\n }; };\n}\nexports.apSecond = apSecond;\nfunction apS(F) {\n return function (name, fb) { return function (fa) {\n return F.ap(F.map(fa, function (a) { return function (b) {\n var _a;\n return Object.assign({}, a, (_a = {}, _a[name] = b, _a));\n }; }), fb);\n }; };\n}\nexports.apS = apS;\nfunction getApplySemigroup(F) {\n return function (S) { return ({\n concat: function (first, second) {\n return F.ap(F.map(first, function (x) { return function (y) { return S.concat(x, y); }; }), second);\n }\n }); };\n}\nexports.getApplySemigroup = getApplySemigroup;\nfunction curried(f, n, acc) {\n return function (x) {\n var combined = Array(acc.length + 1);\n for (var i = 0; i < acc.length; i++) {\n combined[i] = acc[i];\n }\n combined[acc.length] = x;\n return n === 0 ? f.apply(null, combined) : curried(f, n - 1, combined);\n };\n}\nvar tupleConstructors = {\n 1: function (a) { return [a]; },\n 2: function (a) { return function (b) { return [a, b]; }; },\n 3: function (a) { return function (b) { return function (c) { return [a, b, c]; }; }; },\n 4: function (a) { return function (b) { return function (c) { return function (d) { return [a, b, c, d]; }; }; }; },\n 5: function (a) { return function (b) { return function (c) { return function (d) { return function (e) { return [a, b, c, d, e]; }; }; }; }; }\n};\nfunction getTupleConstructor(len) {\n if (!tupleConstructors.hasOwnProperty(len)) {\n tupleConstructors[len] = curried(function_1.tuple, len - 1, []);\n }\n return tupleConstructors[len];\n}\nfunction sequenceT(F) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var len = args.length;\n var f = getTupleConstructor(len);\n var fas = F.map(args[0], f);\n for (var i = 1; i < len; i++) {\n fas = F.ap(fas, args[i]);\n }\n return fas;\n };\n}\nexports.sequenceT = sequenceT;\nfunction getRecordConstructor(keys) {\n var len = keys.length;\n switch (len) {\n case 1:\n return function (a) {\n var _a;\n return (_a = {}, _a[keys[0]] = a, _a);\n };\n case 2:\n return function (a) { return function (b) {\n var _a;\n return (_a = {}, _a[keys[0]] = a, _a[keys[1]] = b, _a);\n }; };\n case 3:\n return function (a) { return function (b) { return function (c) {\n var _a;\n return (_a = {}, _a[keys[0]] = a, _a[keys[1]] = b, _a[keys[2]] = c, _a);\n }; }; };\n case 4:\n return function (a) { return function (b) { return function (c) { return function (d) {\n var _a;\n return (_a = {},\n _a[keys[0]] = a,\n _a[keys[1]] = b,\n _a[keys[2]] = c,\n _a[keys[3]] = d,\n _a);\n }; }; }; };\n case 5:\n return function (a) { return function (b) { return function (c) { return function (d) { return function (e) {\n var _a;\n return (_a = {},\n _a[keys[0]] = a,\n _a[keys[1]] = b,\n _a[keys[2]] = c,\n _a[keys[3]] = d,\n _a[keys[4]] = e,\n _a);\n }; }; }; }; };\n default:\n return curried(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var r = {};\n for (var i = 0; i < len; i++) {\n r[keys[i]] = args[i];\n }\n return r;\n }, len - 1, []);\n }\n}\nfunction sequenceS(F) {\n return function (r) {\n var keys = Object.keys(r);\n var len = keys.length;\n var f = getRecordConstructor(keys);\n var fr = F.map(r[keys[0]], f);\n for (var i = 1; i < len; i++) {\n fr = F.ap(fr, r[keys[i]]);\n }\n return fr;\n };\n}\nexports.sequenceS = sequenceS;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bind = exports.chainFirst = void 0;\nfunction chainFirst(M) {\n return function (f) { return function (first) { return M.chain(first, function (a) { return M.map(f(a), function () { return a; }); }); }; };\n}\nexports.chainFirst = chainFirst;\nfunction bind(M) {\n return function (name, f) { return function (ma) { return M.chain(ma, function (a) { return M.map(f(a), function (b) {\n var _a;\n return Object.assign({}, a, (_a = {}, _a[name] = b, _a));\n }); }); }; };\n}\nexports.bind = bind;\n", "\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromReadonlyNonEmptyArray = exports.has = exports.emptyRecord = exports.emptyReadonlyArray = exports.tail = exports.head = exports.isNonEmpty = exports.singleton = exports.right = exports.left = exports.isRight = exports.isLeft = exports.some = exports.none = exports.isSome = exports.isNone = void 0;\n// -------------------------------------------------------------------------------------\n// Option\n// -------------------------------------------------------------------------------------\n/** @internal */\nvar isNone = function (fa) { return fa._tag === 'None'; };\nexports.isNone = isNone;\n/** @internal */\nvar isSome = function (fa) { return fa._tag === 'Some'; };\nexports.isSome = isSome;\n/** @internal */\nexports.none = { _tag: 'None' };\n/** @internal */\nvar some = function (a) { return ({ _tag: 'Some', value: a }); };\nexports.some = some;\n// -------------------------------------------------------------------------------------\n// Either\n// -------------------------------------------------------------------------------------\n/** @internal */\nvar isLeft = function (ma) { return ma._tag === 'Left'; };\nexports.isLeft = isLeft;\n/** @internal */\nvar isRight = function (ma) { return ma._tag === 'Right'; };\nexports.isRight = isRight;\n/** @internal */\nvar left = function (e) { return ({ _tag: 'Left', left: e }); };\nexports.left = left;\n/** @internal */\nvar right = function (a) { return ({ _tag: 'Right', right: a }); };\nexports.right = right;\n// -------------------------------------------------------------------------------------\n// ReadonlyNonEmptyArray\n// -------------------------------------------------------------------------------------\n/** @internal */\nvar singleton = function (a) { return [a]; };\nexports.singleton = singleton;\n/** @internal */\nvar isNonEmpty = function (as) { return as.length > 0; };\nexports.isNonEmpty = isNonEmpty;\n/** @internal */\nvar head = function (as) { return as[0]; };\nexports.head = head;\n/** @internal */\nvar tail = function (as) { return as.slice(1); };\nexports.tail = tail;\n// -------------------------------------------------------------------------------------\n// empty\n// -------------------------------------------------------------------------------------\n/** @internal */\nexports.emptyReadonlyArray = [];\n/** @internal */\nexports.emptyRecord = {};\n// -------------------------------------------------------------------------------------\n// Record\n// -------------------------------------------------------------------------------------\n/** @internal */\nexports.has = Object.prototype.hasOwnProperty;\n// -------------------------------------------------------------------------------------\n// NonEmptyArray\n// -------------------------------------------------------------------------------------\n/** @internal */\nvar fromReadonlyNonEmptyArray = function (as) { return __spreadArray([as[0]], as.slice(1)); };\nexports.fromReadonlyNonEmptyArray = fromReadonlyNonEmptyArray;\n", "\"use strict\";\n/**\n * The `FromEither` type class represents those data types which support errors.\n *\n * @since 2.10.0\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filterOrElse = exports.chainEitherK = exports.fromEitherK = exports.chainOptionK = exports.fromOptionK = exports.fromPredicate = exports.fromOption = void 0;\nvar function_1 = require(\"./function\");\nvar _ = __importStar(require(\"./internal\"));\nfunction fromOption(F) {\n return function (onNone) { return function (ma) { return F.fromEither(_.isNone(ma) ? _.left(onNone()) : _.right(ma.value)); }; };\n}\nexports.fromOption = fromOption;\nfunction fromPredicate(F) {\n return function (predicate, onFalse) { return function (a) {\n return F.fromEither(predicate(a) ? _.right(a) : _.left(onFalse(a)));\n }; };\n}\nexports.fromPredicate = fromPredicate;\nfunction fromOptionK(F) {\n var fromOptionF = fromOption(F);\n return function (onNone) {\n var from = fromOptionF(onNone);\n return function (f) { return function_1.flow(f, from); };\n };\n}\nexports.fromOptionK = fromOptionK;\nfunction chainOptionK(F, M) {\n var fromOptionKF = fromOptionK(F);\n return function (onNone) {\n var from = fromOptionKF(onNone);\n return function (f) { return function (ma) { return M.chain(ma, from(f)); }; };\n };\n}\nexports.chainOptionK = chainOptionK;\nfunction fromEitherK(F) {\n return function (f) { return function_1.flow(f, F.fromEither); };\n}\nexports.fromEitherK = fromEitherK;\nfunction chainEitherK(F, M) {\n var fromEitherKF = fromEitherK(F);\n return function (f) { return function (ma) { return M.chain(ma, fromEitherKF(f)); }; };\n}\nexports.chainEitherK = chainEitherK;\nfunction filterOrElse(F, M) {\n return function (predicate, onFalse) { return function (ma) {\n return M.chain(ma, function (a) { return F.fromEither(predicate(a) ? _.right(a) : _.left(onFalse(a))); });\n }; };\n}\nexports.filterOrElse = filterOrElse;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFunctorComposition = exports.bindTo = exports.flap = exports.map = void 0;\n/**\n * A `Functor` is a type constructor which supports a mapping operation `map`.\n *\n * `map` can be used to turn functions `a -> b` into functions `f a -> f b` whose argument and return types use the type\n * constructor `f` to represent some computational context.\n *\n * Instances must satisfy the following laws:\n *\n * 1. Identity: `F.map(fa, a => a) <-> fa`\n * 2. Composition: `F.map(fa, a => bc(ab(a))) <-> F.map(F.map(fa, ab), bc)`\n *\n * @since 2.0.0\n */\nvar function_1 = require(\"./function\");\nfunction map(F, G) {\n return function (f) { return function (fa) { return F.map(fa, function (ga) { return G.map(ga, f); }); }; };\n}\nexports.map = map;\nfunction flap(F) {\n return function (a) { return function (fab) { return F.map(fab, function (f) { return f(a); }); }; };\n}\nexports.flap = flap;\nfunction bindTo(F) {\n return function (name) { return function (fa) { return F.map(fa, function (a) {\n var _a;\n return (_a = {}, _a[name] = a, _a);\n }); }; };\n}\nexports.bindTo = bindTo;\n/** @deprecated */\nfunction getFunctorComposition(F, G) {\n var _map = map(F, G);\n return {\n map: function (fga, f) { return function_1.pipe(fga, _map(f)); }\n };\n}\nexports.getFunctorComposition = getFunctorComposition;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.eqDate = exports.eqNumber = exports.eqString = exports.eqBoolean = exports.eq = exports.strictEqual = exports.getStructEq = exports.getTupleEq = exports.Contravariant = exports.getMonoid = exports.getSemigroup = exports.eqStrict = exports.URI = exports.contramap = exports.tuple = exports.struct = exports.fromEquals = void 0;\nvar function_1 = require(\"./function\");\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.0.0\n */\nvar fromEquals = function (equals) { return ({\n equals: function (x, y) { return x === y || equals(x, y); }\n}); };\nexports.fromEquals = fromEquals;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @category combinators\n * @since 2.10.0\n */\nvar struct = function (eqs) {\n return exports.fromEquals(function (first, second) {\n for (var key in eqs) {\n if (!eqs[key].equals(first[key], second[key])) {\n return false;\n }\n }\n return true;\n });\n};\nexports.struct = struct;\n/**\n * Given a tuple of `Eq`s returns a `Eq` for the tuple\n *\n * @example\n * import { tuple } from 'fp-ts/Eq'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import * as B from 'fp-ts/boolean'\n *\n * const E = tuple(S.Eq, N.Eq, B.Eq)\n * assert.strictEqual(E.equals(['a', 1, true], ['a', 1, true]), true)\n * assert.strictEqual(E.equals(['a', 1, true], ['b', 1, true]), false)\n * assert.strictEqual(E.equals(['a', 1, true], ['a', 2, true]), false)\n * assert.strictEqual(E.equals(['a', 1, true], ['a', 1, false]), false)\n *\n * @category combinators\n * @since 2.10.0\n */\nvar tuple = function () {\n var eqs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n eqs[_i] = arguments[_i];\n }\n return exports.fromEquals(function (first, second) { return eqs.every(function (E, i) { return E.equals(first[i], second[i]); }); });\n};\nexports.tuple = tuple;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\n/* istanbul ignore next */\nvar contramap_ = function (fa, f) { return function_1.pipe(fa, exports.contramap(f)); };\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * @category Contravariant\n * @since 2.0.0\n */\nvar contramap = function (f) { return function (fa) {\n return exports.fromEquals(function (x, y) { return fa.equals(f(x), f(y)); });\n}; };\nexports.contramap = contramap;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.0.0\n */\nexports.URI = 'Eq';\n/**\n * @category instances\n * @since 2.5.0\n */\nexports.eqStrict = {\n equals: function (a, b) { return a === b; }\n};\nvar empty = {\n equals: function () { return true; }\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nvar getSemigroup = function () { return ({\n concat: function (x, y) { return exports.fromEquals(function (a, b) { return x.equals(a, b) && y.equals(a, b); }); }\n}); };\nexports.getSemigroup = getSemigroup;\n/**\n * @category instances\n * @since 2.6.0\n */\nvar getMonoid = function () { return ({\n concat: exports.getSemigroup().concat,\n empty: empty\n}); };\nexports.getMonoid = getMonoid;\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Contravariant = {\n URI: exports.URI,\n contramap: contramap_\n};\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use [`tuple`](#tuple) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getTupleEq = exports.tuple;\n/**\n * Use [`struct`](#struct) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getStructEq = exports.struct;\n/**\n * Use [`eqStrict`](#eqstrict) instead\n *\n * @since 2.0.0\n * @deprecated\n */\nexports.strictEqual = exports.eqStrict.equals;\n/**\n * Use small, specific instances instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.eq = exports.Contravariant;\n/**\n * Use [`Eq`](./boolean.ts.html#eq) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.eqBoolean = exports.eqStrict;\n/**\n * Use [`Eq`](./string.ts.html#eq) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.eqString = exports.eqStrict;\n/**\n * Use [`Eq`](./number.ts.html#eq) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.eqNumber = exports.eqStrict;\n/**\n * Use [`Eq`](./Date.ts.html#eq) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.eqDate = {\n equals: function (first, second) { return first.valueOf() === second.valueOf(); }\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ordDate = exports.ordNumber = exports.ordString = exports.ordBoolean = exports.ord = exports.getDualOrd = exports.getTupleOrd = exports.between = exports.clamp = exports.max = exports.min = exports.geq = exports.leq = exports.gt = exports.lt = exports.equals = exports.trivial = exports.Contravariant = exports.getMonoid = exports.getSemigroup = exports.URI = exports.contramap = exports.reverse = exports.tuple = exports.fromCompare = exports.equalsDefault = void 0;\nvar Eq_1 = require(\"./Eq\");\nvar function_1 = require(\"./function\");\n// -------------------------------------------------------------------------------------\n// defaults\n// -------------------------------------------------------------------------------------\n/**\n * @category defaults\n * @since 2.10.0\n */\nvar equalsDefault = function (compare) { return function (first, second) {\n return first === second || compare(first, second) === 0;\n}; };\nexports.equalsDefault = equalsDefault;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.0.0\n */\nvar fromCompare = function (compare) { return ({\n equals: exports.equalsDefault(compare),\n compare: function (first, second) { return (first === second ? 0 : compare(first, second)); }\n}); };\nexports.fromCompare = fromCompare;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * Given a tuple of `Ord`s returns an `Ord` for the tuple.\n *\n * @example\n * import { tuple } from 'fp-ts/Ord'\n * import * as B from 'fp-ts/boolean'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n *\n * const O = tuple(S.Ord, N.Ord, B.Ord)\n * assert.strictEqual(O.compare(['a', 1, true], ['b', 2, true]), -1)\n * assert.strictEqual(O.compare(['a', 1, true], ['a', 2, true]), -1)\n * assert.strictEqual(O.compare(['a', 1, true], ['a', 1, false]), 1)\n *\n * @category combinators\n * @since 2.10.0\n */\nvar tuple = function () {\n var ords = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n ords[_i] = arguments[_i];\n }\n return exports.fromCompare(function (first, second) {\n var i = 0;\n for (; i < ords.length - 1; i++) {\n var r = ords[i].compare(first[i], second[i]);\n if (r !== 0) {\n return r;\n }\n }\n return ords[i].compare(first[i], second[i]);\n });\n};\nexports.tuple = tuple;\n/**\n * @category combinators\n * @since 2.10.0\n */\nvar reverse = function (O) { return exports.fromCompare(function (first, second) { return O.compare(second, first); }); };\nexports.reverse = reverse;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\n/* istanbul ignore next */\nvar contramap_ = function (fa, f) { return function_1.pipe(fa, exports.contramap(f)); };\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * @category Contravariant\n * @since 2.0.0\n */\nvar contramap = function (f) { return function (fa) {\n return exports.fromCompare(function (first, second) { return fa.compare(f(first), f(second)); });\n}; };\nexports.contramap = contramap;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.0.0\n */\nexports.URI = 'Ord';\n/**\n * @category instances\n * @since 2.0.0\n */\nvar getSemigroup = function () { return ({\n concat: function (first, second) {\n return exports.fromCompare(function (a, b) {\n var ox = first.compare(a, b);\n return ox !== 0 ? ox : second.compare(a, b);\n });\n }\n}); };\nexports.getSemigroup = getSemigroup;\n/**\n * Returns a `Monoid` such that:\n *\n * - its `concat(ord1, ord2)` operation will order first by `ord1`, and then by `ord2`\n * - its `empty` value is an `Ord` that always considers compared elements equal\n *\n * @example\n * import { sort } from 'fp-ts/Array'\n * import { contramap, reverse, getMonoid } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as B from 'fp-ts/boolean'\n * import { pipe } from 'fp-ts/function'\n * import { concatAll } from 'fp-ts/Monoid'\n * import * as N from 'fp-ts/number'\n *\n * interface User {\n * readonly id: number\n * readonly name: string\n * readonly age: number\n * readonly rememberMe: boolean\n * }\n *\n * const byName = pipe(\n * S.Ord,\n * contramap((p: User) => p.name)\n * )\n *\n * const byAge = pipe(\n * N.Ord,\n * contramap((p: User) => p.age)\n * )\n *\n * const byRememberMe = pipe(\n * B.Ord,\n * contramap((p: User) => p.rememberMe)\n * )\n *\n * const M = getMonoid()\n *\n * const users: Array = [\n * { id: 1, name: 'Guido', age: 47, rememberMe: false },\n * { id: 2, name: 'Guido', age: 46, rememberMe: true },\n * { id: 3, name: 'Giulio', age: 44, rememberMe: false },\n * { id: 4, name: 'Giulio', age: 44, rememberMe: true }\n * ]\n *\n * // sort by name, then by age, then by `rememberMe`\n * const O1 = concatAll(M)([byName, byAge, byRememberMe])\n * assert.deepStrictEqual(sort(O1)(users), [\n * { id: 3, name: 'Giulio', age: 44, rememberMe: false },\n * { id: 4, name: 'Giulio', age: 44, rememberMe: true },\n * { id: 2, name: 'Guido', age: 46, rememberMe: true },\n * { id: 1, name: 'Guido', age: 47, rememberMe: false }\n * ])\n *\n * // now `rememberMe = true` first, then by name, then by age\n * const O2 = concatAll(M)([reverse(byRememberMe), byName, byAge])\n * assert.deepStrictEqual(sort(O2)(users), [\n * { id: 4, name: 'Giulio', age: 44, rememberMe: true },\n * { id: 2, name: 'Guido', age: 46, rememberMe: true },\n * { id: 3, name: 'Giulio', age: 44, rememberMe: false },\n * { id: 1, name: 'Guido', age: 47, rememberMe: false }\n * ])\n *\n * @category instances\n * @since 2.4.0\n */\nvar getMonoid = function () { return ({\n concat: exports.getSemigroup().concat,\n empty: exports.fromCompare(function () { return 0; })\n}); };\nexports.getMonoid = getMonoid;\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Contravariant = {\n URI: exports.URI,\n contramap: contramap_\n};\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.11.0\n */\nexports.trivial = {\n equals: function_1.constTrue,\n compare: \n /*#__PURE__*/\n function_1.constant(0)\n};\n/**\n * @since 2.11.0\n */\nvar equals = function (O) { return function (second) { return function (first) {\n return first === second || O.compare(first, second) === 0;\n}; }; };\nexports.equals = equals;\n// TODO: curry in v3\n/**\n * Test whether one value is _strictly less than_ another\n *\n * @since 2.0.0\n */\nvar lt = function (O) { return function (first, second) { return O.compare(first, second) === -1; }; };\nexports.lt = lt;\n// TODO: curry in v3\n/**\n * Test whether one value is _strictly greater than_ another\n *\n * @since 2.0.0\n */\nvar gt = function (O) { return function (first, second) { return O.compare(first, second) === 1; }; };\nexports.gt = gt;\n// TODO: curry in v3\n/**\n * Test whether one value is _non-strictly less than_ another\n *\n * @since 2.0.0\n */\nvar leq = function (O) { return function (first, second) { return O.compare(first, second) !== 1; }; };\nexports.leq = leq;\n// TODO: curry in v3\n/**\n * Test whether one value is _non-strictly greater than_ another\n *\n * @since 2.0.0\n */\nvar geq = function (O) { return function (first, second) { return O.compare(first, second) !== -1; }; };\nexports.geq = geq;\n// TODO: curry in v3\n/**\n * Take the minimum of two values. If they are considered equal, the first argument is chosen\n *\n * @since 2.0.0\n */\nvar min = function (O) { return function (first, second) {\n return first === second || O.compare(first, second) < 1 ? first : second;\n}; };\nexports.min = min;\n// TODO: curry in v3\n/**\n * Take the maximum of two values. If they are considered equal, the first argument is chosen\n *\n * @since 2.0.0\n */\nvar max = function (O) { return function (first, second) {\n return first === second || O.compare(first, second) > -1 ? first : second;\n}; };\nexports.max = max;\n/**\n * Clamp a value between a minimum and a maximum\n *\n * @since 2.0.0\n */\nvar clamp = function (O) {\n var minO = exports.min(O);\n var maxO = exports.max(O);\n return function (low, hi) { return function (a) { return maxO(minO(a, hi), low); }; };\n};\nexports.clamp = clamp;\n/**\n * Test whether a value is between a minimum and a maximum (inclusive)\n *\n * @since 2.0.0\n */\nvar between = function (O) {\n var ltO = exports.lt(O);\n var gtO = exports.gt(O);\n return function (low, hi) { return function (a) { return (ltO(a, low) || gtO(a, hi) ? false : true); }; };\n};\nexports.between = between;\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n// tslint:disable: deprecation\n/**\n * Use [`tuple`](#tuple) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getTupleOrd = exports.tuple;\n/**\n * Use [`reverse`](#reverse) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getDualOrd = exports.reverse;\n/**\n * Use [`Contravariant`](#contravariant) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.ord = exports.Contravariant;\n// default compare for primitive types\nfunction compare(first, second) {\n return first < second ? -1 : first > second ? 1 : 0;\n}\nvar strictOrd = {\n equals: Eq_1.eqStrict.equals,\n compare: compare\n};\n/**\n * Use [`Ord`](./boolean.ts.html#ord) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.ordBoolean = strictOrd;\n/**\n * Use [`Ord`](./string.ts.html#ord) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.ordString = strictOrd;\n/**\n * Use [`Ord`](./number.ts.html#ord) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.ordNumber = strictOrd;\n/**\n * Use [`Ord`](./Date.ts.html#ord) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.ordDate = \n/*#__PURE__*/\nfunction_1.pipe(exports.ordNumber, \n/*#__PURE__*/\nexports.contramap(function (date) { return date.valueOf(); }));\n", "\"use strict\";\n/**\n * A `Magma` is a pair `(A, concat)` in which `A` is a non-empty set and `concat` is a binary operation on `A`\n *\n * See [Semigroup](https://gcanti.github.io/fp-ts/modules/Semigroup.ts.html) for some instances.\n *\n * @since 2.0.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatAll = exports.endo = exports.filterSecond = exports.filterFirst = exports.reverse = void 0;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * The dual of a `Magma`, obtained by swapping the arguments of `concat`.\n *\n * @example\n * import { reverse, concatAll } from 'fp-ts/Magma'\n * import * as N from 'fp-ts/number'\n *\n * const subAll = concatAll(reverse(N.MagmaSub))(0)\n *\n * assert.deepStrictEqual(subAll([1, 2, 3]), 2)\n *\n * @category combinators\n * @since 2.11.0\n */\nvar reverse = function (M) { return ({\n concat: function (first, second) { return M.concat(second, first); }\n}); };\nexports.reverse = reverse;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar filterFirst = function (predicate) { return function (M) { return ({\n concat: function (first, second) { return (predicate(first) ? M.concat(first, second) : second); }\n}); }; };\nexports.filterFirst = filterFirst;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar filterSecond = function (predicate) { return function (M) { return ({\n concat: function (first, second) { return (predicate(second) ? M.concat(first, second) : first); }\n}); }; };\nexports.filterSecond = filterSecond;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar endo = function (f) { return function (M) { return ({\n concat: function (first, second) { return M.concat(f(first), f(second)); }\n}); }; };\nexports.endo = endo;\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * Given a sequence of `as`, concat them and return the total.\n *\n * If `as` is empty, return the provided `startWith` value.\n *\n * @example\n * import { concatAll } from 'fp-ts/Magma'\n * import * as N from 'fp-ts/number'\n *\n * const subAll = concatAll(N.MagmaSub)(0)\n *\n * assert.deepStrictEqual(subAll([1, 2, 3]), -6)\n *\n * @since 2.11.0\n */\nvar concatAll = function (M) { return function (startWith) { return function (as) {\n return as.reduce(function (a, acc) { return M.concat(a, acc); }, startWith);\n}; }; };\nexports.concatAll = concatAll;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semigroupProduct = exports.semigroupSum = exports.semigroupString = exports.getFunctionSemigroup = exports.semigroupAny = exports.semigroupAll = exports.fold = exports.getIntercalateSemigroup = exports.getMeetSemigroup = exports.getJoinSemigroup = exports.getDualSemigroup = exports.getStructSemigroup = exports.getTupleSemigroup = exports.getFirstSemigroup = exports.getLastSemigroup = exports.getObjectSemigroup = exports.semigroupVoid = exports.concatAll = exports.last = exports.first = exports.intercalate = exports.tuple = exports.struct = exports.reverse = exports.constant = exports.max = exports.min = void 0;\n/**\n * If a type `A` can form a `Semigroup` it has an **associative** binary operation.\n *\n * ```ts\n * interface Semigroup {\n * readonly concat: (x: A, y: A) => A\n * }\n * ```\n *\n * Associativity means the following equality must hold for any choice of `x`, `y`, and `z`.\n *\n * ```ts\n * concat(x, concat(y, z)) = concat(concat(x, y), z)\n * ```\n *\n * A common example of a semigroup is the type `string` with the operation `+`.\n *\n * ```ts\n * import { Semigroup } from 'fp-ts/Semigroup'\n *\n * const semigroupString: Semigroup = {\n * concat: (x, y) => x + y\n * }\n *\n * const x = 'x'\n * const y = 'y'\n * const z = 'z'\n *\n * semigroupString.concat(x, y) // 'xy'\n *\n * semigroupString.concat(x, semigroupString.concat(y, z)) // 'xyz'\n *\n * semigroupString.concat(semigroupString.concat(x, y), z) // 'xyz'\n * ```\n *\n * *Adapted from https://typelevel.org/cats*\n *\n * @since 2.0.0\n */\nvar function_1 = require(\"./function\");\nvar _ = __importStar(require(\"./internal\"));\nvar M = __importStar(require(\"./Magma\"));\nvar Or = __importStar(require(\"./Ord\"));\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Get a semigroup where `concat` will return the minimum, based on the provided order.\n *\n * @example\n * import * as N from 'fp-ts/number'\n * import * as S from 'fp-ts/Semigroup'\n *\n * const S1 = S.min(N.Ord)\n *\n * assert.deepStrictEqual(S1.concat(1, 2), 1)\n *\n * @category constructors\n * @since 2.10.0\n */\nvar min = function (O) { return ({\n concat: Or.min(O)\n}); };\nexports.min = min;\n/**\n * Get a semigroup where `concat` will return the maximum, based on the provided order.\n *\n * @example\n * import * as N from 'fp-ts/number'\n * import * as S from 'fp-ts/Semigroup'\n *\n * const S1 = S.max(N.Ord)\n *\n * assert.deepStrictEqual(S1.concat(1, 2), 2)\n *\n * @category constructors\n * @since 2.10.0\n */\nvar max = function (O) { return ({\n concat: Or.max(O)\n}); };\nexports.max = max;\n/**\n * @category constructors\n * @since 2.10.0\n */\nvar constant = function (a) { return ({\n concat: function () { return a; }\n}); };\nexports.constant = constant;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * The dual of a `Semigroup`, obtained by swapping the arguments of `concat`.\n *\n * @example\n * import { reverse } from 'fp-ts/Semigroup'\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(reverse(S.Semigroup).concat('a', 'b'), 'ba')\n *\n * @category combinators\n * @since 2.10.0\n */\nexports.reverse = M.reverse;\n/**\n * Given a struct of semigroups returns a semigroup for the struct.\n *\n * @example\n * import { struct } from 'fp-ts/Semigroup'\n * import * as N from 'fp-ts/number'\n *\n * interface Point {\n * readonly x: number\n * readonly y: number\n * }\n *\n * const S = struct({\n * x: N.SemigroupSum,\n * y: N.SemigroupSum\n * })\n *\n * assert.deepStrictEqual(S.concat({ x: 1, y: 2 }, { x: 3, y: 4 }), { x: 4, y: 6 })\n *\n * @category combinators\n * @since 2.10.0\n */\nvar struct = function (semigroups) { return ({\n concat: function (first, second) {\n var r = {};\n for (var k in semigroups) {\n if (_.has.call(semigroups, k)) {\n r[k] = semigroups[k].concat(first[k], second[k]);\n }\n }\n return r;\n }\n}); };\nexports.struct = struct;\n/**\n * Given a tuple of semigroups returns a semigroup for the tuple.\n *\n * @example\n * import { tuple } from 'fp-ts/Semigroup'\n * import * as B from 'fp-ts/boolean'\n * import * as N from 'fp-ts/number'\n * import * as S from 'fp-ts/string'\n *\n * const S1 = tuple(S.Semigroup, N.SemigroupSum)\n * assert.deepStrictEqual(S1.concat(['a', 1], ['b', 2]), ['ab', 3])\n *\n * const S2 = tuple(S.Semigroup, N.SemigroupSum, B.SemigroupAll)\n * assert.deepStrictEqual(S2.concat(['a', 1, true], ['b', 2, false]), ['ab', 3, false])\n *\n * @category combinators\n * @since 2.10.0\n */\nvar tuple = function () {\n var semigroups = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n semigroups[_i] = arguments[_i];\n }\n return ({\n concat: function (first, second) { return semigroups.map(function (s, i) { return s.concat(first[i], second[i]); }); }\n });\n};\nexports.tuple = tuple;\n/**\n * Between each pair of elements insert `middle`.\n *\n * @example\n * import { intercalate } from 'fp-ts/Semigroup'\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * const S1 = pipe(S.Semigroup, intercalate(' + '))\n *\n * assert.strictEqual(S1.concat('a', 'b'), 'a + b')\n *\n * @category combinators\n * @since 2.10.0\n */\nvar intercalate = function (middle) { return function (S) { return ({\n concat: function (x, y) { return S.concat(x, S.concat(middle, y)); }\n}); }; };\nexports.intercalate = intercalate;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * Always return the first argument.\n *\n * @example\n * import * as S from 'fp-ts/Semigroup'\n *\n * assert.deepStrictEqual(S.first().concat(1, 2), 1)\n *\n * @category instances\n * @since 2.10.0\n */\nvar first = function () { return ({ concat: function_1.identity }); };\nexports.first = first;\n/**\n * Always return the last argument.\n *\n * @example\n * import * as S from 'fp-ts/Semigroup'\n *\n * assert.deepStrictEqual(S.last().concat(1, 2), 2)\n *\n * @category instances\n * @since 2.10.0\n */\nvar last = function () { return ({ concat: function (_, y) { return y; } }); };\nexports.last = last;\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * Given a sequence of `as`, concat them and return the total.\n *\n * If `as` is empty, return the provided `startWith` value.\n *\n * @example\n * import { concatAll } from 'fp-ts/Semigroup'\n * import * as N from 'fp-ts/number'\n *\n * const sum = concatAll(N.SemigroupSum)(0)\n *\n * assert.deepStrictEqual(sum([1, 2, 3]), 6)\n * assert.deepStrictEqual(sum([]), 0)\n *\n * @since 2.10.0\n */\nexports.concatAll = M.concatAll;\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use `void` module instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.semigroupVoid = exports.constant(undefined);\n/**\n * Use [`getAssignSemigroup`](./struct.ts.html#getAssignSemigroup) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nvar getObjectSemigroup = function () { return ({\n concat: function (first, second) { return Object.assign({}, first, second); }\n}); };\nexports.getObjectSemigroup = getObjectSemigroup;\n/**\n * Use [`last`](#last) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.getLastSemigroup = exports.last;\n/**\n * Use [`first`](#first) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.getFirstSemigroup = exports.first;\n/**\n * Use [`tuple`](#tuple) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getTupleSemigroup = exports.tuple;\n/**\n * Use [`struct`](#struct) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getStructSemigroup = exports.struct;\n/**\n * Use [`reverse`](#reverse) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getDualSemigroup = exports.reverse;\n/**\n * Use [`max`](#max) instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nexports.getJoinSemigroup = exports.max;\n/**\n * Use [`min`](#min) instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nexports.getMeetSemigroup = exports.min;\n/**\n * Use [`intercalate`](#intercalate) instead.\n *\n * @category combinators\n * @since 2.5.0\n * @deprecated\n */\nexports.getIntercalateSemigroup = exports.intercalate;\nfunction fold(S) {\n var concatAllS = exports.concatAll(S);\n return function (startWith, as) { return (as === undefined ? concatAllS(startWith) : concatAllS(startWith)(as)); };\n}\nexports.fold = fold;\n/**\n * Use [`SemigroupAll`](./boolean.ts.html#SemigroupAll) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.semigroupAll = {\n concat: function (x, y) { return x && y; }\n};\n/**\n * Use [`SemigroupAny`](./boolean.ts.html#SemigroupAny) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.semigroupAny = {\n concat: function (x, y) { return x || y; }\n};\n/**\n * Use [`getSemigroup`](./function.ts.html#getSemigroup) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.getFunctionSemigroup = function_1.getSemigroup;\n/**\n * Use [`Semigroup`](./string.ts.html#Semigroup) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.semigroupString = {\n concat: function (x, y) { return x + y; }\n};\n/**\n * Use [`SemigroupSum`](./number.ts.html#SemigroupSum) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.semigroupSum = {\n concat: function (x, y) { return x + y; }\n};\n/**\n * Use [`SemigroupProduct`](./number.ts.html#SemigroupProduct) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.semigroupProduct = {\n concat: function (x, y) { return x * y; }\n};\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reduceRight = exports.foldMap = exports.reduce = exports.mapWithIndex = exports.map = exports.flatten = exports.duplicate = exports.extend = exports.chain = exports.ap = exports.alt = exports.altW = exports.of = exports.chunksOf = exports.splitAt = exports.chop = exports.chainWithIndex = exports.intersperse = exports.prependAll = exports.unzip = exports.zip = exports.zipWith = exports.modifyAt = exports.updateAt = exports.sort = exports.groupBy = exports.group = exports.reverse = exports.concat = exports.concatW = exports.fromArray = exports.unappend = exports.unprepend = exports.range = exports.replicate = exports.makeBy = exports.fromReadonlyArray = exports.rotate = exports.union = exports.sortBy = exports.uniq = exports.unsafeUpdateAt = exports.unsafeInsertAt = exports.append = exports.appendW = exports.prepend = exports.prependW = exports.isOutOfBound = exports.isNonEmpty = exports.empty = void 0;\nexports.uncons = exports.filterWithIndex = exports.filter = exports.groupSort = exports.updateLast = exports.modifyLast = exports.updateHead = exports.modifyHead = exports.matchRight = exports.matchLeft = exports.concatAll = exports.max = exports.min = exports.init = exports.last = exports.tail = exports.head = exports.apS = exports.bind = exports.bindTo = exports.Do = exports.Comonad = exports.Alt = exports.TraversableWithIndex = exports.Traversable = exports.FoldableWithIndex = exports.Foldable = exports.Monad = exports.chainFirst = exports.Chain = exports.Applicative = exports.apSecond = exports.apFirst = exports.Apply = exports.FunctorWithIndex = exports.Pointed = exports.flap = exports.Functor = exports.getUnionSemigroup = exports.getEq = exports.getSemigroup = exports.getShow = exports.URI = exports.extract = exports.traverseWithIndex = exports.sequence = exports.traverse = exports.reduceRightWithIndex = exports.foldMapWithIndex = exports.reduceWithIndex = void 0;\nexports.readonlyNonEmptyArray = exports.fold = exports.prependToAll = exports.insertAt = exports.snoc = exports.cons = exports.unsnoc = void 0;\nvar Apply_1 = require(\"./Apply\");\nvar Chain_1 = require(\"./Chain\");\nvar Eq_1 = require(\"./Eq\");\nvar function_1 = require(\"./function\");\nvar Functor_1 = require(\"./Functor\");\nvar _ = __importStar(require(\"./internal\"));\nvar Ord_1 = require(\"./Ord\");\nvar Se = __importStar(require(\"./Semigroup\"));\n// -------------------------------------------------------------------------------------\n// internal\n// -------------------------------------------------------------------------------------\n/**\n * @internal\n */\nexports.empty = _.emptyReadonlyArray;\n/**\n * @internal\n */\nexports.isNonEmpty = _.isNonEmpty;\n/**\n * @internal\n */\nvar isOutOfBound = function (i, as) { return i < 0 || i >= as.length; };\nexports.isOutOfBound = isOutOfBound;\n/**\n * @internal\n */\nvar prependW = function (head) { return function (tail) { return __spreadArray([head], tail); }; };\nexports.prependW = prependW;\n/**\n * @internal\n */\nexports.prepend = exports.prependW;\n/**\n * @internal\n */\nvar appendW = function (end) { return function (init) { return __spreadArray(__spreadArray([], init), [end]); }; };\nexports.appendW = appendW;\n/**\n * @internal\n */\nexports.append = exports.appendW;\n/**\n * @internal\n */\nvar unsafeInsertAt = function (i, a, as) {\n if (exports.isNonEmpty(as)) {\n var xs = _.fromReadonlyNonEmptyArray(as);\n xs.splice(i, 0, a);\n return xs;\n }\n return [a];\n};\nexports.unsafeInsertAt = unsafeInsertAt;\n/**\n * @internal\n */\nvar unsafeUpdateAt = function (i, a, as) {\n if (as[i] === a) {\n return as;\n }\n else {\n var xs = _.fromReadonlyNonEmptyArray(as);\n xs[i] = a;\n return xs;\n }\n};\nexports.unsafeUpdateAt = unsafeUpdateAt;\n/**\n * Remove duplicates from a `ReadonlyNonEmptyArray`, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/ReadonlyNonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @category combinators\n * @since 2.11.0\n */\nvar uniq = function (E) { return function (as) {\n if (as.length === 1) {\n return as;\n }\n var out = [exports.head(as)];\n var rest = exports.tail(as);\n var _loop_1 = function (a) {\n if (out.every(function (o) { return !E.equals(o, a); })) {\n out.push(a);\n }\n };\n for (var _i = 0, rest_1 = rest; _i < rest_1.length; _i++) {\n var a = rest_1[_i];\n _loop_1(a);\n }\n return out;\n}; };\nexports.uniq = uniq;\n/**\n * Sort the elements of a `ReadonlyNonEmptyArray` in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import * as RNEA from 'fp-ts/ReadonlyNonEmptyArray'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n * name: string\n * age: number\n * }\n *\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n *\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = RNEA.sortBy([byName, byAge])\n *\n * const persons: RNEA.ReadonlyNonEmptyArray = [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 },\n * { name: 'b', age: 2 }\n * ]\n *\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 2 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 }\n * ])\n *\n * @category combinators\n * @since 2.11.0\n */\nvar sortBy = function (ords) {\n if (exports.isNonEmpty(ords)) {\n var M = Ord_1.getMonoid();\n return exports.sort(ords.reduce(M.concat, M.empty));\n }\n return function_1.identity;\n};\nexports.sortBy = sortBy;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar union = function (E) {\n var uniqE = exports.uniq(E);\n return function (second) { return function (first) { return uniqE(function_1.pipe(first, concat(second))); }; };\n};\nexports.union = union;\n/**\n * Rotate a `ReadonlyNonEmptyArray` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n * assert.deepStrictEqual(rotate(-2)([1, 2, 3, 4, 5]), [3, 4, 5, 1, 2])\n *\n * @category combinators\n * @since 2.11.0\n */\nvar rotate = function (n) { return function (as) {\n var len = as.length;\n var m = Math.round(n) % len;\n if (exports.isOutOfBound(Math.abs(m), as) || m === 0) {\n return as;\n }\n if (m < 0) {\n var _a = exports.splitAt(-m)(as), f = _a[0], s = _a[1];\n return function_1.pipe(s, concat(f));\n }\n else {\n return exports.rotate(m - len)(as);\n }\n}; };\nexports.rotate = rotate;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Return a `ReadonlyNonEmptyArray` from a `ReadonlyArray` returning `none` if the input is empty.\n *\n * @category constructors\n * @since 2.5.0\n */\nvar fromReadonlyArray = function (as) {\n return exports.isNonEmpty(as) ? _.some(as) : _.none;\n};\nexports.fromReadonlyArray = fromReadonlyArray;\n/**\n * Return a `ReadonlyNonEmptyArray` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { makeBy } from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(pipe(5, makeBy(double)), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.11.0\n */\nvar makeBy = function (f) { return function (n) {\n var j = Math.max(0, Math.floor(n));\n var out = [f(0)];\n for (var i = 1; i < j; i++) {\n out.push(f(i));\n }\n return out;\n}; };\nexports.makeBy = makeBy;\n/**\n * Create a `ReadonlyNonEmptyArray` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { replicate } from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(3, replicate('a')), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.11.0\n */\nvar replicate = function (a) { return exports.makeBy(function () { return a; }); };\nexports.replicate = replicate;\n/**\n * Create a `ReadonlyNonEmptyArray` containing a range of integers, including both endpoints.\n *\n * @example\n * import { range } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(range(1, 5), [1, 2, 3, 4, 5])\n *\n * @category constructors\n * @since 2.11.0\n */\nvar range = function (start, end) {\n return start <= end ? exports.makeBy(function (i) { return start + i; })(end - start + 1) : [start];\n};\nexports.range = range;\n// -------------------------------------------------------------------------------------\n// destructors\n// -------------------------------------------------------------------------------------\n/**\n * Return the tuple of the `head` and the `tail`.\n *\n * @example\n * import { unprepend } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(unprepend([1, 2, 3, 4]), [1, [2, 3, 4]])\n *\n * @category destructors\n * @since 2.9.0\n */\nvar unprepend = function (as) { return [exports.head(as), exports.tail(as)]; };\nexports.unprepend = unprepend;\n/**\n * Return the tuple of the `init` and the `last`.\n *\n * @example\n * import { unappend } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(unappend([1, 2, 3, 4]), [[1, 2, 3], 4])\n *\n * @category destructors\n * @since 2.9.0\n */\nvar unappend = function (as) { return [exports.init(as), exports.last(as)]; };\nexports.unappend = unappend;\n// -------------------------------------------------------------------------------------\n// interop\n// -------------------------------------------------------------------------------------\n/**\n * @category interop\n * @since 2.5.0\n */\nvar fromArray = function (as) { return exports.fromReadonlyArray(as.slice()); };\nexports.fromArray = fromArray;\nfunction concatW(second) {\n return function (first) { return first.concat(second); };\n}\nexports.concatW = concatW;\nfunction concat(x, y) {\n return y ? x.concat(y) : function (y) { return y.concat(x); };\n}\nexports.concat = concat;\n/**\n * @category combinators\n * @since 2.5.0\n */\nvar reverse = function (as) {\n return as.length === 1 ? as : __spreadArray([exports.last(as)], as.slice(0, -1).reverse());\n};\nexports.reverse = reverse;\nfunction group(E) {\n return function (as) {\n var len = as.length;\n if (len === 0) {\n return exports.empty;\n }\n var out = [];\n var head = as[0];\n var nea = [head];\n for (var i = 1; i < len; i++) {\n var a = as[i];\n if (E.equals(a, head)) {\n nea.push(a);\n }\n else {\n out.push(nea);\n head = a;\n nea = [head];\n }\n }\n out.push(nea);\n return out;\n };\n}\nexports.group = group;\n/**\n * Splits an array into sub-non-empty-arrays stored in an object, based on the result of calling a `string`-returning\n * function on each element, and grouping the results according to values returned\n *\n * @example\n * import { groupBy } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(groupBy((s: string) => String(s.length))(['a', 'b', 'ab']), {\n * '1': ['a', 'b'],\n * '2': ['ab']\n * })\n *\n * @category combinators\n * @since 2.5.0\n */\nvar groupBy = function (f) { return function (as) {\n var out = {};\n for (var _i = 0, as_1 = as; _i < as_1.length; _i++) {\n var a = as_1[_i];\n var k = f(a);\n if (out.hasOwnProperty(k)) {\n out[k].push(a);\n }\n else {\n out[k] = [a];\n }\n }\n return out;\n}; };\nexports.groupBy = groupBy;\n/**\n * @category combinators\n * @since 2.5.0\n */\nvar sort = function (O) { return function (as) {\n return as.length === 1 ? as : as.slice().sort(O.compare);\n}; };\nexports.sort = sort;\n/**\n * @category combinators\n * @since 2.5.0\n */\nvar updateAt = function (i, a) {\n return exports.modifyAt(i, function () { return a; });\n};\nexports.updateAt = updateAt;\n/**\n * @category combinators\n * @since 2.5.0\n */\nvar modifyAt = function (i, f) { return function (as) { return (exports.isOutOfBound(i, as) ? _.none : _.some(exports.unsafeUpdateAt(i, f(as[i]), as))); }; };\nexports.modifyAt = modifyAt;\n/**\n * @category combinators\n * @since 2.5.1\n */\nvar zipWith = function (as, bs, f) {\n var cs = [f(as[0], bs[0])];\n var len = Math.min(as.length, bs.length);\n for (var i = 1; i < len; i++) {\n cs[i] = f(as[i], bs[i]);\n }\n return cs;\n};\nexports.zipWith = zipWith;\nfunction zip(as, bs) {\n if (bs === undefined) {\n return function (bs) { return zip(bs, as); };\n }\n return exports.zipWith(as, bs, function (a, b) { return [a, b]; });\n}\nexports.zip = zip;\n/**\n * @category combinators\n * @since 2.5.1\n */\nvar unzip = function (abs) {\n var fa = [abs[0][0]];\n var fb = [abs[0][1]];\n for (var i = 1; i < abs.length; i++) {\n fa[i] = abs[i][0];\n fb[i] = abs[i][1];\n }\n return [fa, fb];\n};\nexports.unzip = unzip;\n/**\n * Prepend an element to every member of a `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { prependAll } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.10.0\n */\nvar prependAll = function (middle) { return function (as) {\n var out = [middle, as[0]];\n for (var i = 1; i < as.length; i++) {\n out.push(middle, as[i]);\n }\n return out;\n}; };\nexports.prependAll = prependAll;\n/**\n * Places an element in between members of a `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { intersperse } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\nvar intersperse = function (middle) { return function (as) {\n var rest = exports.tail(as);\n return exports.isNonEmpty(rest) ? function_1.pipe(rest, exports.prependAll(middle), exports.prepend(exports.head(as))) : as;\n}; };\nexports.intersperse = intersperse;\n/**\n * @category combinators\n * @since 2.10.0\n */\nvar chainWithIndex = function (f) { return function (as) {\n var out = _.fromReadonlyNonEmptyArray(f(0, exports.head(as)));\n for (var i = 1; i < as.length; i++) {\n out.push.apply(out, f(i, as[i]));\n }\n return out;\n}; };\nexports.chainWithIndex = chainWithIndex;\n/**\n * A useful recursion pattern for processing a `ReadonlyNonEmptyArray` to produce a new `ReadonlyNonEmptyArray`, often used for \"chopping\" up the input\n * `ReadonlyNonEmptyArray`. Typically `chop` is called with some function that will consume an initial prefix of the `ReadonlyNonEmptyArray` and produce a\n * value and the tail of the `ReadonlyNonEmptyArray`.\n *\n * @category combinators\n * @since 2.10.0\n */\nvar chop = function (f) { return function (as) {\n var _a = f(as), b = _a[0], rest = _a[1];\n var out = [b];\n var next = rest;\n while (exports.isNonEmpty(next)) {\n var _b = f(next), b_1 = _b[0], rest_2 = _b[1];\n out.push(b_1);\n next = rest_2;\n }\n return out;\n}; };\nexports.chop = chop;\n/**\n * Splits a `ReadonlyNonEmptyArray` into two pieces, the first piece has max `n` elements.\n *\n * @category combinators\n * @since 2.10.0\n */\nvar splitAt = function (n) { return function (as) {\n var m = Math.max(1, n);\n return m >= as.length ? [as, exports.empty] : [function_1.pipe(as.slice(1, m), exports.prepend(exports.head(as))), as.slice(m)];\n}; };\nexports.splitAt = splitAt;\n/**\n * Splits a `ReadonlyNonEmptyArray` into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of\n * the `ReadonlyNonEmptyArray`.\n *\n * @category combinators\n * @since 2.10.0\n */\nvar chunksOf = function (n) { return exports.chop(exports.splitAt(n)); };\nexports.chunksOf = chunksOf;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\nvar _map = function (fa, f) { return function_1.pipe(fa, exports.map(f)); };\n/* istanbul ignore next */\nvar _mapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.mapWithIndex(f)); };\nvar _ap = function (fab, fa) { return function_1.pipe(fab, exports.ap(fa)); };\nvar _chain = function (ma, f) { return function_1.pipe(ma, exports.chain(f)); };\n/* istanbul ignore next */\nvar _extend = function (wa, f) { return function_1.pipe(wa, exports.extend(f)); };\n/* istanbul ignore next */\nvar _reduce = function (fa, b, f) { return function_1.pipe(fa, exports.reduce(b, f)); };\n/* istanbul ignore next */\nvar _foldMap = function (M) {\n var foldMapM = exports.foldMap(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRight = function (fa, b, f) { return function_1.pipe(fa, exports.reduceRight(b, f)); };\n/* istanbul ignore next */\nvar _traverse = function (F) {\n var traverseF = exports.traverse(F);\n return function (ta, f) { return function_1.pipe(ta, traverseF(f)); };\n};\n/* istanbul ignore next */\nvar _alt = function (fa, that) { return function_1.pipe(fa, exports.alt(that)); };\n/* istanbul ignore next */\nvar _reduceWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _foldMapWithIndex = function (M) {\n var foldMapWithIndexM = exports.foldMapWithIndex(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapWithIndexM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRightWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceRightWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _traverseWithIndex = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (ta, f) { return function_1.pipe(ta, traverseWithIndexF(f)); };\n};\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * @category Pointed\n * @since 2.5.0\n */\nexports.of = _.singleton;\n/**\n * Less strict version of [`alt`](#alt).\n *\n * @category Alt\n * @since 2.9.0\n */\nvar altW = function (that) { return function (as) { return function_1.pipe(as, concatW(that())); }; };\nexports.altW = altW;\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * @category Alt\n * @since 2.6.2\n */\nexports.alt = exports.altW;\n/**\n * @category Apply\n * @since 2.5.0\n */\nvar ap = function (as) { return exports.chain(function (f) { return function_1.pipe(as, exports.map(f)); }); };\nexports.ap = ap;\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation.\n *\n * @category Monad\n * @since 2.5.0\n */\nvar chain = function (f) { return exports.chainWithIndex(function (_, a) { return f(a); }); };\nexports.chain = chain;\n/**\n * @category Extend\n * @since 2.5.0\n */\nvar extend = function (f) { return function (as) {\n var next = exports.tail(as);\n var out = [f(as)];\n while (exports.isNonEmpty(next)) {\n out.push(f(next));\n next = exports.tail(next);\n }\n return out;\n}; };\nexports.extend = extend;\n/**\n * Derivable from `Extend`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.duplicate = \n/*#__PURE__*/\nexports.extend(function_1.identity);\n/**\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.flatten = \n/*#__PURE__*/\nexports.chain(function_1.identity);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category Functor\n * @since 2.5.0\n */\nvar map = function (f) {\n return exports.mapWithIndex(function (_, a) { return f(a); });\n};\nexports.map = map;\n/**\n * @category FunctorWithIndex\n * @since 2.5.0\n */\nvar mapWithIndex = function (f) { return function (as) {\n var out = [f(0, exports.head(as))];\n for (var i = 1; i < as.length; i++) {\n out.push(f(i, as[i]));\n }\n return out;\n}; };\nexports.mapWithIndex = mapWithIndex;\n/**\n * @category Foldable\n * @since 2.5.0\n */\nvar reduce = function (b, f) {\n return exports.reduceWithIndex(b, function (_, b, a) { return f(b, a); });\n};\nexports.reduce = reduce;\n/**\n * **Note**. The constraint is relaxed: a `Semigroup` instead of a `Monoid`.\n *\n * @category Foldable\n * @since 2.5.0\n */\nvar foldMap = function (S) { return function (f) { return function (as) {\n return as.slice(1).reduce(function (s, a) { return S.concat(s, f(a)); }, f(as[0]));\n}; }; };\nexports.foldMap = foldMap;\n/**\n * @category Foldable\n * @since 2.5.0\n */\nvar reduceRight = function (b, f) {\n return exports.reduceRightWithIndex(b, function (_, b, a) { return f(b, a); });\n};\nexports.reduceRight = reduceRight;\n/**\n * @category FoldableWithIndex\n * @since 2.5.0\n */\nvar reduceWithIndex = function (b, f) { return function (as) {\n return as.reduce(function (b, a, i) { return f(i, b, a); }, b);\n}; };\nexports.reduceWithIndex = reduceWithIndex;\n/**\n * **Note**. The constraint is relaxed: a `Semigroup` instead of a `Monoid`.\n *\n * @category FoldableWithIndex\n * @since 2.5.0\n */\nvar foldMapWithIndex = function (S) { return function (f) { return function (as) { return as.slice(1).reduce(function (s, a, i) { return S.concat(s, f(i + 1, a)); }, f(0, as[0])); }; }; };\nexports.foldMapWithIndex = foldMapWithIndex;\n/**\n * @category FoldableWithIndex\n * @since 2.5.0\n */\nvar reduceRightWithIndex = function (b, f) { return function (as) { return as.reduceRight(function (b, a, i) { return f(i, a, b); }, b); }; };\nexports.reduceRightWithIndex = reduceRightWithIndex;\n/**\n * @category Traversable\n * @since 2.6.3\n */\nvar traverse = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (f) { return traverseWithIndexF(function (_, a) { return f(a); }); };\n};\nexports.traverse = traverse;\n/**\n * @category Traversable\n * @since 2.6.3\n */\nvar sequence = function (F) { return exports.traverseWithIndex(F)(function_1.SK); };\nexports.sequence = sequence;\n/**\n * @category TraversableWithIndex\n * @since 2.6.3\n */\nvar traverseWithIndex = function (F) { return function (f) { return function (as) {\n var out = F.map(f(0, exports.head(as)), exports.of);\n for (var i = 1; i < as.length; i++) {\n out = F.ap(F.map(out, function (bs) { return function (b) { return function_1.pipe(bs, exports.append(b)); }; }), f(i, as[i]));\n }\n return out;\n}; }; };\nexports.traverseWithIndex = traverseWithIndex;\n/**\n * @category Comonad\n * @since 2.6.3\n */\nexports.extract = _.head;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.5.0\n */\nexports.URI = 'ReadonlyNonEmptyArray';\n/**\n * @category instances\n * @since 2.5.0\n */\nvar getShow = function (S) { return ({\n show: function (as) { return \"[\" + as.map(S.show).join(', ') + \"]\"; }\n}); };\nexports.getShow = getShow;\n/**\n * Builds a `Semigroup` instance for `ReadonlyNonEmptyArray`\n *\n * @category instances\n * @since 2.5.0\n */\nvar getSemigroup = function () { return ({\n concat: concat\n}); };\nexports.getSemigroup = getSemigroup;\n/**\n * @example\n * import { getEq } from 'fp-ts/ReadonlyNonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * const E = getEq(N.Eq)\n * assert.strictEqual(E.equals([1, 2], [1, 2]), true)\n * assert.strictEqual(E.equals([1, 2], [1, 3]), false)\n *\n * @category instances\n * @since 2.5.0\n */\nvar getEq = function (E) {\n return Eq_1.fromEquals(function (xs, ys) { return xs.length === ys.length && xs.every(function (x, i) { return E.equals(x, ys[i]); }); });\n};\nexports.getEq = getEq;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar getUnionSemigroup = function (E) {\n var unionE = exports.union(E);\n return {\n concat: function (first, second) { return unionE(second)(first); }\n };\n};\nexports.getUnionSemigroup = getUnionSemigroup;\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Functor = {\n URI: exports.URI,\n map: _map\n};\n/**\n * Derivable from `Functor`.\n *\n * @category combinators\n * @since 2.10.0\n */\nexports.flap = \n/*#__PURE__*/\nFunctor_1.flap(exports.Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Pointed = {\n URI: exports.URI,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FunctorWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Apply = {\n URI: exports.URI,\n map: _map,\n ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apFirst = \n/*#__PURE__*/\nApply_1.apFirst(exports.Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apSecond = \n/*#__PURE__*/\nApply_1.apSecond(exports.Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Applicative = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Chain = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.chainFirst = \n/*#__PURE__*/\nChain_1.chainFirst(exports.Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Monad = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of,\n chain: _chain\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Foldable = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FoldableWithIndex = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Traversable = {\n URI: exports.URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.TraversableWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Alt = {\n URI: exports.URI,\n map: _map,\n alt: _alt\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Comonad = {\n URI: exports.URI,\n map: _map,\n extend: _extend,\n extract: exports.extract\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.9.0\n */\nexports.Do = \n/*#__PURE__*/\nexports.of(_.emptyRecord);\n/**\n * @since 2.8.0\n */\nexports.bindTo = \n/*#__PURE__*/\nFunctor_1.bindTo(exports.Functor);\n/**\n * @since 2.8.0\n */\nexports.bind = \n/*#__PURE__*/\nChain_1.bind(exports.Chain);\n// -------------------------------------------------------------------------------------\n// pipeable sequence S\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.8.0\n */\nexports.apS = \n/*#__PURE__*/\nApply_1.apS(exports.Apply);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.5.0\n */\nexports.head = exports.extract;\n/**\n * @since 2.5.0\n */\nexports.tail = _.tail;\n/**\n * @since 2.5.0\n */\nvar last = function (as) { return as[as.length - 1]; };\nexports.last = last;\n/**\n * Get all but the last element of a non empty array, creating a new array.\n *\n * @example\n * import { init } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), [1, 2])\n * assert.deepStrictEqual(init([1]), [])\n *\n * @since 2.5.0\n */\nvar init = function (as) { return as.slice(0, -1); };\nexports.init = init;\n/**\n * @since 2.5.0\n */\nvar min = function (O) {\n var S = Se.min(O);\n return function (as) { return as.reduce(S.concat); };\n};\nexports.min = min;\n/**\n * @since 2.5.0\n */\nvar max = function (O) {\n var S = Se.max(O);\n return function (as) { return as.reduce(S.concat); };\n};\nexports.max = max;\n/**\n * @since 2.10.0\n */\nvar concatAll = function (S) { return function (as) { return as.reduce(S.concat); }; };\nexports.concatAll = concatAll;\n/**\n * Break a `ReadonlyArray` into its first element and remaining elements.\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchLeft = function (f) { return function (as) {\n return f(exports.head(as), exports.tail(as));\n}; };\nexports.matchLeft = matchLeft;\n/**\n * Break a `ReadonlyArray` into its initial elements and the last element.\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchRight = function (f) { return function (as) {\n return f(exports.init(as), exports.last(as));\n}; };\nexports.matchRight = matchRight;\n/**\n * Apply a function to the head, creating a new `ReadonlyNonEmptyArray`.\n *\n * @since 2.11.0\n */\nvar modifyHead = function (f) { return function (as) { return __spreadArray([\n f(exports.head(as))\n], exports.tail(as)); }; };\nexports.modifyHead = modifyHead;\n/**\n * Change the head, creating a new `ReadonlyNonEmptyArray`.\n *\n * @category combinators\n * @since 2.11.0\n */\nvar updateHead = function (a) { return exports.modifyHead(function () { return a; }); };\nexports.updateHead = updateHead;\n/**\n * Apply a function to the last element, creating a new `ReadonlyNonEmptyArray`.\n *\n * @since 2.11.0\n */\nvar modifyLast = function (f) { return function (as) {\n return function_1.pipe(exports.init(as), exports.append(f(exports.last(as))));\n}; };\nexports.modifyLast = modifyLast;\n/**\n * Change the last element, creating a new `ReadonlyNonEmptyArray`.\n *\n * @category combinators\n * @since 2.11.0\n */\nvar updateLast = function (a) { return exports.modifyLast(function () { return a; }); };\nexports.updateLast = updateLast;\nfunction groupSort(O) {\n var sortO = exports.sort(O);\n var groupO = group(O);\n return function (as) { return (exports.isNonEmpty(as) ? groupO(sortO(as)) : exports.empty); };\n}\nexports.groupSort = groupSort;\nfunction filter(predicate) {\n return exports.filterWithIndex(function (_, a) { return predicate(a); });\n}\nexports.filter = filter;\n/**\n * Use [`filterWithIndex`](./ReadonlyArray.ts.html#filterwithindex) instead.\n *\n * @category combinators\n * @since 2.5.0\n * @deprecated\n */\nvar filterWithIndex = function (predicate) { return function (as) { return exports.fromReadonlyArray(as.filter(function (a, i) { return predicate(i, a); })); }; };\nexports.filterWithIndex = filterWithIndex;\n/**\n * Use [`unprepend`](#unprepend) instead.\n *\n * @category destructors\n * @since 2.10.0\n * @deprecated\n */\nexports.uncons = exports.unprepend;\n/**\n * Use [`unappend`](#unappend) instead.\n *\n * @category destructors\n * @since 2.10.0\n * @deprecated\n */\nexports.unsnoc = exports.unappend;\nfunction cons(head, tail) {\n return tail === undefined ? exports.prepend(head) : function_1.pipe(tail, exports.prepend(head));\n}\nexports.cons = cons;\n/**\n * Use [`append`](./ReadonlyArray.ts.html#append) instead.\n *\n * @category constructors\n * @since 2.5.0\n * @deprecated\n */\nvar snoc = function (init, end) { return function_1.pipe(init, concat([end])); };\nexports.snoc = snoc;\n/**\n * Use [`insertAt`](./ReadonlyArray.ts.html#insertat) instead.\n *\n * @category combinators\n * @since 2.5.0\n * @deprecated\n */\nvar insertAt = function (i, a) { return function (as) {\n return i < 0 || i > as.length ? _.none : _.some(exports.unsafeInsertAt(i, a, as));\n}; };\nexports.insertAt = insertAt;\n/**\n * Use [`prependAll`](#prependall) instead.\n *\n * @category combinators\n * @since 2.9.0\n * @deprecated\n */\nexports.prependToAll = exports.prependAll;\n/**\n * Use [`concatAll`](#concatall) instead.\n *\n * @since 2.5.0\n * @deprecated\n */\nexports.fold = exports.concatAll;\n/**\n * Use small, specific instances instead.\n *\n * @category instances\n * @since 2.5.0\n * @deprecated\n */\nexports.readonlyNonEmptyArray = {\n URI: exports.URI,\n of: exports.of,\n map: _map,\n mapWithIndex: _mapWithIndex,\n ap: _ap,\n chain: _chain,\n extend: _extend,\n extract: exports.extract,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex,\n alt: _alt\n};\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapWithIndex = exports.map = exports.flatten = exports.duplicate = exports.extend = exports.chain = exports.ap = exports.alt = exports.altW = exports.chunksOf = exports.splitAt = exports.chop = exports.chainWithIndex = exports.foldMap = exports.foldMapWithIndex = exports.intersperse = exports.prependAll = exports.unzip = exports.zip = exports.zipWith = exports.of = exports.copy = exports.modifyAt = exports.updateAt = exports.insertAt = exports.sort = exports.groupBy = exports.group = exports.reverse = exports.concat = exports.concatW = exports.unappend = exports.unprepend = exports.range = exports.replicate = exports.makeBy = exports.fromArray = exports.fromReadonlyNonEmptyArray = exports.rotate = exports.union = exports.sortBy = exports.uniq = exports.unsafeUpdateAt = exports.unsafeInsertAt = exports.append = exports.appendW = exports.prepend = exports.prependW = exports.isOutOfBound = exports.isNonEmpty = void 0;\nexports.filterWithIndex = exports.filter = exports.groupSort = exports.updateLast = exports.modifyLast = exports.updateHead = exports.modifyHead = exports.matchRight = exports.matchLeft = exports.concatAll = exports.max = exports.min = exports.init = exports.last = exports.tail = exports.head = exports.apS = exports.bind = exports.bindTo = exports.Do = exports.Comonad = exports.Alt = exports.TraversableWithIndex = exports.Traversable = exports.FoldableWithIndex = exports.Foldable = exports.Monad = exports.chainFirst = exports.Chain = exports.Applicative = exports.apSecond = exports.apFirst = exports.Apply = exports.FunctorWithIndex = exports.Pointed = exports.flap = exports.Functor = exports.getUnionSemigroup = exports.getEq = exports.getSemigroup = exports.getShow = exports.URI = exports.extract = exports.traverseWithIndex = exports.sequence = exports.traverse = exports.reduceRightWithIndex = exports.reduceRight = exports.reduceWithIndex = exports.reduce = void 0;\nexports.nonEmptyArray = exports.fold = exports.prependToAll = exports.snoc = exports.cons = exports.unsnoc = exports.uncons = void 0;\nvar Apply_1 = require(\"./Apply\");\nvar Chain_1 = require(\"./Chain\");\nvar function_1 = require(\"./function\");\nvar Functor_1 = require(\"./Functor\");\nvar _ = __importStar(require(\"./internal\"));\nvar Ord_1 = require(\"./Ord\");\nvar RNEA = __importStar(require(\"./ReadonlyNonEmptyArray\"));\n// -------------------------------------------------------------------------------------\n// internal\n// -------------------------------------------------------------------------------------\n/**\n * @internal\n */\nvar isNonEmpty = function (as) { return as.length > 0; };\nexports.isNonEmpty = isNonEmpty;\n/**\n * @internal\n */\nvar isOutOfBound = function (i, as) { return i < 0 || i >= as.length; };\nexports.isOutOfBound = isOutOfBound;\n/**\n * @internal\n */\nvar prependW = function (head) { return function (tail) { return __spreadArray([head], tail); }; };\nexports.prependW = prependW;\n/**\n * @internal\n */\nexports.prepend = exports.prependW;\n/**\n * @internal\n */\nvar appendW = function (end) { return function (init) { return __spreadArray(__spreadArray([], init), [end]); }; };\nexports.appendW = appendW;\n/**\n * @internal\n */\nexports.append = exports.appendW;\n/**\n * @internal\n */\nvar unsafeInsertAt = function (i, a, as) {\n if (exports.isNonEmpty(as)) {\n var xs = exports.fromReadonlyNonEmptyArray(as);\n xs.splice(i, 0, a);\n return xs;\n }\n return [a];\n};\nexports.unsafeInsertAt = unsafeInsertAt;\n/**\n * @internal\n */\nvar unsafeUpdateAt = function (i, a, as) {\n var xs = exports.fromReadonlyNonEmptyArray(as);\n xs[i] = a;\n return xs;\n};\nexports.unsafeUpdateAt = unsafeUpdateAt;\n/**\n * Remove duplicates from a `NonEmptyArray`, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/NonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @category combinators\n * @since 2.11.0\n */\nvar uniq = function (E) { return function (as) {\n if (as.length === 1) {\n return exports.copy(as);\n }\n var out = [exports.head(as)];\n var rest = exports.tail(as);\n var _loop_1 = function (a) {\n if (out.every(function (o) { return !E.equals(o, a); })) {\n out.push(a);\n }\n };\n for (var _i = 0, rest_1 = rest; _i < rest_1.length; _i++) {\n var a = rest_1[_i];\n _loop_1(a);\n }\n return out;\n}; };\nexports.uniq = uniq;\n/**\n * Sort the elements of a `NonEmptyArray` in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import * as NEA from 'fp-ts/NonEmptyArray'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n * name: string\n * age: number\n * }\n *\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n *\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = NEA.sortBy([byName, byAge])\n *\n * const persons: NEA.NonEmptyArray = [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 },\n * { name: 'b', age: 2 }\n * ]\n *\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 2 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 }\n * ])\n *\n * @category combinators\n * @since 2.11.0\n */\nvar sortBy = function (ords) {\n if (exports.isNonEmpty(ords)) {\n var M = Ord_1.getMonoid();\n return exports.sort(ords.reduce(M.concat, M.empty));\n }\n return exports.copy;\n};\nexports.sortBy = sortBy;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar union = function (E) {\n var uniqE = exports.uniq(E);\n return function (second) { return function (first) { return uniqE(function_1.pipe(first, concat(second))); }; };\n};\nexports.union = union;\n/**\n * Rotate a `NonEmptyArray` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n * assert.deepStrictEqual(rotate(-2)([1, 2, 3, 4, 5]), [3, 4, 5, 1, 2])\n *\n * @category combinators\n * @since 2.11.0\n */\nvar rotate = function (n) { return function (as) {\n var len = as.length;\n var m = Math.round(n) % len;\n if (exports.isOutOfBound(Math.abs(m), as) || m === 0) {\n return exports.copy(as);\n }\n if (m < 0) {\n var _a = exports.splitAt(-m)(as), f = _a[0], s = _a[1];\n return function_1.pipe(s, concat(f));\n }\n else {\n return exports.rotate(m - len)(as);\n }\n}; };\nexports.rotate = rotate;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.10.0\n */\nexports.fromReadonlyNonEmptyArray = _.fromReadonlyNonEmptyArray;\n/**\n * Builds a `NonEmptyArray` from an `Array` returning `none` if `as` is an empty array\n *\n * @category constructors\n * @since 2.0.0\n */\nvar fromArray = function (as) { return (exports.isNonEmpty(as) ? _.some(as) : _.none); };\nexports.fromArray = fromArray;\n/**\n * Return a `NonEmptyArray` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { makeBy } from 'fp-ts/NonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(pipe(5, makeBy(double)), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.11.0\n */\nvar makeBy = function (f) { return function (n) {\n var j = Math.max(0, Math.floor(n));\n var out = [f(0)];\n for (var i = 1; i < j; i++) {\n out.push(f(i));\n }\n return out;\n}; };\nexports.makeBy = makeBy;\n/**\n * Create a `NonEmptyArray` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { replicate } from 'fp-ts/NonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(3, replicate('a')), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.11.0\n */\nvar replicate = function (a) { return exports.makeBy(function () { return a; }); };\nexports.replicate = replicate;\n/**\n * Create a `NonEmptyArray` containing a range of integers, including both endpoints.\n *\n * @example\n * import { range } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(range(1, 5), [1, 2, 3, 4, 5])\n *\n * @category constructors\n * @since 2.11.0\n */\nvar range = function (start, end) {\n return start <= end ? exports.makeBy(function (i) { return start + i; })(end - start + 1) : [start];\n};\nexports.range = range;\n// -------------------------------------------------------------------------------------\n// destructors\n// -------------------------------------------------------------------------------------\n/**\n * Return the tuple of the `head` and the `tail`.\n *\n * @example\n * import { unprepend } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(unprepend([1, 2, 3]), [1, [2, 3]])\n *\n * @category destructors\n * @since 2.9.0\n */\nvar unprepend = function (as) { return [exports.head(as), exports.tail(as)]; };\nexports.unprepend = unprepend;\n/**\n * Return the tuple of the `init` and the `last`.\n *\n * @example\n * import { unappend } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(unappend([1, 2, 3, 4]), [[1, 2, 3], 4])\n *\n * @category destructors\n * @since 2.9.0\n */\nvar unappend = function (as) { return [exports.init(as), exports.last(as)]; };\nexports.unappend = unappend;\nfunction concatW(second) {\n return function (first) { return first.concat(second); };\n}\nexports.concatW = concatW;\nfunction concat(x, y) {\n return y ? x.concat(y) : function (y) { return y.concat(x); };\n}\nexports.concat = concat;\n/**\n * @category combinators\n * @since 2.0.0\n */\nvar reverse = function (as) { return __spreadArray([exports.last(as)], as.slice(0, -1).reverse()); };\nexports.reverse = reverse;\nfunction group(E) {\n return function (as) {\n var len = as.length;\n if (len === 0) {\n return [];\n }\n var out = [];\n var head = as[0];\n var nea = [head];\n for (var i = 1; i < len; i++) {\n var a = as[i];\n if (E.equals(a, head)) {\n nea.push(a);\n }\n else {\n out.push(nea);\n head = a;\n nea = [head];\n }\n }\n out.push(nea);\n return out;\n };\n}\nexports.group = group;\n/**\n * Splits an array into sub-non-empty-arrays stored in an object, based on the result of calling a `string`-returning\n * function on each element, and grouping the results according to values returned\n *\n * @example\n * import { groupBy } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(groupBy((s: string) => String(s.length))(['a', 'b', 'ab']), {\n * '1': ['a', 'b'],\n * '2': ['ab']\n * })\n *\n * @category combinators\n * @since 2.0.0\n */\nvar groupBy = function (f) { return function (as) {\n var out = {};\n for (var _i = 0, as_1 = as; _i < as_1.length; _i++) {\n var a = as_1[_i];\n var k = f(a);\n if (out.hasOwnProperty(k)) {\n out[k].push(a);\n }\n else {\n out[k] = [a];\n }\n }\n return out;\n}; };\nexports.groupBy = groupBy;\n/**\n * @category combinators\n * @since 2.0.0\n */\nvar sort = function (O) { return function (as) {\n return as.slice().sort(O.compare);\n}; };\nexports.sort = sort;\n/**\n * @category combinators\n * @since 2.0.0\n */\nvar insertAt = function (i, a) { return function (as) {\n return i < 0 || i > as.length ? _.none : _.some(exports.unsafeInsertAt(i, a, as));\n}; };\nexports.insertAt = insertAt;\n/**\n * @category combinators\n * @since 2.0.0\n */\nvar updateAt = function (i, a) {\n return exports.modifyAt(i, function () { return a; });\n};\nexports.updateAt = updateAt;\n/**\n * @category combinators\n * @since 2.0.0\n */\nvar modifyAt = function (i, f) { return function (as) {\n return exports.isOutOfBound(i, as) ? _.none : _.some(exports.unsafeUpdateAt(i, f(as[i]), as));\n}; };\nexports.modifyAt = modifyAt;\n/**\n * @category combinators\n * @since 2.0.0\n */\nexports.copy = exports.fromReadonlyNonEmptyArray;\n/**\n * @category Pointed\n * @since 2.0.0\n */\nvar of = function (a) { return [a]; };\nexports.of = of;\n/**\n * @category combinators\n * @since 2.5.1\n */\nvar zipWith = function (as, bs, f) {\n var cs = [f(as[0], bs[0])];\n var len = Math.min(as.length, bs.length);\n for (var i = 1; i < len; i++) {\n cs[i] = f(as[i], bs[i]);\n }\n return cs;\n};\nexports.zipWith = zipWith;\nfunction zip(as, bs) {\n if (bs === undefined) {\n return function (bs) { return zip(bs, as); };\n }\n return exports.zipWith(as, bs, function (a, b) { return [a, b]; });\n}\nexports.zip = zip;\n/**\n * @category combinators\n * @since 2.5.1\n */\nvar unzip = function (abs) {\n var fa = [abs[0][0]];\n var fb = [abs[0][1]];\n for (var i = 1; i < abs.length; i++) {\n fa[i] = abs[i][0];\n fb[i] = abs[i][1];\n }\n return [fa, fb];\n};\nexports.unzip = unzip;\n/**\n * Prepend an element to every member of an array\n *\n * @example\n * import { prependAll } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.10.0\n */\nvar prependAll = function (middle) { return function (as) {\n var out = [middle, as[0]];\n for (var i = 1; i < as.length; i++) {\n out.push(middle, as[i]);\n }\n return out;\n}; };\nexports.prependAll = prependAll;\n/**\n * Places an element in between members of an array\n *\n * @example\n * import { intersperse } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\nvar intersperse = function (middle) { return function (as) {\n var rest = exports.tail(as);\n return exports.isNonEmpty(rest) ? function_1.pipe(rest, exports.prependAll(middle), exports.prepend(exports.head(as))) : exports.copy(as);\n}; };\nexports.intersperse = intersperse;\n/**\n * @category combinators\n * @since 2.0.0\n */\nexports.foldMapWithIndex = RNEA.foldMapWithIndex;\n/**\n * @category combinators\n * @since 2.0.0\n */\nexports.foldMap = RNEA.foldMap;\n/**\n * @category combinators\n * @since 2.10.0\n */\nvar chainWithIndex = function (f) { return function (as) {\n var out = exports.fromReadonlyNonEmptyArray(f(0, exports.head(as)));\n for (var i = 1; i < as.length; i++) {\n out.push.apply(out, f(i, as[i]));\n }\n return out;\n}; };\nexports.chainWithIndex = chainWithIndex;\n/**\n * @category combinators\n * @since 2.10.0\n */\nvar chop = function (f) { return function (as) {\n var _a = f(as), b = _a[0], rest = _a[1];\n var out = [b];\n var next = rest;\n while (exports.isNonEmpty(next)) {\n var _b = f(next), b_1 = _b[0], rest_2 = _b[1];\n out.push(b_1);\n next = rest_2;\n }\n return out;\n}; };\nexports.chop = chop;\n/**\n * Splits a `NonEmptyArray` into two pieces, the first piece has max `n` elements.\n *\n * @category combinators\n * @since 2.10.0\n */\nvar splitAt = function (n) { return function (as) {\n var m = Math.max(1, n);\n return m >= as.length ? [exports.copy(as), []] : [function_1.pipe(as.slice(1, m), exports.prepend(exports.head(as))), as.slice(m)];\n}; };\nexports.splitAt = splitAt;\n/**\n * @category combinators\n * @since 2.10.0\n */\nvar chunksOf = function (n) { return exports.chop(exports.splitAt(n)); };\nexports.chunksOf = chunksOf;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\n/* istanbul ignore next */\nvar _map = function (fa, f) { return function_1.pipe(fa, exports.map(f)); };\n/* istanbul ignore next */\nvar _mapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.mapWithIndex(f)); };\n/* istanbul ignore next */\nvar _ap = function (fab, fa) { return function_1.pipe(fab, exports.ap(fa)); };\n/* istanbul ignore next */\nvar _chain = function (ma, f) { return function_1.pipe(ma, exports.chain(f)); };\n/* istanbul ignore next */\nvar _extend = function (wa, f) { return function_1.pipe(wa, exports.extend(f)); };\n/* istanbul ignore next */\nvar _reduce = function (fa, b, f) { return function_1.pipe(fa, exports.reduce(b, f)); };\n/* istanbul ignore next */\nvar _foldMap = function (M) {\n var foldMapM = exports.foldMap(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRight = function (fa, b, f) { return function_1.pipe(fa, exports.reduceRight(b, f)); };\n/* istanbul ignore next */\nvar _traverse = function (F) {\n var traverseF = exports.traverse(F);\n return function (ta, f) { return function_1.pipe(ta, traverseF(f)); };\n};\n/* istanbul ignore next */\nvar _alt = function (fa, that) { return function_1.pipe(fa, exports.alt(that)); };\n/* istanbul ignore next */\nvar _reduceWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _foldMapWithIndex = function (M) {\n var foldMapWithIndexM = exports.foldMapWithIndex(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapWithIndexM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRightWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceRightWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _traverseWithIndex = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (ta, f) { return function_1.pipe(ta, traverseWithIndexF(f)); };\n};\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * Less strict version of [`alt`](#alt).\n *\n * @category Alt\n * @since 2.9.0\n */\nvar altW = function (that) { return function (as) {\n return function_1.pipe(as, concatW(that()));\n}; };\nexports.altW = altW;\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * @category Alt\n * @since 2.6.2\n */\nexports.alt = exports.altW;\n/**\n * Apply a function to an argument under a type constructor.\n *\n * @category Apply\n * @since 2.0.0\n */\nvar ap = function (as) {\n return exports.chain(function (f) { return function_1.pipe(as, exports.map(f)); });\n};\nexports.ap = ap;\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation.\n *\n * @category Monad\n * @since 2.0.0\n */\nvar chain = function (f) {\n return exports.chainWithIndex(function (_, a) { return f(a); });\n};\nexports.chain = chain;\n/**\n * @category Extend\n * @since 2.0.0\n */\nvar extend = function (f) { return function (as) {\n var next = exports.tail(as);\n var out = [f(as)];\n while (exports.isNonEmpty(next)) {\n out.push(f(next));\n next = exports.tail(next);\n }\n return out;\n}; };\nexports.extend = extend;\n/**\n * Derivable from `Extend`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.duplicate = \n/*#__PURE__*/\nexports.extend(function_1.identity);\n/**\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.flatten = \n/*#__PURE__*/\nexports.chain(function_1.identity);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category Functor\n * @since 2.0.0\n */\nvar map = function (f) { return exports.mapWithIndex(function (_, a) { return f(a); }); };\nexports.map = map;\n/**\n * @category FunctorWithIndex\n * @since 2.0.0\n */\nvar mapWithIndex = function (f) { return function (as) {\n var out = [f(0, exports.head(as))];\n for (var i = 1; i < as.length; i++) {\n out.push(f(i, as[i]));\n }\n return out;\n}; };\nexports.mapWithIndex = mapWithIndex;\n/**\n * @category Foldable\n * @since 2.0.0\n */\nexports.reduce = RNEA.reduce;\n/**\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexports.reduceWithIndex = RNEA.reduceWithIndex;\n/**\n * @category Foldable\n * @since 2.0.0\n */\nexports.reduceRight = RNEA.reduceRight;\n/**\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexports.reduceRightWithIndex = RNEA.reduceRightWithIndex;\n/**\n * @since 2.6.3\n */\nvar traverse = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (f) { return traverseWithIndexF(function (_, a) { return f(a); }); };\n};\nexports.traverse = traverse;\n/**\n * @since 2.6.3\n */\nvar sequence = function (F) { return exports.traverseWithIndex(F)(function (_, a) { return a; }); };\nexports.sequence = sequence;\n/**\n * @since 2.6.3\n */\nvar traverseWithIndex = function (F) { return function (f) { return function (as) {\n var out = F.map(f(0, exports.head(as)), exports.of);\n for (var i = 1; i < as.length; i++) {\n out = F.ap(F.map(out, function (bs) { return function (b) { return function_1.pipe(bs, exports.append(b)); }; }), f(i, as[i]));\n }\n return out;\n}; }; };\nexports.traverseWithIndex = traverseWithIndex;\n/**\n * @since 2.7.0\n */\nexports.extract = RNEA.head;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.0.0\n */\nexports.URI = 'NonEmptyArray';\n/**\n * @category instances\n * @since 2.0.0\n */\nexports.getShow = RNEA.getShow;\n/**\n * Builds a `Semigroup` instance for `NonEmptyArray`\n *\n * @category instances\n * @since 2.0.0\n */\nvar getSemigroup = function () { return ({\n concat: concat\n}); };\nexports.getSemigroup = getSemigroup;\n/**\n * @example\n * import { getEq } from 'fp-ts/NonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * const E = getEq(N.Eq)\n * assert.strictEqual(E.equals([1, 2], [1, 2]), true)\n * assert.strictEqual(E.equals([1, 2], [1, 3]), false)\n *\n * @category instances\n * @since 2.0.0\n */\nexports.getEq = RNEA.getEq;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar getUnionSemigroup = function (E) {\n var unionE = exports.union(E);\n return {\n concat: function (first, second) { return unionE(second)(first); }\n };\n};\nexports.getUnionSemigroup = getUnionSemigroup;\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Functor = {\n URI: exports.URI,\n map: _map\n};\n/**\n * Derivable from `Functor`.\n *\n * @category combinators\n * @since 2.10.0\n */\nexports.flap = \n/*#__PURE__*/\nFunctor_1.flap(exports.Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Pointed = {\n URI: exports.URI,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FunctorWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Apply = {\n URI: exports.URI,\n map: _map,\n ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apFirst = \n/*#__PURE__*/\nApply_1.apFirst(exports.Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apSecond = \n/*#__PURE__*/\nApply_1.apSecond(exports.Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Applicative = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Chain = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.chainFirst = \n/*#__PURE__*/\nChain_1.chainFirst(exports.Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Monad = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of,\n chain: _chain\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Foldable = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FoldableWithIndex = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Traversable = {\n URI: exports.URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.TraversableWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Alt = {\n URI: exports.URI,\n map: _map,\n alt: _alt\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Comonad = {\n URI: exports.URI,\n map: _map,\n extend: _extend,\n extract: exports.extract\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.9.0\n */\nexports.Do = \n/*#__PURE__*/\nexports.of(_.emptyRecord);\n/**\n * @since 2.8.0\n */\nexports.bindTo = \n/*#__PURE__*/\nFunctor_1.bindTo(exports.Functor);\n/**\n * @since 2.8.0\n */\nexports.bind = \n/*#__PURE__*/\nChain_1.bind(exports.Chain);\n// -------------------------------------------------------------------------------------\n// pipeable sequence S\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.8.0\n */\nexports.apS = \n/*#__PURE__*/\nApply_1.apS(exports.Apply);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.0.0\n */\nexports.head = RNEA.head;\n/**\n * @since 2.0.0\n */\nvar tail = function (as) { return as.slice(1); };\nexports.tail = tail;\n/**\n * @since 2.0.0\n */\nexports.last = RNEA.last;\n/**\n * Get all but the last element of a non empty array, creating a new array.\n *\n * @example\n * import { init } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), [1, 2])\n * assert.deepStrictEqual(init([1]), [])\n *\n * @since 2.2.0\n */\nvar init = function (as) { return as.slice(0, -1); };\nexports.init = init;\n/**\n * @since 2.0.0\n */\nexports.min = RNEA.min;\n/**\n * @since 2.0.0\n */\nexports.max = RNEA.max;\n/**\n * @since 2.10.0\n */\nvar concatAll = function (S) { return function (as) { return as.reduce(S.concat); }; };\nexports.concatAll = concatAll;\n/**\n * Break an `Array` into its first element and remaining elements.\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchLeft = function (f) { return function (as) { return f(exports.head(as), exports.tail(as)); }; };\nexports.matchLeft = matchLeft;\n/**\n * Break an `Array` into its initial elements and the last element.\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchRight = function (f) { return function (as) {\n return f(exports.init(as), exports.last(as));\n}; };\nexports.matchRight = matchRight;\n/**\n * Apply a function to the head, creating a new `NonEmptyArray`.\n *\n * @since 2.11.0\n */\nvar modifyHead = function (f) { return function (as) { return __spreadArray([\n f(exports.head(as))\n], exports.tail(as)); }; };\nexports.modifyHead = modifyHead;\n/**\n * Change the head, creating a new `NonEmptyArray`.\n *\n * @category combinators\n * @since 2.11.0\n */\nvar updateHead = function (a) { return exports.modifyHead(function () { return a; }); };\nexports.updateHead = updateHead;\n/**\n * Apply a function to the last element, creating a new `NonEmptyArray`.\n *\n * @since 2.11.0\n */\nvar modifyLast = function (f) { return function (as) {\n return function_1.pipe(exports.init(as), exports.append(f(exports.last(as))));\n}; };\nexports.modifyLast = modifyLast;\n/**\n * Change the last element, creating a new `NonEmptyArray`.\n *\n * @category combinators\n * @since 2.11.0\n */\nvar updateLast = function (a) { return exports.modifyLast(function () { return a; }); };\nexports.updateLast = updateLast;\nfunction groupSort(O) {\n var sortO = exports.sort(O);\n var groupO = group(O);\n return function (as) { return (exports.isNonEmpty(as) ? groupO(sortO(as)) : []); };\n}\nexports.groupSort = groupSort;\nfunction filter(predicate) {\n return exports.filterWithIndex(function (_, a) { return predicate(a); });\n}\nexports.filter = filter;\n/**\n * Use [`filterWithIndex`](./Array.ts.html#filterwithindex) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nvar filterWithIndex = function (predicate) { return function (as) { return exports.fromArray(as.filter(function (a, i) { return predicate(i, a); })); }; };\nexports.filterWithIndex = filterWithIndex;\n/**\n * Use [`unprepend`](#unprepend) instead.\n *\n * @category destructors\n * @since 2.9.0\n * @deprecated\n */\nexports.uncons = exports.unprepend;\n/**\n * Use [`unappend`](#unappend) instead.\n *\n * @category destructors\n * @since 2.9.0\n * @deprecated\n */\nexports.unsnoc = exports.unappend;\nfunction cons(head, tail) {\n return tail === undefined ? exports.prepend(head) : function_1.pipe(tail, exports.prepend(head));\n}\nexports.cons = cons;\n/**\n * Use [`append`](./Array.ts.html#append) instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nvar snoc = function (init, end) { return function_1.pipe(init, exports.append(end)); };\nexports.snoc = snoc;\n/**\n * Use [`prependAll`](#prependall) instead.\n *\n * @category combinators\n * @since 2.9.0\n * @deprecated\n */\nexports.prependToAll = exports.prependAll;\n/**\n * Use [`concatAll`](#concatall) instead.\n *\n * @since 2.5.0\n * @deprecated\n */\nexports.fold = RNEA.concatAll;\n/**\n * Use small, specific instances instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.nonEmptyArray = {\n URI: exports.URI,\n of: exports.of,\n map: _map,\n mapWithIndex: _mapWithIndex,\n ap: _ap,\n chain: _chain,\n extend: _extend,\n extract: exports.extract,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex,\n alt: _alt\n};\n", "\"use strict\";\n/**\n * ```ts\n * interface Separated {\n * readonly left: E\n * readonly right: A\n * }\n * ```\n *\n * Represents a result of separating a whole into two parts.\n *\n * @since 2.10.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.right = exports.left = exports.flap = exports.Functor = exports.Bifunctor = exports.URI = exports.bimap = exports.mapLeft = exports.map = exports.separated = void 0;\nvar function_1 = require(\"./function\");\nvar Functor_1 = require(\"./Functor\");\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.10.0\n */\nvar separated = function (left, right) { return ({ left: left, right: right }); };\nexports.separated = separated;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\nvar _map = function (fa, f) { return function_1.pipe(fa, exports.map(f)); };\nvar _mapLeft = function (fa, f) { return function_1.pipe(fa, exports.mapLeft(f)); };\nvar _bimap = function (fa, g, f) { return function_1.pipe(fa, exports.bimap(g, f)); };\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category Functor\n * @since 2.10.0\n */\nvar map = function (f) { return function (fa) {\n return exports.separated(exports.left(fa), f(exports.right(fa)));\n}; };\nexports.map = map;\n/**\n * Map a function over the first type argument of a bifunctor.\n *\n * @category Bifunctor\n * @since 2.10.0\n */\nvar mapLeft = function (f) { return function (fa) {\n return exports.separated(f(exports.left(fa)), exports.right(fa));\n}; };\nexports.mapLeft = mapLeft;\n/**\n * Map a pair of functions over the two type arguments of the bifunctor.\n *\n * @category Bifunctor\n * @since 2.10.0\n */\nvar bimap = function (f, g) { return function (fa) {\n return exports.separated(f(exports.left(fa)), g(exports.right(fa)));\n}; };\nexports.bimap = bimap;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.URI = 'Separated';\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Bifunctor = {\n URI: exports.URI,\n mapLeft: _mapLeft,\n bimap: _bimap\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Functor = {\n URI: exports.URI,\n map: _map\n};\n/**\n * Derivable from `Functor`.\n *\n * @category combinators\n * @since 2.10.0\n */\nexports.flap = \n/*#__PURE__*/\nFunctor_1.flap(exports.Functor);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.10.0\n */\nvar left = function (s) { return s.left; };\nexports.left = left;\n/**\n * @since 2.10.0\n */\nvar right = function (s) { return s.right; };\nexports.right = right;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filterE = exports.witherDefault = exports.wiltDefault = void 0;\nvar _ = __importStar(require(\"./internal\"));\nfunction wiltDefault(T, C) {\n return function (F) {\n var traverseF = T.traverse(F);\n return function (wa, f) { return F.map(traverseF(wa, f), C.separate); };\n };\n}\nexports.wiltDefault = wiltDefault;\nfunction witherDefault(T, C) {\n return function (F) {\n var traverseF = T.traverse(F);\n return function (wa, f) { return F.map(traverseF(wa, f), C.compact); };\n };\n}\nexports.witherDefault = witherDefault;\nfunction filterE(W) {\n return function (F) {\n var witherF = W.wither(F);\n return function (predicate) { return function (ga) { return witherF(ga, function (a) { return F.map(predicate(a), function (b) { return (b ? _.some(a) : _.none); }); }); }; };\n };\n}\nexports.filterE = filterE;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.guard = void 0;\nfunction guard(F, P) {\n return function (b) { return (b ? P.of(undefined) : F.zero()); };\n}\nexports.guard = guard;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sort = exports.lefts = exports.rights = exports.reverse = exports.modifyAt = exports.deleteAt = exports.updateAt = exports.insertAt = exports.findLastIndex = exports.findLastMap = exports.findLast = exports.findFirstMap = exports.findFirst = exports.findIndex = exports.dropLeftWhile = exports.dropRight = exports.dropLeft = exports.spanLeft = exports.takeLeftWhile = exports.takeRight = exports.takeLeft = exports.init = exports.tail = exports.last = exports.head = exports.lookup = exports.isOutOfBound = exports.size = exports.scanRight = exports.scanLeft = exports.chainWithIndex = exports.foldRight = exports.matchRight = exports.matchRightW = exports.foldLeft = exports.matchLeft = exports.matchLeftW = exports.match = exports.matchW = exports.fromEither = exports.fromOption = exports.fromPredicate = exports.replicate = exports.makeBy = exports.appendW = exports.append = exports.prependW = exports.prepend = exports.isNonEmpty = exports.isEmpty = void 0;\nexports.sequence = exports.traverse = exports.reduceRightWithIndex = exports.reduceRight = exports.reduceWithIndex = exports.foldMap = exports.reduce = exports.foldMapWithIndex = exports.duplicate = exports.extend = exports.filterWithIndex = exports.partitionMapWithIndex = exports.partitionMap = exports.partitionWithIndex = exports.partition = exports.compact = exports.filterMap = exports.filterMapWithIndex = exports.filter = exports.separate = exports.mapWithIndex = exports.map = exports.flatten = exports.chain = exports.ap = exports.alt = exports.altW = exports.zero = exports.of = exports._chainRecBreadthFirst = exports._chainRecDepthFirst = exports.difference = exports.intersection = exports.union = exports.concat = exports.concatW = exports.comprehension = exports.fromOptionK = exports.chunksOf = exports.splitAt = exports.chop = exports.sortBy = exports.uniq = exports.elem = exports.rotate = exports.intersperse = exports.prependAll = exports.unzip = exports.zip = exports.zipWith = void 0;\nexports.toArray = exports.unsafeDeleteAt = exports.unsafeUpdateAt = exports.unsafeInsertAt = exports.fromEitherK = exports.FromEither = exports.filterE = exports.Witherable = exports.ChainRecBreadthFirst = exports.chainRecBreadthFirst = exports.ChainRecDepthFirst = exports.chainRecDepthFirst = exports.TraversableWithIndex = exports.Traversable = exports.FoldableWithIndex = exports.Foldable = exports.FilterableWithIndex = exports.Filterable = exports.Compactable = exports.Extend = exports.Alternative = exports.guard = exports.Zero = exports.Alt = exports.Unfoldable = exports.chainFirst = exports.Monad = exports.Chain = exports.Applicative = exports.apSecond = exports.apFirst = exports.Apply = exports.FunctorWithIndex = exports.Pointed = exports.flap = exports.Functor = exports.getDifferenceMagma = exports.getIntersectionSemigroup = exports.getUnionMonoid = exports.getUnionSemigroup = exports.getOrd = exports.getEq = exports.getMonoid = exports.getSemigroup = exports.getShow = exports.URI = exports.unfold = exports.wilt = exports.wither = exports.traverseWithIndex = void 0;\nexports.readonlyArray = exports.prependToAll = exports.snoc = exports.cons = exports.range = exports.apS = exports.bind = exports.bindTo = exports.Do = exports.exists = exports.some = exports.every = exports.empty = exports.fromArray = void 0;\nvar Apply_1 = require(\"./Apply\");\nvar Chain_1 = require(\"./Chain\");\nvar Eq_1 = require(\"./Eq\");\nvar FromEither_1 = require(\"./FromEither\");\nvar function_1 = require(\"./function\");\nvar Functor_1 = require(\"./Functor\");\nvar _ = __importStar(require(\"./internal\"));\nvar N = __importStar(require(\"./number\"));\nvar Ord_1 = require(\"./Ord\");\nvar RNEA = __importStar(require(\"./ReadonlyNonEmptyArray\"));\nvar Separated_1 = require(\"./Separated\");\nvar Witherable_1 = require(\"./Witherable\");\nvar Zero_1 = require(\"./Zero\");\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * Test whether a `ReadonlyArray` is empty.\n *\n * @example\n * import { isEmpty } from 'fp-ts/ReadonlyArray'\n *\n * assert.strictEqual(isEmpty([]), true)\n *\n * @category refinements\n * @since 2.5.0\n */\nvar isEmpty = function (as) { return as.length === 0; };\nexports.isEmpty = isEmpty;\n/**\n * Test whether a `ReadonlyArray` is non empty.\n *\n * @category refinements\n * @since 2.5.0\n */\nexports.isNonEmpty = RNEA.isNonEmpty;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Prepend an element to the front of a `ReadonlyArray`, creating a new `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { prepend } from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([2, 3, 4], prepend(1)), [1, 2, 3, 4])\n *\n * @category constructors\n * @since 2.10.0\n */\nexports.prepend = RNEA.prepend;\n/**\n * Less strict version of [`prepend`](#prepend).\n *\n * @category constructors\n * @since 2.11.0\n */\nexports.prependW = RNEA.prependW;\n/**\n * Append an element to the end of a `ReadonlyArray`, creating a new `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { append } from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], append(4)), [1, 2, 3, 4])\n *\n * @category constructors\n * @since 2.10.0\n */\nexports.append = RNEA.append;\n/**\n * Less strict version of [`append`](#append).\n *\n * @category constructors\n * @since 2.11.0\n */\nexports.appendW = RNEA.appendW;\n/**\n * Return a `ReadonlyArray` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { makeBy } from 'fp-ts/ReadonlyArray'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(makeBy(5, double), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.5.0\n */\nvar makeBy = function (n, f) { return (n <= 0 ? exports.empty : RNEA.makeBy(f)(n)); };\nexports.makeBy = makeBy;\n/**\n * Create a `ReadonlyArray` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { replicate } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(replicate(3, 'a'), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.5.0\n */\nvar replicate = function (n, a) { return exports.makeBy(n, function () { return a; }); };\nexports.replicate = replicate;\nfunction fromPredicate(predicate) {\n return function (a) { return (predicate(a) ? [a] : exports.empty); };\n}\nexports.fromPredicate = fromPredicate;\n// -------------------------------------------------------------------------------------\n// natural transformations\n// -------------------------------------------------------------------------------------\n/**\n * @category natural transformations\n * @since 2.11.0\n */\nvar fromOption = function (ma) { return (_.isNone(ma) ? exports.empty : [ma.value]); };\nexports.fromOption = fromOption;\n/**\n * Transforms an `Either` to a `ReadonlyArray`.\n *\n * @category natural transformations\n * @since 2.11.0\n */\nvar fromEither = function (e) { return (_.isLeft(e) ? exports.empty : [e.right]); };\nexports.fromEither = fromEither;\n// -------------------------------------------------------------------------------------\n// destructors\n// -------------------------------------------------------------------------------------\n/**\n * Less strict version of [`match`](#match).\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchW = function (onEmpty, onNonEmpty) { return function (as) { return (exports.isNonEmpty(as) ? onNonEmpty(as) : onEmpty()); }; };\nexports.matchW = matchW;\n/**\n * @category destructors\n * @since 2.11.0\n */\nexports.match = exports.matchW;\n/**\n * Less strict version of [`matchLeft`](#matchleft).\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchLeftW = function (onEmpty, onNonEmpty) { return function (as) { return (exports.isNonEmpty(as) ? onNonEmpty(RNEA.head(as), RNEA.tail(as)) : onEmpty()); }; };\nexports.matchLeftW = matchLeftW;\n/**\n * Break a `ReadonlyArray` into its first element and remaining elements.\n *\n * @example\n * import { matchLeft } from 'fp-ts/ReadonlyArray'\n *\n * const len: (as: ReadonlyArray) => number = matchLeft(() => 0, (_, tail) => 1 + len(tail))\n * assert.strictEqual(len([1, 2, 3]), 3)\n *\n * @category destructors\n * @since 2.10.0\n */\nexports.matchLeft = exports.matchLeftW;\n/**\n * Alias of [`matchLeft`](#matchleft).\n *\n * @category destructors\n * @since 2.5.0\n */\nexports.foldLeft = exports.matchLeft;\n/**\n * Less strict version of [`matchRight`](#matchright).\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchRightW = function (onEmpty, onNonEmpty) { return function (as) { return (exports.isNonEmpty(as) ? onNonEmpty(RNEA.init(as), RNEA.last(as)) : onEmpty()); }; };\nexports.matchRightW = matchRightW;\n/**\n * Break a `ReadonlyArray` into its initial elements and the last element.\n *\n * @category destructors\n * @since 2.10.0\n */\nexports.matchRight = exports.matchRightW;\n/**\n * Alias of [`matchRight`](#matchright).\n *\n * @category destructors\n * @since 2.5.0\n */\nexports.foldRight = exports.matchRight;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @category combinators\n * @since 2.7.0\n */\nvar chainWithIndex = function (f) { return function (as) {\n if (exports.isEmpty(as)) {\n return exports.empty;\n }\n var out = [];\n for (var i = 0; i < as.length; i++) {\n out.push.apply(out, f(i, as[i]));\n }\n return out;\n}; };\nexports.chainWithIndex = chainWithIndex;\n/**\n * Same as `reduce` but it carries over the intermediate steps.\n *\n * @example\n * import { scanLeft } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(scanLeft(10, (b, a: number) => b - a)([1, 2, 3]), [10, 9, 7, 4])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar scanLeft = function (b, f) { return function (as) {\n var len = as.length;\n var out = new Array(len + 1);\n out[0] = b;\n for (var i = 0; i < len; i++) {\n out[i + 1] = f(out[i], as[i]);\n }\n return out;\n}; };\nexports.scanLeft = scanLeft;\n/**\n * Fold an array from the right, keeping all intermediate results instead of only the final result\n *\n * @example\n * import { scanRight } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(scanRight(10, (a: number, b) => b - a)([1, 2, 3]), [4, 5, 7, 10])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar scanRight = function (b, f) { return function (as) {\n var len = as.length;\n var out = new Array(len + 1);\n out[len] = b;\n for (var i = len - 1; i >= 0; i--) {\n out[i] = f(as[i], out[i + 1]);\n }\n return out;\n}; };\nexports.scanRight = scanRight;\n/**\n * Calculate the number of elements in a `ReadonlyArray`.\n *\n * @since 2.10.0\n */\nvar size = function (as) { return as.length; };\nexports.size = size;\n/**\n * Test whether an array contains a particular index\n *\n * @since 2.5.0\n */\nexports.isOutOfBound = RNEA.isOutOfBound;\nfunction lookup(i, as) {\n return as === undefined ? function (as) { return lookup(i, as); } : exports.isOutOfBound(i, as) ? _.none : _.some(as[i]);\n}\nexports.lookup = lookup;\n/**\n * Get the first element in an array, or `None` if the array is empty\n *\n * @example\n * import { head } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(head([1, 2, 3]), some(1))\n * assert.deepStrictEqual(head([]), none)\n *\n * @since 2.5.0\n */\nvar head = function (as) { return (exports.isNonEmpty(as) ? _.some(RNEA.head(as)) : _.none); };\nexports.head = head;\n/**\n * Get the last element in an array, or `None` if the array is empty\n *\n * @example\n * import { last } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(last([1, 2, 3]), some(3))\n * assert.deepStrictEqual(last([]), none)\n *\n * @since 2.5.0\n */\nvar last = function (as) { return (exports.isNonEmpty(as) ? _.some(RNEA.last(as)) : _.none); };\nexports.last = last;\n/**\n * Get all but the first element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { tail } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(tail([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(tail([]), none)\n *\n * @since 2.5.0\n */\nvar tail = function (as) {\n return exports.isNonEmpty(as) ? _.some(RNEA.tail(as)) : _.none;\n};\nexports.tail = tail;\n/**\n * Get all but the last element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { init } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), some([1, 2]))\n * assert.deepStrictEqual(init([]), none)\n *\n * @since 2.5.0\n */\nvar init = function (as) {\n return exports.isNonEmpty(as) ? _.some(RNEA.init(as)) : _.none;\n};\nexports.init = init;\n/**\n * Keep only a max number of elements from the start of an `ReadonlyArray`, creating a new `ReadonlyArray`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const input: ReadonlyArray = [1, 2, 3]\n * assert.deepStrictEqual(pipe(input, RA.takeLeft(2)), [1, 2])\n *\n * // out of bounds\n * assert.strictEqual(pipe(input, RA.takeLeft(4)), input)\n * assert.strictEqual(pipe(input, RA.takeLeft(-1)), input)\n *\n * @category combinators\n * @since 2.5.0\n */\nvar takeLeft = function (n) { return function (as) {\n return exports.isOutOfBound(n, as) ? as : n === 0 ? exports.empty : as.slice(0, n);\n}; };\nexports.takeLeft = takeLeft;\n/**\n * Keep only a max number of elements from the end of an `ReadonlyArray`, creating a new `ReadonlyArray`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const input: ReadonlyArray = [1, 2, 3]\n * assert.deepStrictEqual(pipe(input, RA.takeRight(2)), [2, 3])\n *\n * // out of bounds\n * assert.strictEqual(pipe(input, RA.takeRight(4)), input)\n * assert.strictEqual(pipe(input, RA.takeRight(-1)), input)\n *\n * @category combinators\n * @since 2.5.0\n */\nvar takeRight = function (n) { return function (as) {\n return exports.isOutOfBound(n, as) ? as : n === 0 ? exports.empty : as.slice(-n);\n}; };\nexports.takeRight = takeRight;\nfunction takeLeftWhile(predicate) {\n return function (as) {\n var out = [];\n for (var _i = 0, as_1 = as; _i < as_1.length; _i++) {\n var a = as_1[_i];\n if (!predicate(a)) {\n break;\n }\n out.push(a);\n }\n var len = out.length;\n return len === as.length ? as : len === 0 ? exports.empty : out;\n };\n}\nexports.takeLeftWhile = takeLeftWhile;\nvar spanLeftIndex = function (as, predicate) {\n var l = as.length;\n var i = 0;\n for (; i < l; i++) {\n if (!predicate(as[i])) {\n break;\n }\n }\n return i;\n};\nfunction spanLeft(predicate) {\n return function (as) {\n var _a = exports.splitAt(spanLeftIndex(as, predicate))(as), init = _a[0], rest = _a[1];\n return { init: init, rest: rest };\n };\n}\nexports.spanLeft = spanLeft;\n/**\n * Drop a max number of elements from the start of an `ReadonlyArray`, creating a new `ReadonlyArray`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const input: ReadonlyArray = [1, 2, 3]\n * assert.deepStrictEqual(pipe(input, RA.dropLeft(2)), [3])\n * assert.strictEqual(pipe(input, RA.dropLeft(0)), input)\n * assert.strictEqual(pipe(input, RA.dropLeft(-1)), input)\n *\n * @category combinators\n * @since 2.5.0\n */\nvar dropLeft = function (n) { return function (as) {\n return n <= 0 || exports.isEmpty(as) ? as : n >= as.length ? exports.empty : as.slice(n, as.length);\n}; };\nexports.dropLeft = dropLeft;\n/**\n * Drop a max number of elements from the end of an `ReadonlyArray`, creating a new `ReadonlyArray`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const input: ReadonlyArray = [1, 2, 3]\n * assert.deepStrictEqual(pipe(input, RA.dropRight(2)), [1])\n * assert.strictEqual(pipe(input, RA.dropRight(0)), input)\n * assert.strictEqual(pipe(input, RA.dropRight(-1)), input)\n *\n * @category combinators\n * @since 2.5.0\n */\nvar dropRight = function (n) { return function (as) {\n return n <= 0 || exports.isEmpty(as) ? as : n >= as.length ? exports.empty : as.slice(0, as.length - n);\n}; };\nexports.dropRight = dropRight;\nfunction dropLeftWhile(predicate) {\n return function (as) {\n var i = spanLeftIndex(as, predicate);\n return i === 0 ? as : i === as.length ? exports.empty : as.slice(i);\n };\n}\nexports.dropLeftWhile = dropLeftWhile;\n/**\n * Find the first index for which a predicate holds\n *\n * @example\n * import { findIndex } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([1, 2, 3]), some(1))\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([]), none)\n *\n * @since 2.5.0\n */\nvar findIndex = function (predicate) { return function (as) {\n for (var i = 0; i < as.length; i++) {\n if (predicate(as[i])) {\n return _.some(i);\n }\n }\n return _.none;\n}; };\nexports.findIndex = findIndex;\nfunction findFirst(predicate) {\n return function (as) {\n for (var i = 0; i < as.length; i++) {\n if (predicate(as[i])) {\n return _.some(as[i]);\n }\n }\n return _.none;\n };\n}\nexports.findFirst = findFirst;\n/**\n * Find the first element returned by an option based selector function\n *\n * @example\n * import { findFirstMap } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n * readonly name: string\n * readonly age?: number\n * }\n *\n * const persons: ReadonlyArray = [{ name: 'John' }, { name: 'Mary', age: 45 }, { name: 'Joey', age: 28 }]\n *\n * // returns the name of the first person that has an age\n * assert.deepStrictEqual(findFirstMap((p: Person) => (p.age === undefined ? none : some(p.name)))(persons), some('Mary'))\n *\n * @since 2.5.0\n */\nvar findFirstMap = function (f) { return function (as) {\n for (var i = 0; i < as.length; i++) {\n var out = f(as[i]);\n if (_.isSome(out)) {\n return out;\n }\n }\n return _.none;\n}; };\nexports.findFirstMap = findFirstMap;\nfunction findLast(predicate) {\n return function (as) {\n for (var i = as.length - 1; i >= 0; i--) {\n if (predicate(as[i])) {\n return _.some(as[i]);\n }\n }\n return _.none;\n };\n}\nexports.findLast = findLast;\n/**\n * Find the last element returned by an option based selector function\n *\n * @example\n * import { findLastMap } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n * readonly name: string\n * readonly age?: number\n * }\n *\n * const persons: ReadonlyArray = [{ name: 'John' }, { name: 'Mary', age: 45 }, { name: 'Joey', age: 28 }]\n *\n * // returns the name of the last person that has an age\n * assert.deepStrictEqual(findLastMap((p: Person) => (p.age === undefined ? none : some(p.name)))(persons), some('Joey'))\n *\n * @since 2.5.0\n */\nvar findLastMap = function (f) { return function (as) {\n for (var i = as.length - 1; i >= 0; i--) {\n var out = f(as[i]);\n if (_.isSome(out)) {\n return out;\n }\n }\n return _.none;\n}; };\nexports.findLastMap = findLastMap;\n/**\n * Returns the index of the last element of the list which matches the predicate\n *\n * @example\n * import { findLastIndex } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface X {\n * readonly a: number\n * readonly b: number\n * }\n * const xs: ReadonlyArray = [{ a: 1, b: 0 }, { a: 1, b: 1 }]\n * assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 1)(xs), some(1))\n * assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 4)(xs), none)\n *\n *\n * @since 2.5.0\n */\nvar findLastIndex = function (predicate) { return function (as) {\n for (var i = as.length - 1; i >= 0; i--) {\n if (predicate(as[i])) {\n return _.some(i);\n }\n }\n return _.none;\n}; };\nexports.findLastIndex = findLastIndex;\n/**\n * Insert an element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { insertAt } from 'fp-ts/ReadonlyArray'\n * import { some } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(insertAt(2, 5)([1, 2, 3, 4]), some([1, 2, 5, 3, 4]))\n *\n * @since 2.5.0\n */\nvar insertAt = function (i, a) { return function (as) {\n return i < 0 || i > as.length ? _.none : _.some(RNEA.unsafeInsertAt(i, a, as));\n}; };\nexports.insertAt = insertAt;\n/**\n * Change the element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { updateAt } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(updateAt(1, 1)([1, 2, 3]), some([1, 1, 3]))\n * assert.deepStrictEqual(updateAt(1, 1)([]), none)\n *\n * @since 2.5.0\n */\nvar updateAt = function (i, a) {\n return exports.modifyAt(i, function () { return a; });\n};\nexports.updateAt = updateAt;\n/**\n * Delete the element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { deleteAt } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(deleteAt(0)([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(deleteAt(1)([]), none)\n *\n * @since 2.5.0\n */\nvar deleteAt = function (i) { return function (as) {\n return exports.isOutOfBound(i, as) ? _.none : _.some(exports.unsafeDeleteAt(i, as));\n}; };\nexports.deleteAt = deleteAt;\n/**\n * Apply a function to the element at the specified index, creating a new array, or returning `None` if the index is out\n * of bounds\n *\n * @example\n * import { modifyAt } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * const double = (x: number): number => x * 2\n * assert.deepStrictEqual(modifyAt(1, double)([1, 2, 3]), some([1, 4, 3]))\n * assert.deepStrictEqual(modifyAt(1, double)([]), none)\n *\n * @since 2.5.0\n */\nvar modifyAt = function (i, f) { return function (as) {\n return exports.isOutOfBound(i, as) ? _.none : _.some(exports.unsafeUpdateAt(i, f(as[i]), as));\n}; };\nexports.modifyAt = modifyAt;\n/**\n * Reverse an array, creating a new array\n *\n * @example\n * import { reverse } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(reverse([1, 2, 3]), [3, 2, 1])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar reverse = function (as) { return (as.length <= 1 ? as : as.slice().reverse()); };\nexports.reverse = reverse;\n/**\n * Extracts from an array of `Either` all the `Right` elements. All the `Right` elements are extracted in order\n *\n * @example\n * import { rights } from 'fp-ts/ReadonlyArray'\n * import { right, left } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(rights([right(1), left('foo'), right(2)]), [1, 2])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar rights = function (as) {\n var r = [];\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n if (a._tag === 'Right') {\n r.push(a.right);\n }\n }\n return r;\n};\nexports.rights = rights;\n/**\n * Extracts from an array of `Either` all the `Left` elements. All the `Left` elements are extracted in order\n *\n * @example\n * import { lefts } from 'fp-ts/ReadonlyArray'\n * import { left, right } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(lefts([right(1), left('foo'), right(2)]), ['foo'])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar lefts = function (as) {\n var r = [];\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n if (a._tag === 'Left') {\n r.push(a.left);\n }\n }\n return r;\n};\nexports.lefts = lefts;\n/**\n * Sort the elements of an array in increasing order, creating a new array\n *\n * @example\n * import { sort } from 'fp-ts/ReadonlyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(sort(N.Ord)([3, 2, 1]), [1, 2, 3])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar sort = function (O) { return function (as) {\n return as.length <= 1 ? as : as.slice().sort(O.compare);\n}; };\nexports.sort = sort;\n// TODO: curry and make data-last in v3\n/**\n * Apply a function to pairs of elements at the same index in two arrays, collecting the results in a new array. If one\n * input array is short, excess elements of the longer array are discarded.\n *\n * @example\n * import { zipWith } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(zipWith([1, 2, 3], ['a', 'b', 'c', 'd'], (n, s) => s + n), ['a1', 'b2', 'c3'])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar zipWith = function (fa, fb, f) {\n var fc = [];\n var len = Math.min(fa.length, fb.length);\n for (var i = 0; i < len; i++) {\n fc[i] = f(fa[i], fb[i]);\n }\n return fc;\n};\nexports.zipWith = zipWith;\nfunction zip(as, bs) {\n if (bs === undefined) {\n return function (bs) { return zip(bs, as); };\n }\n return exports.zipWith(as, bs, function (a, b) { return [a, b]; });\n}\nexports.zip = zip;\n/**\n * The function is reverse of `zip`. Takes an array of pairs and return two corresponding arrays\n *\n * @example\n * import { unzip } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(unzip([[1, 'a'], [2, 'b'], [3, 'c']]), [[1, 2, 3], ['a', 'b', 'c']])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar unzip = function (as) {\n var fa = [];\n var fb = [];\n for (var i = 0; i < as.length; i++) {\n fa[i] = as[i][0];\n fb[i] = as[i][1];\n }\n return [fa, fb];\n};\nexports.unzip = unzip;\n/**\n * Prepend an element to every member of an array\n *\n * @example\n * import { prependAll } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.10.0\n */\nvar prependAll = function (middle) {\n var f = RNEA.prependAll(middle);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : as); };\n};\nexports.prependAll = prependAll;\n/**\n * Places an element in between members of an array\n *\n * @example\n * import { intersperse } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\nvar intersperse = function (middle) {\n var f = RNEA.intersperse(middle);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : as); };\n};\nexports.intersperse = intersperse;\n/**\n * Rotate a `ReadonlyArray` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar rotate = function (n) {\n var f = RNEA.rotate(n);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : as); };\n};\nexports.rotate = rotate;\nfunction elem(E) {\n return function (a, as) {\n if (as === undefined) {\n var elemE_1 = elem(E);\n return function (as) { return elemE_1(a, as); };\n }\n var predicate = function (element) { return E.equals(element, a); };\n var i = 0;\n for (; i < as.length; i++) {\n if (predicate(as[i])) {\n return true;\n }\n }\n return false;\n };\n}\nexports.elem = elem;\n/**\n * Remove duplicates from an array, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/ReadonlyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar uniq = function (E) {\n var f = RNEA.uniq(E);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : as); };\n};\nexports.uniq = uniq;\n/**\n * Sort the elements of an array in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import { sortBy } from 'fp-ts/ReadonlyArray'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n * readonly name: string\n * readonly age: number\n * }\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = sortBy([byName, byAge])\n *\n * const persons = [{ name: 'a', age: 1 }, { name: 'b', age: 3 }, { name: 'c', age: 2 }, { name: 'b', age: 2 }]\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 2 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 }\n * ])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar sortBy = function (ords) {\n var f = RNEA.sortBy(ords);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : as); };\n};\nexports.sortBy = sortBy;\n/**\n * A useful recursion pattern for processing a `ReadonlyArray` to produce a new `ReadonlyArray`, often used for \"chopping\" up the input\n * `ReadonlyArray`. Typically `chop` is called with some function that will consume an initial prefix of the `ReadonlyArray` and produce a\n * value and the tail of the `ReadonlyArray`.\n *\n * @example\n * import { Eq } from 'fp-ts/Eq'\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * const group = (S: Eq): ((as: ReadonlyArray) => ReadonlyArray>) => {\n * return RA.chop(as => {\n * const { init, rest } = pipe(as, RA.spanLeft((a: A) => S.equals(a, as[0])))\n * return [init, rest]\n * })\n * }\n * assert.deepStrictEqual(group(N.Eq)([1, 1, 2, 3, 3, 4]), [[1, 1], [2], [3, 3], [4]])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar chop = function (f) {\n var g = RNEA.chop(f);\n return function (as) { return (exports.isNonEmpty(as) ? g(as) : exports.empty); };\n};\nexports.chop = chop;\n/**\n * Splits a `ReadonlyArray` into two pieces, the first piece has max `n` elements.\n *\n * @example\n * import { splitAt } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(splitAt(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4, 5]])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar splitAt = function (n) { return function (as) {\n return n >= 1 && exports.isNonEmpty(as) ? RNEA.splitAt(n)(as) : exports.isEmpty(as) ? [as, exports.empty] : [exports.empty, as];\n}; };\nexports.splitAt = splitAt;\n/**\n * Splits a `ReadonlyArray` into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of\n * the `ReadonlyArray`. Note that `chunksOf(n)([])` is `[]`, not `[[]]`. This is intentional, and is consistent with a recursive\n * definition of `chunksOf`; it satisfies the property that:\n *\n * ```ts\n * chunksOf(n)(xs).concat(chunksOf(n)(ys)) == chunksOf(n)(xs.concat(ys)))\n * ```\n *\n * whenever `n` evenly divides the length of `as`.\n *\n * @example\n * import { chunksOf } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(chunksOf(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4], [5]])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar chunksOf = function (n) {\n var f = RNEA.chunksOf(n);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : exports.empty); };\n};\nexports.chunksOf = chunksOf;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar fromOptionK = function (f) { return function () {\n var a = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n return exports.fromOption(f.apply(void 0, a));\n}; };\nexports.fromOptionK = fromOptionK;\nfunction comprehension(input, f, g) {\n if (g === void 0) { g = function () { return true; }; }\n var go = function (scope, input) {\n return exports.isNonEmpty(input)\n ? function_1.pipe(RNEA.head(input), exports.chain(function (x) { return go(function_1.pipe(scope, exports.append(x)), RNEA.tail(input)); }))\n : g.apply(void 0, scope) ? [f.apply(void 0, scope)]\n : exports.empty;\n };\n return go(exports.empty, input);\n}\nexports.comprehension = comprehension;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar concatW = function (second) { return function (first) {\n return exports.isEmpty(first) ? second : exports.isEmpty(second) ? first : first.concat(second);\n}; };\nexports.concatW = concatW;\n/**\n * @category combinators\n * @since 2.11.0\n */\nexports.concat = exports.concatW;\nfunction union(E) {\n var unionE = RNEA.union(E);\n return function (first, second) {\n if (second === undefined) {\n var unionE_1 = union(E);\n return function (second) { return unionE_1(second, first); };\n }\n return exports.isNonEmpty(first) && exports.isNonEmpty(second) ? unionE(second)(first) : exports.isNonEmpty(first) ? first : second;\n };\n}\nexports.union = union;\nfunction intersection(E) {\n var elemE = elem(E);\n return function (xs, ys) {\n if (ys === undefined) {\n var intersectionE_1 = intersection(E);\n return function (ys) { return intersectionE_1(ys, xs); };\n }\n return xs.filter(function (a) { return elemE(a, ys); });\n };\n}\nexports.intersection = intersection;\nfunction difference(E) {\n var elemE = elem(E);\n return function (xs, ys) {\n if (ys === undefined) {\n var differenceE_1 = difference(E);\n return function (ys) { return differenceE_1(ys, xs); };\n }\n return xs.filter(function (a) { return !elemE(a, ys); });\n };\n}\nexports.difference = difference;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\nvar _map = function (fa, f) { return function_1.pipe(fa, exports.map(f)); };\nvar _mapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.mapWithIndex(f)); };\nvar _ap = function (fab, fa) { return function_1.pipe(fab, exports.ap(fa)); };\nvar _chain = function (ma, f) { return function_1.pipe(ma, exports.chain(f)); };\nvar _filter = function (fa, predicate) {\n return function_1.pipe(fa, exports.filter(predicate));\n};\nvar _filterMap = function (fa, f) { return function_1.pipe(fa, exports.filterMap(f)); };\nvar _partition = function (fa, predicate) {\n return function_1.pipe(fa, exports.partition(predicate));\n};\nvar _partitionMap = function (fa, f) { return function_1.pipe(fa, exports.partitionMap(f)); };\nvar _partitionWithIndex = function (fa, predicateWithIndex) { return function_1.pipe(fa, exports.partitionWithIndex(predicateWithIndex)); };\nvar _partitionMapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.partitionMapWithIndex(f)); };\nvar _alt = function (fa, that) { return function_1.pipe(fa, exports.alt(that)); };\nvar _reduce = function (fa, b, f) { return function_1.pipe(fa, exports.reduce(b, f)); };\nvar _foldMap = function (M) {\n var foldMapM = exports.foldMap(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapM(f)); };\n};\nvar _reduceRight = function (fa, b, f) { return function_1.pipe(fa, exports.reduceRight(b, f)); };\nvar _reduceWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceWithIndex(b, f));\n};\nvar _foldMapWithIndex = function (M) {\n var foldMapWithIndexM = exports.foldMapWithIndex(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapWithIndexM(f)); };\n};\nvar _reduceRightWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceRightWithIndex(b, f));\n};\nvar _filterMapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.filterMapWithIndex(f)); };\nvar _filterWithIndex = function (fa, predicateWithIndex) { return function_1.pipe(fa, exports.filterWithIndex(predicateWithIndex)); };\nvar _extend = function (fa, f) { return function_1.pipe(fa, exports.extend(f)); };\nvar _traverse = function (F) {\n var traverseF = exports.traverse(F);\n return function (ta, f) { return function_1.pipe(ta, traverseF(f)); };\n};\n/* istanbul ignore next */\nvar _traverseWithIndex = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (ta, f) { return function_1.pipe(ta, traverseWithIndexF(f)); };\n};\n/** @internal */\nvar _chainRecDepthFirst = function (a, f) { return function_1.pipe(a, exports.chainRecDepthFirst(f)); };\nexports._chainRecDepthFirst = _chainRecDepthFirst;\n/** @internal */\nvar _chainRecBreadthFirst = function (a, f) { return function_1.pipe(a, exports.chainRecBreadthFirst(f)); };\nexports._chainRecBreadthFirst = _chainRecBreadthFirst;\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * @category Pointed\n * @since 2.5.0\n */\nexports.of = RNEA.of;\n/**\n * @category Zero\n * @since 2.7.0\n */\nvar zero = function () { return exports.empty; };\nexports.zero = zero;\n/**\n * Less strict version of [`alt`](#alt).\n *\n * @category Alt\n * @since 2.9.0\n */\nvar altW = function (that) { return function (fa) {\n return fa.concat(that());\n}; };\nexports.altW = altW;\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * @category Alt\n * @since 2.5.0\n */\nexports.alt = exports.altW;\n/**\n * Apply a function to an argument under a type constructor.\n *\n * @category Apply\n * @since 2.5.0\n */\nvar ap = function (fa) {\n return exports.chain(function (f) { return function_1.pipe(fa, exports.map(f)); });\n};\nexports.ap = ap;\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation.\n *\n * @category Monad\n * @since 2.5.0\n */\nvar chain = function (f) { return function (ma) {\n return function_1.pipe(ma, exports.chainWithIndex(function (_, a) { return f(a); }));\n}; };\nexports.chain = chain;\n/**\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.flatten = \n/*#__PURE__*/\nexports.chain(function_1.identity);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category Functor\n * @since 2.5.0\n */\nvar map = function (f) { return function (fa) {\n return fa.map(function (a) { return f(a); });\n}; };\nexports.map = map;\n/**\n * @category FunctorWithIndex\n * @since 2.5.0\n */\nvar mapWithIndex = function (f) { return function (fa) { return fa.map(function (a, i) { return f(i, a); }); }; };\nexports.mapWithIndex = mapWithIndex;\n/**\n * @category Compactable\n * @since 2.5.0\n */\nvar separate = function (fa) {\n var left = [];\n var right = [];\n for (var _i = 0, fa_1 = fa; _i < fa_1.length; _i++) {\n var e = fa_1[_i];\n if (e._tag === 'Left') {\n left.push(e.left);\n }\n else {\n right.push(e.right);\n }\n }\n return Separated_1.separated(left, right);\n};\nexports.separate = separate;\n/**\n * @category Filterable\n * @since 2.5.0\n */\nvar filter = function (predicate) { return function (as) { return as.filter(predicate); }; };\nexports.filter = filter;\n/**\n * @category FilterableWithIndex\n * @since 2.5.0\n */\nvar filterMapWithIndex = function (f) { return function (fa) {\n var out = [];\n for (var i = 0; i < fa.length; i++) {\n var optionB = f(i, fa[i]);\n if (_.isSome(optionB)) {\n out.push(optionB.value);\n }\n }\n return out;\n}; };\nexports.filterMapWithIndex = filterMapWithIndex;\n/**\n * @category Filterable\n * @since 2.5.0\n */\nvar filterMap = function (f) {\n return exports.filterMapWithIndex(function (_, a) { return f(a); });\n};\nexports.filterMap = filterMap;\n/**\n * @category Compactable\n * @since 2.5.0\n */\nexports.compact = \n/*#__PURE__*/\nexports.filterMap(function_1.identity);\n/**\n * @category Filterable\n * @since 2.5.0\n */\nvar partition = function (predicate) {\n return exports.partitionWithIndex(function (_, a) { return predicate(a); });\n};\nexports.partition = partition;\n/**\n * @category FilterableWithIndex\n * @since 2.5.0\n */\nvar partitionWithIndex = function (predicateWithIndex) { return function (as) {\n var left = [];\n var right = [];\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n if (predicateWithIndex(i, a)) {\n right.push(a);\n }\n else {\n left.push(a);\n }\n }\n return Separated_1.separated(left, right);\n}; };\nexports.partitionWithIndex = partitionWithIndex;\n/**\n * @category Filterable\n * @since 2.5.0\n */\nvar partitionMap = function (f) {\n return exports.partitionMapWithIndex(function (_, a) { return f(a); });\n};\nexports.partitionMap = partitionMap;\n/**\n * @category FilterableWithIndex\n * @since 2.5.0\n */\nvar partitionMapWithIndex = function (f) { return function (fa) {\n var left = [];\n var right = [];\n for (var i = 0; i < fa.length; i++) {\n var e = f(i, fa[i]);\n if (e._tag === 'Left') {\n left.push(e.left);\n }\n else {\n right.push(e.right);\n }\n }\n return Separated_1.separated(left, right);\n}; };\nexports.partitionMapWithIndex = partitionMapWithIndex;\n/**\n * @category FilterableWithIndex\n * @since 2.5.0\n */\nvar filterWithIndex = function (predicateWithIndex) { return function (as) {\n return as.filter(function (a, i) { return predicateWithIndex(i, a); });\n}; };\nexports.filterWithIndex = filterWithIndex;\n/**\n * @category Extend\n * @since 2.5.0\n */\nvar extend = function (f) { return function (wa) { return wa.map(function (_, i) { return f(wa.slice(i)); }); }; };\nexports.extend = extend;\n/**\n * Derivable from `Extend`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.duplicate = \n/*#__PURE__*/\nexports.extend(function_1.identity);\n/**\n * @category FoldableWithIndex\n * @since 2.5.0\n */\nvar foldMapWithIndex = function (M) { return function (f) { return function (fa) {\n return fa.reduce(function (b, a, i) { return M.concat(b, f(i, a)); }, M.empty);\n}; }; };\nexports.foldMapWithIndex = foldMapWithIndex;\n/**\n * @category Foldable\n * @since 2.5.0\n */\nvar reduce = function (b, f) {\n return exports.reduceWithIndex(b, function (_, b, a) { return f(b, a); });\n};\nexports.reduce = reduce;\n/**\n * @category Foldable\n * @since 2.5.0\n */\nvar foldMap = function (M) {\n var foldMapWithIndexM = exports.foldMapWithIndex(M);\n return function (f) { return foldMapWithIndexM(function (_, a) { return f(a); }); };\n};\nexports.foldMap = foldMap;\n/**\n * @category FoldableWithIndex\n * @since 2.5.0\n */\nvar reduceWithIndex = function (b, f) { return function (fa) {\n var len = fa.length;\n var out = b;\n for (var i = 0; i < len; i++) {\n out = f(i, out, fa[i]);\n }\n return out;\n}; };\nexports.reduceWithIndex = reduceWithIndex;\n/**\n * @category Foldable\n * @since 2.5.0\n */\nvar reduceRight = function (b, f) {\n return exports.reduceRightWithIndex(b, function (_, a, b) { return f(a, b); });\n};\nexports.reduceRight = reduceRight;\n/**\n * @category FoldableWithIndex\n * @since 2.5.0\n */\nvar reduceRightWithIndex = function (b, f) { return function (fa) { return fa.reduceRight(function (b, a, i) { return f(i, a, b); }, b); }; };\nexports.reduceRightWithIndex = reduceRightWithIndex;\n/**\n * @category Traversable\n * @since 2.6.3\n */\nvar traverse = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (f) { return traverseWithIndexF(function (_, a) { return f(a); }); };\n};\nexports.traverse = traverse;\n/**\n * @category Traversable\n * @since 2.6.3\n */\nvar sequence = function (F) { return function (ta) {\n return _reduce(ta, F.of(exports.zero()), function (fas, fa) {\n return F.ap(F.map(fas, function (as) { return function (a) { return function_1.pipe(as, exports.append(a)); }; }), fa);\n });\n}; };\nexports.sequence = sequence;\n/**\n * @category TraversableWithIndex\n * @since 2.6.3\n */\nvar traverseWithIndex = function (F) { return function (f) {\n return exports.reduceWithIndex(F.of(exports.zero()), function (i, fbs, a) {\n return F.ap(F.map(fbs, function (bs) { return function (b) { return function_1.pipe(bs, exports.append(b)); }; }), f(i, a));\n });\n}; };\nexports.traverseWithIndex = traverseWithIndex;\n/**\n * @category Witherable\n * @since 2.6.5\n */\nvar wither = function (F) {\n var _witherF = _wither(F);\n return function (f) { return function (fa) { return _witherF(fa, f); }; };\n};\nexports.wither = wither;\n/**\n * @category Witherable\n * @since 2.6.5\n */\nvar wilt = function (F) {\n var _wiltF = _wilt(F);\n return function (f) { return function (fa) { return _wiltF(fa, f); }; };\n};\nexports.wilt = wilt;\n/**\n * @category Unfoldable\n * @since 2.6.6\n */\nvar unfold = function (b, f) {\n var out = [];\n var bb = b;\n while (true) {\n var mt = f(bb);\n if (_.isSome(mt)) {\n var _a = mt.value, a = _a[0], b_1 = _a[1];\n out.push(a);\n bb = b_1;\n }\n else {\n break;\n }\n }\n return out;\n};\nexports.unfold = unfold;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.5.0\n */\nexports.URI = 'ReadonlyArray';\n/**\n * @category instances\n * @since 2.5.0\n */\nvar getShow = function (S) { return ({\n show: function (as) { return \"[\" + as.map(S.show).join(', ') + \"]\"; }\n}); };\nexports.getShow = getShow;\n/**\n * @category instances\n * @since 2.5.0\n */\nvar getSemigroup = function () { return ({\n concat: function (first, second) { return (exports.isEmpty(first) ? second : exports.isEmpty(second) ? first : first.concat(second)); }\n}); };\nexports.getSemigroup = getSemigroup;\n/**\n * Returns a `Monoid` for `ReadonlyArray`.\n *\n * @example\n * import { getMonoid } from 'fp-ts/ReadonlyArray'\n *\n * const M = getMonoid()\n * assert.deepStrictEqual(M.concat([1, 2], [3, 4]), [1, 2, 3, 4])\n *\n * @category instances\n * @since 2.5.0\n */\nvar getMonoid = function () { return ({\n concat: exports.getSemigroup().concat,\n empty: exports.empty\n}); };\nexports.getMonoid = getMonoid;\n/**\n * Derives an `Eq` over the `ReadonlyArray` of a given element type from the `Eq` of that type. The derived `Eq` defines two\n * arrays as equal if all elements of both arrays are compared equal pairwise with the given `E`. In case of arrays of\n * different lengths, the result is non equality.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { getEq } from 'fp-ts/ReadonlyArray'\n *\n * const E = getEq(S.Eq)\n * assert.strictEqual(E.equals(['a', 'b'], ['a', 'b']), true)\n * assert.strictEqual(E.equals(['a'], []), false)\n *\n * @category instances\n * @since 2.5.0\n */\nvar getEq = function (E) {\n return Eq_1.fromEquals(function (xs, ys) { return xs.length === ys.length && xs.every(function (x, i) { return E.equals(x, ys[i]); }); });\n};\nexports.getEq = getEq;\n/**\n * Derives an `Ord` over the `ReadonlyArray` of a given element type from the `Ord` of that type. The ordering between two such\n * arrays is equal to: the first non equal comparison of each arrays elements taken pairwise in increasing order, in\n * case of equality over all the pairwise elements; the longest array is considered the greatest, if both arrays have\n * the same length, the result is equality.\n *\n * @example\n * import { getOrd } from 'fp-ts/ReadonlyArray'\n * import * as S from 'fp-ts/string'\n *\n * const O = getOrd(S.Ord)\n * assert.strictEqual(O.compare(['b'], ['a']), 1)\n * assert.strictEqual(O.compare(['a'], ['a']), 0)\n * assert.strictEqual(O.compare(['a'], ['b']), -1)\n *\n *\n * @category instances\n * @since 2.5.0\n */\nvar getOrd = function (O) {\n return Ord_1.fromCompare(function (a, b) {\n var aLen = a.length;\n var bLen = b.length;\n var len = Math.min(aLen, bLen);\n for (var i = 0; i < len; i++) {\n var ordering = O.compare(a[i], b[i]);\n if (ordering !== 0) {\n return ordering;\n }\n }\n return N.Ord.compare(aLen, bLen);\n });\n};\nexports.getOrd = getOrd;\n/**\n * @category instances\n * @since 2.11.0\n */\nvar getUnionSemigroup = function (E) {\n var unionE = union(E);\n return {\n concat: function (first, second) { return unionE(second)(first); }\n };\n};\nexports.getUnionSemigroup = getUnionSemigroup;\n/**\n * @category instances\n * @since 2.11.0\n */\nvar getUnionMonoid = function (E) { return ({\n concat: exports.getUnionSemigroup(E).concat,\n empty: exports.empty\n}); };\nexports.getUnionMonoid = getUnionMonoid;\n/**\n * @category instances\n * @since 2.11.0\n */\nvar getIntersectionSemigroup = function (E) {\n var intersectionE = intersection(E);\n return {\n concat: function (first, second) { return intersectionE(second)(first); }\n };\n};\nexports.getIntersectionSemigroup = getIntersectionSemigroup;\n/**\n * @category instances\n * @since 2.11.0\n */\nvar getDifferenceMagma = function (E) {\n var differenceE = difference(E);\n return {\n concat: function (first, second) { return differenceE(second)(first); }\n };\n};\nexports.getDifferenceMagma = getDifferenceMagma;\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Functor = {\n URI: exports.URI,\n map: _map\n};\n/**\n * Derivable from `Functor`.\n *\n * @category combinators\n * @since 2.10.0\n */\nexports.flap = \n/*#__PURE__*/\nFunctor_1.flap(exports.Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Pointed = {\n URI: exports.URI,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FunctorWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Apply = {\n URI: exports.URI,\n map: _map,\n ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apFirst = \n/*#__PURE__*/\nApply_1.apFirst(exports.Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apSecond = \n/*#__PURE__*/\nApply_1.apSecond(exports.Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Applicative = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Chain = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Monad = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of,\n chain: _chain\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.chainFirst = \n/*#__PURE__*/\nChain_1.chainFirst(exports.Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Unfoldable = {\n URI: exports.URI,\n unfold: exports.unfold\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Alt = {\n URI: exports.URI,\n map: _map,\n alt: _alt\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.Zero = {\n URI: exports.URI,\n zero: exports.zero\n};\n/**\n * @category constructors\n * @since 2.11.0\n */\nexports.guard = \n/*#__PURE__*/\nZero_1.guard(exports.Zero, exports.Pointed);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Alternative = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of,\n alt: _alt,\n zero: exports.zero\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Extend = {\n URI: exports.URI,\n map: _map,\n extend: _extend\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Compactable = {\n URI: exports.URI,\n compact: exports.compact,\n separate: exports.separate\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Filterable = {\n URI: exports.URI,\n map: _map,\n compact: exports.compact,\n separate: exports.separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FilterableWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n compact: exports.compact,\n separate: exports.separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n partitionMapWithIndex: _partitionMapWithIndex,\n partitionWithIndex: _partitionWithIndex,\n filterMapWithIndex: _filterMapWithIndex,\n filterWithIndex: _filterWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Foldable = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FoldableWithIndex = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Traversable = {\n URI: exports.URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.TraversableWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverse: _traverse,\n sequence: exports.sequence,\n traverseWithIndex: _traverseWithIndex\n};\n/**\n * @category ChainRec\n * @since 2.11.0\n */\nvar chainRecDepthFirst = function (f) { return function (a) {\n var todo = __spreadArray([], f(a));\n var out = [];\n while (todo.length > 0) {\n var e = todo.shift();\n if (_.isLeft(e)) {\n todo.unshift.apply(todo, f(e.left));\n }\n else {\n out.push(e.right);\n }\n }\n return out;\n}; };\nexports.chainRecDepthFirst = chainRecDepthFirst;\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.ChainRecDepthFirst = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain,\n chainRec: exports._chainRecDepthFirst\n};\n/**\n * @category ChainRec\n * @since 2.11.0\n */\nvar chainRecBreadthFirst = function (f) { return function (a) {\n var initial = f(a);\n var todo = [];\n var out = [];\n function go(e) {\n if (_.isLeft(e)) {\n f(e.left).forEach(function (v) { return todo.push(v); });\n }\n else {\n out.push(e.right);\n }\n }\n for (var _i = 0, initial_1 = initial; _i < initial_1.length; _i++) {\n var e = initial_1[_i];\n go(e);\n }\n while (todo.length > 0) {\n go(todo.shift());\n }\n return out;\n}; };\nexports.chainRecBreadthFirst = chainRecBreadthFirst;\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.ChainRecBreadthFirst = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain,\n chainRec: exports._chainRecBreadthFirst\n};\nvar _wither = \n/*#__PURE__*/\nWitherable_1.witherDefault(exports.Traversable, exports.Compactable);\nvar _wilt = \n/*#__PURE__*/\nWitherable_1.wiltDefault(exports.Traversable, exports.Compactable);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Witherable = {\n URI: exports.URI,\n map: _map,\n compact: exports.compact,\n separate: exports.separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n wither: _wither,\n wilt: _wilt\n};\n/**\n * Filter values inside a context.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import * as T from 'fp-ts/Task'\n *\n * const filterE = RA.filterE(T.ApplicativePar)\n * async function test() {\n * assert.deepStrictEqual(\n * await pipe(\n * [-1, 2, 3],\n * filterE((n) => T.of(n > 0))\n * )(),\n * [2, 3]\n * )\n * }\n * test()\n *\n * @since 2.11.0\n */\nexports.filterE = \n/*#__PURE__*/\nWitherable_1.filterE(exports.Witherable);\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.FromEither = {\n URI: exports.URI,\n fromEither: exports.fromEither\n};\n/**\n * @category combinators\n * @since 2.11.0\n */\nexports.fromEitherK = \n/*#__PURE__*/\nFromEither_1.fromEitherK(exports.FromEither);\n// -------------------------------------------------------------------------------------\n// unsafe\n// -------------------------------------------------------------------------------------\n/**\n * @category unsafe\n * @since 2.5.0\n */\nexports.unsafeInsertAt = RNEA.unsafeInsertAt;\n/**\n * @category unsafe\n * @since 2.5.0\n */\nvar unsafeUpdateAt = function (i, a, as) {\n return exports.isNonEmpty(as) ? RNEA.unsafeUpdateAt(i, a, as) : as;\n};\nexports.unsafeUpdateAt = unsafeUpdateAt;\n/**\n * @category unsafe\n * @since 2.5.0\n */\nvar unsafeDeleteAt = function (i, as) {\n var xs = as.slice();\n xs.splice(i, 1);\n return xs;\n};\nexports.unsafeDeleteAt = unsafeDeleteAt;\n// -------------------------------------------------------------------------------------\n// interop\n// -------------------------------------------------------------------------------------\n/**\n * @category interop\n * @since 2.5.0\n */\nvar toArray = function (as) { return as.slice(); };\nexports.toArray = toArray;\n/**\n * @category interop\n * @since 2.5.0\n */\nvar fromArray = function (as) { return (exports.isEmpty(as) ? exports.empty : as.slice()); };\nexports.fromArray = fromArray;\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * An empty array\n *\n * @since 2.5.0\n */\nexports.empty = RNEA.empty;\n/**\n * Check if a predicate holds true for every array member.\n *\n * @example\n * import { every } from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const isPositive = (n: number): boolean => n > 0\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], every(isPositive)), true)\n * assert.deepStrictEqual(pipe([1, 2, -3], every(isPositive)), false)\n *\n * @since 2.9.0\n */\nvar every = function (predicate) { return function (as) { return as.every(predicate); }; };\nexports.every = every;\n/**\n * Check if a predicate holds true for any array member.\n *\n * @example\n * import { some } from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const isPositive = (n: number): boolean => n > 0\n *\n * assert.deepStrictEqual(pipe([-1, -2, 3], some(isPositive)), true)\n * assert.deepStrictEqual(pipe([-1, -2, -3], some(isPositive)), false)\n *\n * @since 2.9.0\n */\nvar some = function (predicate) { return function (as) {\n return as.some(predicate);\n}; };\nexports.some = some;\n/**\n * Alias of [`some`](#some)\n *\n * @since 2.11.0\n */\nexports.exists = exports.some;\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.9.0\n */\nexports.Do = \n/*#__PURE__*/\nexports.of(_.emptyRecord);\n/**\n * @since 2.8.0\n */\nexports.bindTo = \n/*#__PURE__*/\nFunctor_1.bindTo(exports.Functor);\n/**\n * @since 2.8.0\n */\nexports.bind = \n/*#__PURE__*/\nChain_1.bind(exports.Chain);\n// -------------------------------------------------------------------------------------\n// pipeable sequence S\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.8.0\n */\nexports.apS = \n/*#__PURE__*/\nApply_1.apS(exports.Apply);\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n// tslint:disable: deprecation\n/**\n * Use `ReadonlyNonEmptyArray` module instead.\n *\n * @category constructors\n * @since 2.5.0\n * @deprecated\n */\nexports.range = RNEA.range;\n/**\n * Use [`prepend`](#prepend) instead.\n *\n * @category constructors\n * @since 2.5.0\n * @deprecated\n */\nexports.cons = RNEA.cons;\n/**\n * Use [`append`](#append) instead.\n *\n * @category constructors\n * @since 2.5.0\n * @deprecated\n */\nexports.snoc = RNEA.snoc;\n/**\n * Use [`prependAll`](#prependall) instead.\n *\n * @category combinators\n * @since 2.9.0\n * @deprecated\n */\nexports.prependToAll = exports.prependAll;\n/**\n * Use small, specific instances instead.\n *\n * @category instances\n * @since 2.5.0\n * @deprecated\n */\nexports.readonlyArray = {\n URI: exports.URI,\n compact: exports.compact,\n separate: exports.separate,\n map: _map,\n ap: _ap,\n of: exports.of,\n chain: _chain,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n mapWithIndex: _mapWithIndex,\n partitionMapWithIndex: _partitionMapWithIndex,\n partitionWithIndex: _partitionWithIndex,\n filterMapWithIndex: _filterMapWithIndex,\n filterWithIndex: _filterWithIndex,\n alt: _alt,\n zero: exports.zero,\n unfold: exports.unfold,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex,\n extend: _extend,\n wither: _wither,\n wilt: _wilt\n};\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lefts = exports.rights = exports.reverse = exports.modifyAt = exports.deleteAt = exports.updateAt = exports.insertAt = exports.copy = exports.findLastIndex = exports.findLastMap = exports.findLast = exports.findFirstMap = exports.findFirst = exports.findIndex = exports.dropLeftWhile = exports.dropRight = exports.dropLeft = exports.spanLeft = exports.takeLeftWhile = exports.takeRight = exports.takeLeft = exports.init = exports.tail = exports.last = exports.head = exports.lookup = exports.isOutOfBound = exports.size = exports.scanRight = exports.scanLeft = exports.chainWithIndex = exports.foldRight = exports.matchRight = exports.matchRightW = exports.foldLeft = exports.matchLeft = exports.matchLeftW = exports.match = exports.matchW = exports.fromEither = exports.fromOption = exports.fromPredicate = exports.replicate = exports.makeBy = exports.appendW = exports.append = exports.prependW = exports.prepend = exports.isNonEmpty = exports.isEmpty = void 0;\nexports.traverseWithIndex = exports.sequence = exports.traverse = exports.reduceRightWithIndex = exports.reduceRight = exports.reduceWithIndex = exports.reduce = exports.foldMapWithIndex = exports.foldMap = exports.duplicate = exports.extend = exports.filterWithIndex = exports.alt = exports.altW = exports.partitionMapWithIndex = exports.partitionMap = exports.partitionWithIndex = exports.partition = exports.filter = exports.separate = exports.compact = exports.filterMap = exports.filterMapWithIndex = exports.mapWithIndex = exports.flatten = exports.chain = exports.ap = exports.map = exports.zero = exports.of = exports.difference = exports.intersection = exports.union = exports.concat = exports.concatW = exports.comprehension = exports.fromOptionK = exports.chunksOf = exports.splitAt = exports.chop = exports.sortBy = exports.uniq = exports.elem = exports.rotate = exports.intersperse = exports.prependAll = exports.unzip = exports.zip = exports.zipWith = exports.sort = void 0;\nexports.some = exports.every = exports.unsafeDeleteAt = exports.unsafeUpdateAt = exports.unsafeInsertAt = exports.fromEitherK = exports.FromEither = exports.filterE = exports.ChainRecBreadthFirst = exports.chainRecBreadthFirst = exports.ChainRecDepthFirst = exports.chainRecDepthFirst = exports.Witherable = exports.TraversableWithIndex = exports.Traversable = exports.FoldableWithIndex = exports.Foldable = exports.FilterableWithIndex = exports.Filterable = exports.Compactable = exports.Extend = exports.Alternative = exports.guard = exports.Zero = exports.Alt = exports.Unfoldable = exports.Monad = exports.chainFirst = exports.Chain = exports.Applicative = exports.apSecond = exports.apFirst = exports.Apply = exports.FunctorWithIndex = exports.Pointed = exports.flap = exports.Functor = exports.getDifferenceMagma = exports.getIntersectionSemigroup = exports.getUnionMonoid = exports.getUnionSemigroup = exports.getOrd = exports.getEq = exports.getMonoid = exports.getSemigroup = exports.getShow = exports.URI = exports.unfold = exports.wilt = exports.wither = void 0;\nexports.array = exports.prependToAll = exports.snoc = exports.cons = exports.empty = exports.range = exports.apS = exports.bind = exports.bindTo = exports.Do = exports.exists = void 0;\nvar Apply_1 = require(\"./Apply\");\nvar Chain_1 = require(\"./Chain\");\nvar FromEither_1 = require(\"./FromEither\");\nvar function_1 = require(\"./function\");\nvar Functor_1 = require(\"./Functor\");\nvar _ = __importStar(require(\"./internal\"));\nvar NEA = __importStar(require(\"./NonEmptyArray\"));\nvar RA = __importStar(require(\"./ReadonlyArray\"));\nvar Separated_1 = require(\"./Separated\");\nvar Witherable_1 = require(\"./Witherable\");\nvar Zero_1 = require(\"./Zero\");\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * Test whether an array is empty\n *\n * @example\n * import { isEmpty } from 'fp-ts/Array'\n *\n * assert.strictEqual(isEmpty([]), true)\n * assert.strictEqual(isEmpty(['a']), false)\n *\n * @category refinements\n * @since 2.0.0\n */\nvar isEmpty = function (as) { return as.length === 0; };\nexports.isEmpty = isEmpty;\n/**\n * Test whether an array is non empty narrowing down the type to `NonEmptyArray`\n *\n * @example\n * import { isNonEmpty } from 'fp-ts/Array'\n *\n * assert.strictEqual(isNonEmpty([]), false)\n * assert.strictEqual(isNonEmpty(['a']), true)\n *\n * @category refinements\n * @since 2.0.0\n */\nexports.isNonEmpty = NEA.isNonEmpty;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Prepend an element to the front of a `Array`, creating a new `NonEmptyArray`.\n *\n * @example\n * import { prepend } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([2, 3, 4], prepend(1)), [1, 2, 3, 4])\n *\n * @category constructors\n * @since 2.10.0\n */\nexports.prepend = NEA.prepend;\n/**\n * Less strict version of [`prepend`](#prepend).\n *\n * @example\n * import { prependW } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([2, 3, 4], prependW(\"a\")), [\"a\", 2, 3, 4]);\n *\n * @category constructors\n * @since 2.11.0\n */\nexports.prependW = NEA.prependW;\n/**\n * Append an element to the end of a `Array`, creating a new `NonEmptyArray`.\n *\n * @example\n * import { append } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], append(4)), [1, 2, 3, 4])\n *\n * @category constructors\n * @since 2.10.0\n */\nexports.append = NEA.append;\n/**\n * Less strict version of [`append`](#append).\n *\n * @example\n * import { appendW } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], appendW(\"d\")), [1, 2, 3, \"d\"]);\n *\n * @category constructors\n * @since 2.11.0\n */\nexports.appendW = NEA.appendW;\n/**\n * Return a `Array` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { makeBy } from 'fp-ts/Array'\n *\n * const double = (i: number): number => i * 2\n * assert.deepStrictEqual(makeBy(5, double), [0, 2, 4, 6, 8])\n * assert.deepStrictEqual(makeBy(-3, double), [])\n * assert.deepStrictEqual(makeBy(4.32164, double), [0, 2, 4, 6])\n *\n * @category constructors\n * @since 2.0.0\n */\nvar makeBy = function (n, f) { return (n <= 0 ? [] : NEA.makeBy(f)(n)); };\nexports.makeBy = makeBy;\n/**\n * Create a `Array` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { replicate } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(replicate(3, 'a'), ['a', 'a', 'a'])\n * assert.deepStrictEqual(replicate(-3, 'a'), [])\n * assert.deepStrictEqual(replicate(2.985647, 'a'), ['a', 'a'])\n *\n * @category constructors\n * @since 2.0.0\n */\nvar replicate = function (n, a) { return exports.makeBy(n, function () { return a; }); };\nexports.replicate = replicate;\nfunction fromPredicate(predicate) {\n return function (a) { return (predicate(a) ? [a] : []); };\n}\nexports.fromPredicate = fromPredicate;\n// -------------------------------------------------------------------------------------\n// natural transformations\n// -------------------------------------------------------------------------------------\n/**\n * Create an array from an `Option`. The resulting array will contain the content of the\n * `Option` if it is `Some` and it will be empty if the `Option` is `None`.\n *\n * @example\n * import { fromOption } from 'fp-ts/Array'\n * import { option } from \"fp-ts\";\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(option.some(\"a\"), fromOption),[\"a\"])\n * assert.deepStrictEqual(pipe(option.none, fromOption),[])\n *\n * @category natural transformations\n * @since 2.11.0\n */\nvar fromOption = function (ma) { return (_.isNone(ma) ? [] : [ma.value]); };\nexports.fromOption = fromOption;\n/**\n * Create an array from an `Either`. The resulting array will contain the content of the\n * `Either` if it is `Right` and it will be empty if the `Either` is `Left`.\n *\n * @example\n * import { fromEither } from 'fp-ts/Array'\n * import { either } from \"fp-ts\";\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(either.right(\"r\"), fromEither), [\"r\"]);\n * assert.deepStrictEqual(pipe(either.left(\"l\"), fromEither), []);\n *\n * @category natural transformations\n * @since 2.11.0\n */\nvar fromEither = function (e) { return (_.isLeft(e) ? [] : [e.right]); };\nexports.fromEither = fromEither;\n// -------------------------------------------------------------------------------------\n// destructors\n// -------------------------------------------------------------------------------------\n/**\n * Less strict version of [`match`](#match). It will work when `onEmpty` and `onNonEmpty`\n * have different return types.\n *\n * @example\n * import { matchW } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const matcherW = matchW(\n * () => \"No elements\",\n * (as) => as.length\n * );\n * assert.deepStrictEqual(pipe([1, 2, 3, 4], matcherW), 4);\n * assert.deepStrictEqual(pipe([], matcherW), \"No elements\");\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchW = function (onEmpty, onNonEmpty) { return function (as) {\n return exports.isNonEmpty(as) ? onNonEmpty(as) : onEmpty();\n}; };\nexports.matchW = matchW;\n/**\n * Takes an array, if the array is empty it returns the result of `onEmpty`, otherwise\n * it passes the array to `onNonEmpty` and returns the result.\n *\n * @example\n * import { match } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const matcher = match(\n * () => \"No elements\",\n * (as) => `Found ${as.length} element(s)`\n * );\n * assert.deepStrictEqual(pipe([1, 2, 3, 4], matcher), \"Found 4 element(s)\");\n * assert.deepStrictEqual(pipe([], matcher), \"No elements\");\n *\n * @category destructors\n * @since 2.11.0\n */\nexports.match = exports.matchW;\n/**\n * Less strict version of [`matchLeft`](#matchleft). It will work when `onEmpty` and\n * `onNonEmpty` have different return types.\n *\n * @example\n * import { matchLeftW } from 'fp-ts/Array'\n *\n * const f = matchLeftW(\n * () => 0,\n * (head: string, tail: string[]) => `Found \"${head}\" followed by ${tail.length} elements`\n * );\n * assert.strictEqual(f([\"a\", \"b\", \"c\"]), 'Found \"a\" followed by 2 elements');\n * assert.strictEqual(f([]), 0);\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchLeftW = function (onEmpty, onNonEmpty) { return function (as) { return (exports.isNonEmpty(as) ? onNonEmpty(NEA.head(as), NEA.tail(as)) : onEmpty()); }; };\nexports.matchLeftW = matchLeftW;\n/**\n * Takes an array, if the array is empty it returns the result of `onEmpty`, otherwise\n * it passes the array to `onNonEmpty` broken into its first element and remaining elements.\n *\n * @example\n * import { matchLeft } from 'fp-ts/Array'\n *\n * const len: (as: Array) => number = matchLeft(() => 0, (_, tail) => 1 + len(tail))\n * assert.strictEqual(len([1, 2, 3]), 3)\n *\n * @category destructors\n * @since 2.10.0\n */\nexports.matchLeft = exports.matchLeftW;\n/**\n * Alias of [`matchLeft`](#matchleft).\n *\n * @category destructors\n * @since 2.0.0\n */\nexports.foldLeft = exports.matchLeft;\n/**\n * Less strict version of [`matchRight`](#matchright). It will work when `onEmpty` and\n * `onNonEmpty` have different return types.\n *\n * @example\n * import { matchRightW } from 'fp-ts/Array'\n *\n * const f = matchRightW(\n * () => 0,\n * (head: string[], tail: string) => `Found ${head.length} elements folllowed by \"${tail}\"`\n * );\n * assert.strictEqual(f([\"a\", \"b\", \"c\"]), 'Found 2 elements folllowed by \"c\"');\n * assert.strictEqual(f([]), 0);\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchRightW = function (onEmpty, onNonEmpty) { return function (as) { return (exports.isNonEmpty(as) ? onNonEmpty(NEA.init(as), NEA.last(as)) : onEmpty()); }; };\nexports.matchRightW = matchRightW;\n/**\n * Takes an array, if the array is empty it returns the result of `onEmpty`, otherwise\n * it passes the array to `onNonEmpty` broken into its initial elements and the last element.\n *\n * @example\n * import { matchRight } from 'fp-ts/Array'\n *\n * const len: (as: Array) => number = matchRight(\n * () => 0,\n * (head, _) => 1 + len(head)\n * );\n * assert.strictEqual(len([1, 2, 3]), 3);\n *\n * @category destructors\n * @since 2.10.0\n */\nexports.matchRight = exports.matchRightW;\n/**\n * Alias of [`matchRight`](#matchright).\n *\n * @category destructors\n * @since 2.0.0\n */\nexports.foldRight = exports.matchRight;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * Same as [`chain`](#chain), but passing also the index to the iterating function.\n *\n * @example\n * import { chainWithIndex, replicate } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (index: number, x: string) => replicate(2, `${x}${index}`);\n * assert.deepStrictEqual(pipe([\"a\", \"b\", \"c\"], chainWithIndex(f)), [\"a0\", \"a0\", \"b1\", \"b1\", \"c2\", \"c2\"]);\n *\n * @category combinators\n * @since 2.7.0\n */\nvar chainWithIndex = function (f) { return function (as) {\n var out = [];\n for (var i = 0; i < as.length; i++) {\n out.push.apply(out, f(i, as[i]));\n }\n return out;\n}; };\nexports.chainWithIndex = chainWithIndex;\n/**\n * Same as `reduce` but it carries over the intermediate steps\n *\n * @example\n * import { scanLeft } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(scanLeft(10, (b, a: number) => b - a)([1, 2, 3]), [10, 9, 7, 4])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar scanLeft = function (b, f) { return function (as) {\n var len = as.length;\n var out = new Array(len + 1);\n out[0] = b;\n for (var i = 0; i < len; i++) {\n out[i + 1] = f(out[i], as[i]);\n }\n return out;\n}; };\nexports.scanLeft = scanLeft;\n/**\n * Fold an array from the right, keeping all intermediate results instead of only the final result\n *\n * @example\n * import { scanRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(scanRight(10, (a: number, b) => b - a)([1, 2, 3]), [4, 5, 7, 10])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar scanRight = function (b, f) { return function (as) {\n var len = as.length;\n var out = new Array(len + 1);\n out[len] = b;\n for (var i = len - 1; i >= 0; i--) {\n out[i] = f(as[i], out[i + 1]);\n }\n return out;\n}; };\nexports.scanRight = scanRight;\n/**\n * Calculate the number of elements in a `Array`.\n *\n * @example\n * import { size } from 'fp-ts/Array'\n *\n * assert.strictEqual(size([\"a\",\"b\",\"c\"]),3)\n *\n * @since 2.10.0\n */\nvar size = function (as) { return as.length; };\nexports.size = size;\n/**\n * Test whether an array contains a particular index\n *\n * @example\n * import { isOutOfBound } from 'fp-ts/Array'\n *\n * assert.strictEqual(isOutOfBound(1,[\"a\",\"b\",\"c\"]),false)\n * assert.strictEqual(isOutOfBound(-1,[\"a\",\"b\",\"c\"]),true)\n * assert.strictEqual(isOutOfBound(3,[\"a\",\"b\",\"c\"]),true)\n *\n * @since 2.0.0\n */\nexports.isOutOfBound = NEA.isOutOfBound;\n// TODO: remove non-curried overloading in v3\n/**\n * This function provides a safe way to read a value at a particular index from an array.\n * It returns a `none` if the index is out of bounds, and a `some` of the element if the\n * index is valid.\n *\n * @example\n * import { lookup } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], lookup(1)), some(2))\n * assert.deepStrictEqual(pipe([1, 2, 3], lookup(3)), none)\n *\n * @since 2.0.0\n */\nexports.lookup = RA.lookup;\n/**\n * Get the first element in an array, or `None` if the array is empty\n *\n * @example\n * import { head } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(head([1, 2, 3]), some(1))\n * assert.deepStrictEqual(head([]), none)\n *\n * @category destructors\n * @since 2.0.0\n */\nexports.head = RA.head;\n/**\n * Get the last element in an array, or `None` if the array is empty\n *\n * @example\n * import { last } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(last([1, 2, 3]), some(3))\n * assert.deepStrictEqual(last([]), none)\n *\n * @category destructors\n * @since 2.0.0\n */\nexports.last = RA.last;\n/**\n * Get all but the first element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { tail } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(tail([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(tail([]), none)\n *\n * @category destructors\n * @since 2.0.0\n */\nvar tail = function (as) { return (exports.isNonEmpty(as) ? _.some(NEA.tail(as)) : _.none); };\nexports.tail = tail;\n/**\n * Get all but the last element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { init } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), some([1, 2]))\n * assert.deepStrictEqual(init([]), none)\n *\n * @category destructors\n * @since 2.0.0\n */\nvar init = function (as) { return (exports.isNonEmpty(as) ? _.some(NEA.init(as)) : _.none); };\nexports.init = init;\n/**\n * Keep only a max number of elements from the start of an `Array`, creating a new `Array`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { takeLeft } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(takeLeft(2)([1, 2, 3, 4, 5]), [1, 2]);\n * assert.deepStrictEqual(takeLeft(7)([1, 2, 3, 4, 5]), [1, 2, 3, 4, 5]);\n * assert.deepStrictEqual(takeLeft(0)([1, 2, 3, 4, 5]), []);\n * assert.deepStrictEqual(takeLeft(-1)([1, 2, 3, 4, 5]), [1, 2, 3, 4, 5]);\n *\n * @category combinators\n * @since 2.0.0\n */\nvar takeLeft = function (n) { return function (as) { return (exports.isOutOfBound(n, as) ? exports.copy(as) : as.slice(0, n)); }; };\nexports.takeLeft = takeLeft;\n/**\n * Keep only a max number of elements from the end of an `Array`, creating a new `Array`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { takeRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(takeRight(2)([1, 2, 3, 4, 5]), [4, 5]);\n * assert.deepStrictEqual(takeRight(7)([1, 2, 3, 4, 5]), [1, 2, 3, 4, 5]);\n * assert.deepStrictEqual(takeRight(0)([1, 2, 3, 4, 5]), []);\n * assert.deepStrictEqual(takeRight(-1)([1, 2, 3, 4, 5]), [1, 2, 3, 4, 5]);\n *\n * @category combinators\n * @since 2.0.0\n */\nvar takeRight = function (n) { return function (as) {\n return exports.isOutOfBound(n, as) ? exports.copy(as) : n === 0 ? [] : as.slice(-n);\n}; };\nexports.takeRight = takeRight;\nfunction takeLeftWhile(predicate) {\n return function (as) {\n var out = [];\n for (var _i = 0, as_1 = as; _i < as_1.length; _i++) {\n var a = as_1[_i];\n if (!predicate(a)) {\n break;\n }\n out.push(a);\n }\n return out;\n };\n}\nexports.takeLeftWhile = takeLeftWhile;\nvar spanLeftIndex = function (as, predicate) {\n var l = as.length;\n var i = 0;\n for (; i < l; i++) {\n if (!predicate(as[i])) {\n break;\n }\n }\n return i;\n};\nfunction spanLeft(predicate) {\n return function (as) {\n var _a = exports.splitAt(spanLeftIndex(as, predicate))(as), init = _a[0], rest = _a[1];\n return { init: init, rest: rest };\n };\n}\nexports.spanLeft = spanLeft;\n/**\n * Creates a new `Array` which is a copy of the input dropping a max number of elements from the start.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { dropLeft } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(dropLeft(2)([1, 2, 3]), [3]);\n * assert.deepStrictEqual(dropLeft(5)([1, 2, 3]), []);\n * assert.deepStrictEqual(dropLeft(0)([1, 2, 3]), [1, 2, 3]);\n * assert.deepStrictEqual(dropLeft(-2)([1, 2, 3]), [1, 2, 3]);\n *\n * @category combinators\n * @since 2.0.0\n */\nvar dropLeft = function (n) { return function (as) {\n return n <= 0 || exports.isEmpty(as) ? exports.copy(as) : n >= as.length ? [] : as.slice(n, as.length);\n}; };\nexports.dropLeft = dropLeft;\n/**\n * Creates a new `Array` which is a copy of the input dropping a max number of elements from the end.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { dropRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(dropRight(2)([1, 2, 3]), [1]);\n * assert.deepStrictEqual(dropRight(5)([1, 2, 3]), []);\n * assert.deepStrictEqual(dropRight(0)([1, 2, 3]), [1, 2, 3]);\n * assert.deepStrictEqual(dropRight(-2)([1, 2, 3]), [1, 2, 3]);\n *\n * @category combinators\n * @since 2.0.0\n */\nvar dropRight = function (n) { return function (as) {\n return n <= 0 || exports.isEmpty(as) ? exports.copy(as) : n >= as.length ? [] : as.slice(0, as.length - n);\n}; };\nexports.dropRight = dropRight;\nfunction dropLeftWhile(predicate) {\n return function (as) { return as.slice(spanLeftIndex(as, predicate)); };\n}\nexports.dropLeftWhile = dropLeftWhile;\n/**\n * `findIndex` returns an `Option` containing the first index for which a predicate holds.\n * It returns `None` if no element satisfies the predicate.\n * Similar to [`findFirst`](#findFirst) but returning the index instead of the element.\n *\n * @example\n * import { findIndex } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([1, 2, 3]), some(1))\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([]), none)\n *\n * @since 2.0.0\n */\nexports.findIndex = RA.findIndex;\nfunction findFirst(predicate) {\n return RA.findFirst(predicate);\n}\nexports.findFirst = findFirst;\n/**\n * Given a selector function which takes an element and returns an option,\n * this function applies the selector to each element of the array and\n * returns the first `Some` result. Otherwise it returns `None`.\n *\n * @example\n * import { findFirstMap } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n * readonly name: string;\n * readonly age: number;\n * }\n *\n * const persons: Array = [\n * { name: \"John\", age: 16 },\n * { name: \"Mary\", age: 45 },\n * { name: \"Joey\", age: 28 },\n * ];\n *\n * const nameOfPersonAbove18 = (p: Person) => (p.age <= 18 ? none : some(p.name));\n * const nameOfPersonAbove70 = (p: Person) => (p.age <= 70 ? none : some(p.name));\n * assert.deepStrictEqual(findFirstMap(nameOfPersonAbove18)(persons), some(\"Mary\"));\n * assert.deepStrictEqual(findFirstMap(nameOfPersonAbove70)(persons), none);\n *\n * @category destructors\n * @since 2.0.0\n */\nexports.findFirstMap = RA.findFirstMap;\nfunction findLast(predicate) {\n return RA.findLast(predicate);\n}\nexports.findLast = findLast;\n/**\n * Given a selector function which takes an element and returns an option,\n * this function applies the selector to each element of the array starting from the\n * end and returns the last `Some` result. Otherwise it returns `None`.\n *\n * @example\n * import { findLastMap } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n * readonly name: string;\n * readonly age: number;\n * }\n *\n * const persons: Array = [\n * { name: \"John\", age: 16 },\n * { name: \"Mary\", age: 45 },\n * { name: \"Joey\", age: 28 },\n * ];\n *\n * const nameOfPersonAbove18 = (p: Person) => (p.age <= 18 ? none : some(p.name));\n * const nameOfPersonAbove70 = (p: Person) => (p.age <= 70 ? none : some(p.name));\n * assert.deepStrictEqual(findLastMap(nameOfPersonAbove18)(persons), some(\"Joey\"));\n * assert.deepStrictEqual(findLastMap(nameOfPersonAbove70)(persons), none);\n *\n * @category destructors\n * @since 2.0.0\n */\nexports.findLastMap = RA.findLastMap;\n/**\n * Returns the index of the last element of the list which matches the predicate.\n * It returns an `Option` containing the index or `None` if not found.\n *\n * @example\n * import { findLastIndex } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface X {\n * readonly a: number\n * readonly b: number\n * }\n * const xs: Array = [{ a: 1, b: 0 }, { a: 1, b: 1 }]\n * assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 1)(xs), some(1))\n * assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 4)(xs), none)\n *\n * @since 2.0.0\n */\nexports.findLastIndex = RA.findLastIndex;\n/**\n * This function takes an array and makes a new array containing the same elements.\n *\n * @category combinators\n * @since 2.0.0\n */\nvar copy = function (as) { return as.slice(); };\nexports.copy = copy;\n/**\n * Insert an element at the specified index, creating a new array,\n * or returning `None` if the index is out of bounds.\n *\n * @example\n * import { insertAt } from 'fp-ts/Array'\n * import { some } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(insertAt(2, 5)([1, 2, 3, 4]), some([1, 2, 5, 3, 4]))\n *\n * @since 2.0.0\n */\nvar insertAt = function (i, a) { return function (as) {\n return i < 0 || i > as.length ? _.none : _.some(exports.unsafeInsertAt(i, a, as));\n}; };\nexports.insertAt = insertAt;\n/**\n * Change the element at the specified index, creating a new array,\n * or returning `None` if the index is out of bounds.\n *\n * @example\n * import { updateAt } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(updateAt(1, 1)([1, 2, 3]), some([1, 1, 3]))\n * assert.deepStrictEqual(updateAt(1, 1)([]), none)\n *\n * @since 2.0.0\n */\nvar updateAt = function (i, a) { return exports.modifyAt(i, function () { return a; }); };\nexports.updateAt = updateAt;\n/**\n * Delete the element at the specified index, creating a new array, or returning `None` if the index is out of bounds.\n *\n * @example\n * import { deleteAt } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(deleteAt(0)([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(deleteAt(1)([]), none)\n *\n * @since 2.0.0\n */\nvar deleteAt = function (i) { return function (as) {\n return exports.isOutOfBound(i, as) ? _.none : _.some(exports.unsafeDeleteAt(i, as));\n}; };\nexports.deleteAt = deleteAt;\n/**\n * Apply a function to the element at the specified index, creating a new array, or returning `None` if the index is out\n * of bounds.\n *\n * @example\n * import { modifyAt } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * const double = (x: number): number => x * 2\n * assert.deepStrictEqual(modifyAt(1, double)([1, 2, 3]), some([1, 4, 3]))\n * assert.deepStrictEqual(modifyAt(1, double)([]), none)\n *\n * @since 2.0.0\n */\nvar modifyAt = function (i, f) { return function (as) {\n return exports.isOutOfBound(i, as) ? _.none : _.some(exports.unsafeUpdateAt(i, f(as[i]), as));\n}; };\nexports.modifyAt = modifyAt;\n/**\n * Reverse an array, creating a new array\n *\n * @example\n * import { reverse } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(reverse([1, 2, 3]), [3, 2, 1])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar reverse = function (as) { return (exports.isEmpty(as) ? [] : as.slice().reverse()); };\nexports.reverse = reverse;\n/**\n * Takes an `Array` of `Either` and produces a new `Array` containing\n * the values of all the `Right` elements in the same order.\n *\n * @example\n * import { rights } from 'fp-ts/Array'\n * import { right, left } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(rights([right(1), left('foo'), right(2)]), [1, 2])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar rights = function (as) {\n var r = [];\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n if (a._tag === 'Right') {\n r.push(a.right);\n }\n }\n return r;\n};\nexports.rights = rights;\n/**\n * Takes an `Array` of `Either` and produces a new `Array` containing\n * the values of all the `Left` elements in the same order.\n *\n * @example\n * import { lefts } from 'fp-ts/Array'\n * import { left, right } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(lefts([right(1), left('foo'), right(2)]), ['foo'])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar lefts = function (as) {\n var r = [];\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n if (a._tag === 'Left') {\n r.push(a.left);\n }\n }\n return r;\n};\nexports.lefts = lefts;\n/**\n * Sort the elements of an array in increasing order, creating a new array\n *\n * @example\n * import { sort } from 'fp-ts/Array'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(sort(N.Ord)([3, 2, 1]), [1, 2, 3])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar sort = function (O) { return function (as) {\n return as.length <= 1 ? exports.copy(as) : as.slice().sort(O.compare);\n}; };\nexports.sort = sort;\n/**\n * Apply a function to pairs of elements at the same index in two arrays, collecting the results in a new array. If one\n * input array is short, excess elements of the longer array are discarded.\n *\n * @example\n * import { zipWith } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(zipWith([1, 2, 3], ['a', 'b', 'c', 'd'], (n, s) => s + n), ['a1', 'b2', 'c3'])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar zipWith = function (fa, fb, f) {\n var fc = [];\n var len = Math.min(fa.length, fb.length);\n for (var i = 0; i < len; i++) {\n fc[i] = f(fa[i], fb[i]);\n }\n return fc;\n};\nexports.zipWith = zipWith;\nfunction zip(as, bs) {\n if (bs === undefined) {\n return function (bs) { return zip(bs, as); };\n }\n return exports.zipWith(as, bs, function (a, b) { return [a, b]; });\n}\nexports.zip = zip;\n/**\n * The function is reverse of `zip`. Takes an array of pairs and return two corresponding arrays\n *\n * @example\n * import { unzip } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(unzip([[1, 'a'], [2, 'b'], [3, 'c']]), [[1, 2, 3], ['a', 'b', 'c']])\n *\n * @since 2.0.0\n */\nvar unzip = function (as) {\n var fa = [];\n var fb = [];\n for (var i = 0; i < as.length; i++) {\n fa[i] = as[i][0];\n fb[i] = as[i][1];\n }\n return [fa, fb];\n};\nexports.unzip = unzip;\n/**\n * Creates a new `Array`, prepending an element to every member of the input `Array`.\n *\n * @example\n * import { prependAll } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.10.0\n */\nvar prependAll = function (middle) {\n var f = NEA.prependAll(middle);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : []); };\n};\nexports.prependAll = prependAll;\n/**\n * Creates a new `Array` placing an element in between members of the input `Array`.\n *\n * @example\n * import { intersperse } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\nvar intersperse = function (middle) {\n var f = NEA.intersperse(middle);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : exports.copy(as)); };\n};\nexports.intersperse = intersperse;\n/**\n * Creates a new `Array` rotating the input `Array` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar rotate = function (n) {\n var f = NEA.rotate(n);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : exports.copy(as)); };\n};\nexports.rotate = rotate;\n// TODO: remove non-curried overloading in v3\n/**\n * Test if a value is a member of an `Array`. Takes a `Eq` as a single\n * argument which returns the function to use to search for a value of type `A` in\n * an `Array`.\n *\n * @example\n * import { elem } from 'fp-ts/Array'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(pipe([1, 2, 3], elem(N.Eq)(2)), true)\n * assert.strictEqual(pipe([1, 2, 3], elem(N.Eq)(0)), false)\n *\n * @since 2.0.0\n */\nexports.elem = RA.elem;\n/**\n * Creates a new `Array` removing duplicate elements, keeping the first occurrence of an element,\n * based on a `Eq`.\n *\n * @example\n * import { uniq } from 'fp-ts/Array'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar uniq = function (E) {\n var f = NEA.uniq(E);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : exports.copy(as)); };\n};\nexports.uniq = uniq;\n/**\n * Sort the elements of an array in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import { sortBy } from 'fp-ts/Array'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n * readonly name: string\n * readonly age: number\n * }\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = sortBy([byName, byAge])\n *\n * const persons = [{ name: 'a', age: 1 }, { name: 'b', age: 3 }, { name: 'c', age: 2 }, { name: 'b', age: 2 }]\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 2 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 }\n * ])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar sortBy = function (ords) {\n var f = NEA.sortBy(ords);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : exports.copy(as)); };\n};\nexports.sortBy = sortBy;\n/**\n * A useful recursion pattern for processing an array to produce a new array, often used for \"chopping\" up the input\n * array. Typically chop is called with some function that will consume an initial prefix of the array and produce a\n * value and the rest of the array.\n *\n * @example\n * import { Eq } from 'fp-ts/Eq'\n * import * as A from 'fp-ts/Array'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * const group = (S: Eq): ((as: Array) => Array>) => {\n * return A.chop(as => {\n * const { init, rest } = pipe(as, A.spanLeft((a: A) => S.equals(a, as[0])))\n * return [init, rest]\n * })\n * }\n * assert.deepStrictEqual(group(N.Eq)([1, 1, 2, 3, 3, 4]), [[1, 1], [2], [3, 3], [4]])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar chop = function (f) {\n var g = NEA.chop(f);\n return function (as) { return (exports.isNonEmpty(as) ? g(as) : []); };\n};\nexports.chop = chop;\n/**\n * Splits an `Array` into two pieces, the first piece has max `n` elements.\n *\n * @example\n * import { splitAt } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(splitAt(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4, 5]])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar splitAt = function (n) { return function (as) {\n return n >= 1 && exports.isNonEmpty(as) ? NEA.splitAt(n)(as) : exports.isEmpty(as) ? [exports.copy(as), []] : [[], exports.copy(as)];\n}; };\nexports.splitAt = splitAt;\n/**\n * Splits an array into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of\n * the array. Note that `chunksOf(n)([])` is `[]`, not `[[]]`. This is intentional, and is consistent with a recursive\n * definition of `chunksOf`; it satisfies the property that\n *\n * ```ts\n * chunksOf(n)(xs).concat(chunksOf(n)(ys)) == chunksOf(n)(xs.concat(ys)))\n * ```\n *\n * whenever `n` evenly divides the length of `xs`.\n *\n * @example\n * import { chunksOf } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(chunksOf(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4], [5]])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar chunksOf = function (n) {\n var f = NEA.chunksOf(n);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : []); };\n};\nexports.chunksOf = chunksOf;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar fromOptionK = function (f) { return function () {\n var a = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n return exports.fromOption(f.apply(void 0, a));\n}; };\nexports.fromOptionK = fromOptionK;\nfunction comprehension(input, f, g) {\n if (g === void 0) { g = function () { return true; }; }\n var go = function (scope, input) {\n return exports.isNonEmpty(input)\n ? function_1.pipe(NEA.head(input), exports.chain(function (x) { return go(function_1.pipe(scope, exports.append(x)), NEA.tail(input)); }))\n : g.apply(void 0, scope) ? [f.apply(void 0, scope)]\n : [];\n };\n return go([], input);\n}\nexports.comprehension = comprehension;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar concatW = function (second) { return function (first) {\n return exports.isEmpty(first) ? exports.copy(second) : exports.isEmpty(second) ? exports.copy(first) : first.concat(second);\n}; };\nexports.concatW = concatW;\n/**\n * @category combinators\n * @since 2.11.0\n */\nexports.concat = exports.concatW;\nfunction union(E) {\n var unionE = NEA.union(E);\n return function (first, second) {\n if (second === undefined) {\n var unionE_1 = union(E);\n return function (second) { return unionE_1(second, first); };\n }\n return exports.isNonEmpty(first) && exports.isNonEmpty(second)\n ? unionE(second)(first)\n : exports.isNonEmpty(first)\n ? exports.copy(first)\n : exports.copy(second);\n };\n}\nexports.union = union;\nfunction intersection(E) {\n var elemE = exports.elem(E);\n return function (xs, ys) {\n if (ys === undefined) {\n var intersectionE_1 = intersection(E);\n return function (ys) { return intersectionE_1(ys, xs); };\n }\n return xs.filter(function (a) { return elemE(a, ys); });\n };\n}\nexports.intersection = intersection;\nfunction difference(E) {\n var elemE = exports.elem(E);\n return function (xs, ys) {\n if (ys === undefined) {\n var differenceE_1 = difference(E);\n return function (ys) { return differenceE_1(ys, xs); };\n }\n return xs.filter(function (a) { return !elemE(a, ys); });\n };\n}\nexports.difference = difference;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\nvar _map = function (fa, f) { return function_1.pipe(fa, exports.map(f)); };\n/* istanbul ignore next */\nvar _mapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.mapWithIndex(f)); };\nvar _ap = function (fab, fa) { return function_1.pipe(fab, exports.ap(fa)); };\nvar _chain = function (ma, f) { return function_1.pipe(ma, exports.chain(f)); };\n/* istanbul ignore next */\nvar _filter = function (fa, predicate) { return function_1.pipe(fa, exports.filter(predicate)); };\n/* istanbul ignore next */\nvar _filterMap = function (fa, f) { return function_1.pipe(fa, exports.filterMap(f)); };\n/* istanbul ignore next */\nvar _partition = function (fa, predicate) {\n return function_1.pipe(fa, exports.partition(predicate));\n};\n/* istanbul ignore next */\nvar _partitionMap = function (fa, f) { return function_1.pipe(fa, exports.partitionMap(f)); };\n/* istanbul ignore next */\nvar _partitionWithIndex = function (fa, predicateWithIndex) { return function_1.pipe(fa, exports.partitionWithIndex(predicateWithIndex)); };\n/* istanbul ignore next */\nvar _partitionMapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.partitionMapWithIndex(f)); };\n/* istanbul ignore next */\nvar _alt = function (fa, that) { return function_1.pipe(fa, exports.alt(that)); };\nvar _reduce = function (fa, b, f) { return function_1.pipe(fa, exports.reduce(b, f)); };\n/* istanbul ignore next */\nvar _foldMap = function (M) {\n var foldMapM = exports.foldMap(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRight = function (fa, b, f) { return function_1.pipe(fa, exports.reduceRight(b, f)); };\n/* istanbul ignore next */\nvar _reduceWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _foldMapWithIndex = function (M) {\n var foldMapWithIndexM = exports.foldMapWithIndex(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapWithIndexM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRightWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceRightWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _filterMapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.filterMapWithIndex(f)); };\n/* istanbul ignore next */\nvar _filterWithIndex = function (fa, predicateWithIndex) { return function_1.pipe(fa, exports.filterWithIndex(predicateWithIndex)); };\n/* istanbul ignore next */\nvar _extend = function (fa, f) { return function_1.pipe(fa, exports.extend(f)); };\n/* istanbul ignore next */\nvar _traverse = function (F) {\n var traverseF = exports.traverse(F);\n return function (ta, f) { return function_1.pipe(ta, traverseF(f)); };\n};\n/* istanbul ignore next */\nvar _traverseWithIndex = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (ta, f) { return function_1.pipe(ta, traverseWithIndexF(f)); };\n};\nvar _chainRecDepthFirst = RA._chainRecDepthFirst;\nvar _chainRecBreadthFirst = RA._chainRecBreadthFirst;\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * Given an element of the base type, `of` builds an `Array` containing just that\n * element of the base type (this is useful for building a `Monad`).\n *\n * @example\n * import { of } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(of(\"a\"), [\"a\"]);\n *\n * @category Pointed\n * @since 2.0.0\n */\nexports.of = NEA.of;\n/**\n * Makes an empty `Array`, useful for building a [`Monoid`](#Monoid)\n *\n * @category Zero\n * @since 2.7.0\n */\nvar zero = function () { return []; };\nexports.zero = zero;\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: Array) => Array`.\n * In practice it applies the base function to each element of the array and collects the\n * results in a new array.\n *\n * @example\n * import { map } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (n: number) => n * 2;\n * assert.deepStrictEqual(pipe([1, 2, 3], map(f)), [2, 4, 6]);\n *\n * @category Functor\n * @since 2.0.0\n */\nvar map = function (f) { return function (fa) { return fa.map(function (a) { return f(a); }); }; };\nexports.map = map;\n/**\n * Apply a function to an argument under a type constructor.\n *\n * It can be used to extend the concept of [`map`](#map) to a function that\n * takes more than one parameter as described\n * read [here](https://dev.to/gcanti/getting-started-with-fp-ts-applicative-1kb3)\n *\n * @example\n * import { ap, map, of } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * // a curried function with 3 input parameteres\n * const f = (s1: string) => (n: number) => (s2: string) => s1 + n + s2;\n *\n * // let's use `ap` to iterate `f` over an array for each input parameter\n * assert.deepStrictEqual(pipe([\"a\", \"b\"], map(f), ap([1, 2]), ap([\"\uD83D\uDE00\", \"\uD83D\uDE2B\", \"\uD83D\uDE0E\"])), [\n * \"a1\uD83D\uDE00\", \"a1\uD83D\uDE2B\", \"a1\uD83D\uDE0E\",\n * \"a2\uD83D\uDE00\", \"a2\uD83D\uDE2B\", \"a2\uD83D\uDE0E\",\n * \"b1\uD83D\uDE00\", \"b1\uD83D\uDE2B\", \"b1\uD83D\uDE0E\",\n * \"b2\uD83D\uDE00\", \"b2\uD83D\uDE2B\", \"b2\uD83D\uDE0E\",\n * ]);\n *\n * // given Array implements the Applicative interface with the `of` method,\n * // we can write exactly the same thing in a more symmetric way\n * // using `of` on `f` and `ap` on each array in input\n * assert.deepStrictEqual(\n * pipe(of(f), ap([\"a\", \"b\"]), ap([1, 2]), ap([\"\uD83D\uDE00\", \"\uD83D\uDE2B\", \"\uD83D\uDE0E\"])),\n * pipe([\"a\", \"b\"], map(f), ap([1, 2]), ap([\"\uD83D\uDE00\", \"\uD83D\uDE2B\", \"\uD83D\uDE0E\"]))\n * );\n *\n * @category Apply\n * @since 2.0.0\n */\nvar ap = function (fa) { return exports.chain(function (f) { return function_1.pipe(fa, exports.map(f)); }); };\nexports.ap = ap;\n/**\n * Composes computations in sequence, using the return value of one computation to\n * determine the next computation.\n *\n * In other words it takes a function `f` that produces an array from a single element of\n * the base type `A` and returns a new function which applies `f` to each element of the\n * input array (like [`map`](#map)) and, instead of returning an array of arrays, concatenates the\n * results into a single array (like [`flatten`](#flatten)).\n *\n * This is the `chain` component of the array `Monad`.\n *\n * @example\n * import { chain, map, replicate } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (n: number) => replicate(n, `${n}`);\n * assert.deepStrictEqual(pipe([1, 2, 3], map(f)), [[\"1\"], [\"2\", \"2\"], [\"3\", \"3\", \"3\"]]);\n * assert.deepStrictEqual(pipe([1, 2, 3], chain(f)), [\"1\", \"2\", \"2\", \"3\", \"3\", \"3\"]);\n *\n * @category Monad\n * @since 2.0.0\n */\nvar chain = function (f) { return function (ma) {\n return function_1.pipe(ma, exports.chainWithIndex(function (_, a) { return f(a); }));\n}; };\nexports.chain = chain;\n/**\n * Takes an array of arrays of `A` and flattens them into an array of `A`\n * by concatenating the elements of each array in order.\n *\n * Derivable from [`chain`](#chain).\n *\n * @example\n * import { flatten } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(flatten([[\"a\"], [\"b\", \"c\"], [\"d\", \"e\", \"f\"]]), [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"]);\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.flatten = \n/*#__PURE__*/\nexports.chain(function_1.identity);\n/**\n * Same as [`map`](#map), but the iterating function takes both the index and the value\n * of the element.\n *\n * @example\n * import { mapWithIndex } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (i: number, s: string) => `${s} - ${i}`;\n * assert.deepStrictEqual(pipe([\"a\", \"b\", \"c\"], mapWithIndex(f)), [\"a - 0\", \"b - 1\", \"c - 2\"]);\n *\n * @category FunctorWithIndex\n * @since 2.0.0\n */\nvar mapWithIndex = function (f) { return function (fa) {\n return fa.map(function (a, i) { return f(i, a); });\n}; };\nexports.mapWithIndex = mapWithIndex;\n/**\n * Maps an array with an iterating function that takes the index and the value of\n * each element and returns an `Option`. It keeps only the `Some` values discarding\n * the `None`s.\n *\n * Same as [`filterMap`](#filterMap), but with an iterating function which takes also\n * the index as input.\n *\n * @example\n * import { filterMapWithIndex } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n * import { option } from \"fp-ts\";\n *\n * const f = (i: number, s: string) => (i % 2 === 1 ? option.some(s.toUpperCase()) : option.none);\n * assert.deepStrictEqual(pipe([\"a\", \"no\", \"neither\", \"b\"], filterMapWithIndex(f)), [\"NO\", \"B\"]);\n *\n * @category FilterableWithIndex\n * @since 2.0.0\n */\nvar filterMapWithIndex = function (f) { return function (fa) {\n var out = [];\n for (var i = 0; i < fa.length; i++) {\n var optionB = f(i, fa[i]);\n if (_.isSome(optionB)) {\n out.push(optionB.value);\n }\n }\n return out;\n}; };\nexports.filterMapWithIndex = filterMapWithIndex;\n/**\n * Maps an array with an iterating function that returns an `Option`\n * and it keeps only the `Some` values discarding the `None`s.\n *\n * @example\n * import { filterMap } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n * import { option } from \"fp-ts\";\n *\n * const f = (s: string) => s.length === 1 ? option.some(s.toUpperCase()) : option.none;\n * assert.deepStrictEqual(pipe([\"a\", \"no\", \"neither\", \"b\"], filterMap(f)), [\"A\", \"B\"]);\n *\n * @category Filterable\n * @since 2.0.0\n */\nvar filterMap = function (f) {\n return exports.filterMapWithIndex(function (_, a) { return f(a); });\n};\nexports.filterMap = filterMap;\n/**\n * Compact an array of `Option`s discarding the `None` values and\n * keeping the `Some` values. It returns a new array containing the values of\n * the `Some` options.\n *\n * @example\n * import { compact } from 'fp-ts/Array'\n * import { option } from \"fp-ts\";\n *\n * assert.deepStrictEqual(compact([option.some(\"a\"), option.none, option.some(\"b\")]), [\"a\", \"b\"]);\n *\n * @category Compactable\n * @since 2.0.0\n */\nexports.compact = \n/*#__PURE__*/\nexports.filterMap(function_1.identity);\n/**\n * Separate an array of `Either`s into `Left`s and `Right`s, creating two new arrays:\n * one containing all the left values and one containing all the right values.\n *\n * @example\n * import { separate } from 'fp-ts/Array'\n * import { either } from \"fp-ts\";\n *\n * assert.deepStrictEqual(separate([either.right(\"r1\"), either.left(\"l1\"), either.right(\"r2\")]), {\n * left: [\"l1\"],\n * right: [\"r1\", \"r2\"],\n * });\n *\n * @category Compactable\n * @since 2.0.0\n */\nvar separate = function (fa) {\n var left = [];\n var right = [];\n for (var _i = 0, fa_1 = fa; _i < fa_1.length; _i++) {\n var e = fa_1[_i];\n if (e._tag === 'Left') {\n left.push(e.left);\n }\n else {\n right.push(e.right);\n }\n }\n return Separated_1.separated(left, right);\n};\nexports.separate = separate;\n/**\n * Given an iterating function that is a `Predicate` or a `Refinement`,\n * `filter` creates a new `Array` containing the elements of the original\n * `Array` for which the iterating function is `true`.\n *\n * @example\n * import { filter } from 'fp-ts/Array'\n * import { isString } from \"fp-ts/lib/string\";\n *\n * assert.deepStrictEqual(filter(isString)([\"a\", 1, {}, \"b\", 5]), [\"a\", \"b\"]);\n * assert.deepStrictEqual(filter((x:number) => x > 0)([-3, 1, -2, 5]), [1, 5]);\n *\n * @category Filterable\n * @since 2.0.0\n */\nvar filter = function (predicate) { return function (as) { return as.filter(predicate); }; };\nexports.filter = filter;\n/**\n * Given an iterating function that is a `Predicate` or a `Refinement`,\n * `partition` creates two new `Array`s: `right` containing the elements of the original\n * `Array` for which the iterating function is `true`, `left` containing the elements\n * for which it is false.\n *\n * @example\n * import { partition } from 'fp-ts/Array'\n * import { isString } from \"fp-ts/lib/string\";\n *\n * assert.deepStrictEqual(partition(isString)([\"a\", 1, {}, \"b\", 5]), { left: [1, {}, 5], right: [\"a\", \"b\"] });\n * assert.deepStrictEqual(partition((x: number) => x > 0)([-3, 1, -2, 5]), { left: [-3, -2], right: [1, 5] });\n *\n * @category Filterable\n * @since 2.0.0\n */\nvar partition = function (predicate) {\n return exports.partitionWithIndex(function (_, a) { return predicate(a); });\n};\nexports.partition = partition;\n/**\n * Same as [`partition`](#partition), but passing also the index to the iterating function.\n *\n * @example\n * import { partitionWithIndex } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(partitionWithIndex((index, x: number) => index < 3 && x > 0)([-2, 5, 6, 7]), {\n * left: [-2, 7],\n * right: [5, 6],\n * });\n *\n * @category FilterableWithIndex\n * @since 2.0.0\n */\nvar partitionWithIndex = function (predicateWithIndex) { return function (as) {\n var left = [];\n var right = [];\n for (var i = 0; i < as.length; i++) {\n var b = as[i];\n if (predicateWithIndex(i, b)) {\n right.push(b);\n }\n else {\n left.push(b);\n }\n }\n return Separated_1.separated(left, right);\n}; };\nexports.partitionWithIndex = partitionWithIndex;\n/**\n * Given an iterating function that returns an `Either`,\n * `partitionMap` applies the iterating function to each element and it creates two `Array`s:\n * `right` containing the values of `Right` results, `left` containing the values of `Left` results.\n *\n * @example\n * import { partitionMap } from 'fp-ts/Array'\n * import { Either, left, right } from \"fp-ts/lib/Either\";\n *\n * const upperIfString = (x: B): Either =>\n * typeof x === \"string\" ? right(x.toUpperCase()) : left(x);\n * assert.deepStrictEqual(partitionMap(upperIfString)([-2, \"hello\", 6, 7, \"world\"]), {\n * left: [-2, 6, 7],\n * right: [ 'HELLO', 'WORLD' ],\n * });\n *\n * @category Filterable\n * @since 2.0.0\n */\nvar partitionMap = function (f) { return exports.partitionMapWithIndex(function (_, a) { return f(a); }); };\nexports.partitionMap = partitionMap;\n/**\n * Same as [`partitionMap`](#partitionMap), but passing also the index to the iterating function.\n *\n * @example\n * import { partitionMapWithIndex } from 'fp-ts/Array'\n * import { Either, left, right } from \"fp-ts/lib/Either\";\n *\n * const upperIfStringBefore3 = (index: number, x: B): Either =>\n * index < 3 && typeof x === \"string\" ? right(x.toUpperCase()) : left(x);\n * assert.deepStrictEqual(partitionMapWithIndex(upperIfStringBefore3)([-2, \"hello\", 6, 7, \"world\"]), {\n * left: [-2, 6, 7, \"world\"],\n * right: [\"HELLO\"],\n * });\n *\n * @category FilterableWithIndex\n * @since 2.0.0\n */\nvar partitionMapWithIndex = function (f) { return function (fa) {\n var left = [];\n var right = [];\n for (var i = 0; i < fa.length; i++) {\n var e = f(i, fa[i]);\n if (e._tag === 'Left') {\n left.push(e.left);\n }\n else {\n right.push(e.right);\n }\n }\n return Separated_1.separated(left, right);\n}; };\nexports.partitionMapWithIndex = partitionMapWithIndex;\n/**\n * Less strict version of [`alt`](#alt), it can concatenate `Array`s of different base types.\n *\n * @example\n * import { altW } from 'fp-ts/Array';\n *\n * assert.deepStrictEqual(altW(() => [2, 3, 4])([\"a\"]), [\"a\", 2, 3, 4]);\n *\n * @category Alt\n * @since 2.9.0\n */\nvar altW = function (that) { return function (fa) { return fa.concat(that()); }; };\nexports.altW = altW;\n/**\n * `alt` implements the `Alt` iterface by concatenation of `Array`s.\n * `Alt` interface is similar to `Semigroup` for higher-kinded types such\n * as `Array` and `Option`: the example below shows both `Alt`'s `alt` and\n * `Semigroup`'s `concat` functions.\n *\n * @example\n * import { alt, concat } from 'fp-ts/Array';\n *\n * assert.deepStrictEqual(alt(() => [2, 3, 4])([1]), [1, 2, 3, 4]);\n * assert.deepStrictEqual(concat([2, 3, 4])([1]), [1, 2, 3, 4]);\n *\n * @category Alt\n * @since 2.0.0\n */\nexports.alt = exports.altW;\n/**\n * Same as [`filter`](#filter), but passing also the index to the iterating function.\n *\n * @example\n * import { filterWithIndex } from 'fp-ts/Array';\n *\n * const f = (index: number, x: number) => x > 0 && index <= 2;\n * assert.deepStrictEqual(filterWithIndex(f)([-3, 1, -2, 5]), [1]);\n *\n * @category FilterableWithIndex\n * @since 2.0.0\n */\nvar filterWithIndex = function (predicateWithIndex) { return function (as) {\n return as.filter(function (b, i) { return predicateWithIndex(i, b); });\n}; };\nexports.filterWithIndex = filterWithIndex;\n/**\n * Given an iterating function that takes `Array` as input, `extend` returns\n * an array containing the results of the iterating function applied to the whole input\n * `Array`, then to the input `Array` without the first element, then to the input\n * `Array` without the first two elements, etc.\n *\n * @example\n * import { extend } from 'fp-ts/Array'\n *\n * const f = (a: string[]) => a.join(\",\");\n * assert.deepStrictEqual(extend(f)([\"a\", \"b\", \"c\"]), [\"a,b,c\", \"b,c\", \"c\"]);\n *\n * @category Extend\n * @since 2.0.0\n */\nvar extend = function (f) { return function (wa) {\n return wa.map(function (_, i) { return f(wa.slice(i)); });\n}; };\nexports.extend = extend;\n/**\n * `duplicate` returns an array containing the whole input `Array`,\n * then to the input `Array` dropping the first element, then to the input\n * `Array` dropping the first two elements, etc.\n * Derivable from `Extend`.\n *\n * @example\n * import { duplicate } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(duplicate([\"a\", \"b\", \"c\"]), [[\"a\", \"b\", \"c\"], [\"b\", \"c\"], [\"c\"]]);\n *\n * @category combinators\n * @since 2.0.0\n */\nexports.duplicate = \n/*#__PURE__*/\nexports.extend(function_1.identity);\n/**\n * Map and fold an `Array`.\n * Map the `Array` passing each value to the iterating function.\n * Then fold the results using the provided `Monoid`.\n *\n * @example\n * import { foldMap } from 'fp-ts/Array'\n *\n * const monoid = { concat: (a: string, b: string) => a + b, empty: \"\" };\n * const f = (s: string) => s.toUpperCase()\n * assert.deepStrictEqual(foldMap(monoid)(f)([\"a\", \"b\", \"c\"]), \"ABC\");\n *\n * @category Foldable\n * @since 2.0.0\n */\nexports.foldMap = RA.foldMap;\n/**\n * Same as [`foldMap`](#foldMap) but passing also the index to the iterating function.\n *\n * @example\n * import { foldMapWithIndex } from 'fp-ts/Array'\n *\n * const monoid = { concat: (a: string, b: string) => a + b, empty: \"\" };\n * const f = (index:number, s: string) => `${s.toUpperCase()}(${index})`\n * assert.deepStrictEqual(foldMapWithIndex(monoid)(f)([\"a\", \"b\", \"c\"]), \"A(0)B(1)C(2)\");\n *\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexports.foldMapWithIndex = RA.foldMapWithIndex;\n/**\n * Reduces an `Array`.\n *\n * `reduce` executes the supplied iterating function on each element of the array,\n * in order, passing in the element and the return value from the calculation on the preceding element.\n *\n * The first time that the iterating function is called there is no \"return value of the\n * previous calculation\", the initial value is used in its place.\n *\n * @example\n * import { reduce } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(reduce(5, (acc: number, cur: number) => acc * cur)([2, 3]), 5 * 2 * 3);\n *\n * @category Foldable\n * @since 2.0.0\n */\nexports.reduce = RA.reduce;\n/**\n * Same as [`reduce`](#reduce) but passing also the index to the iterating function.\n *\n * @example\n * import { reduceWithIndex } from 'fp-ts/Array'\n *\n * const f = (index: number, acc: string, cur: unknown) =>\n * acc + (typeof cur === \"string\" ? cur.toUpperCase() + index : \"\");\n * assert.deepStrictEqual(reduceWithIndex(\"\", f)([2, \"a\", \"b\", null]), \"A1B2\");\n *\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexports.reduceWithIndex = RA.reduceWithIndex;\n/**\n * Same as [`reduce`](#reduce) but applied from the end to the start.\n *\n * *Note*: the iterating function in this case takes the accumulator as the last argument.\n *\n * @example\n * import { reduceRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(reduceRight(\"\", (cur: string, acc: string) => acc + cur)([\"a\", \"b\", \"c\"]), \"cba\");\n *\n * @category Foldable\n * @since 2.0.0\n */\nexports.reduceRight = RA.reduceRight;\n/**\n * Same as [`reduceRight`](#reduceRight) but passing also the index to the iterating function.\n *\n * @example\n * import { reduceRightWithIndex } from 'fp-ts/Array'\n *\n * const f = (index: number, cur: unknown, acc: string) =>\n * acc + (typeof cur === \"string\" ? cur.toUpperCase() + index : \"\");\n * assert.deepStrictEqual(reduceRightWithIndex(\"\", f)([2, \"a\", \"b\", null]), \"B2A1\");\n *\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexports.reduceRightWithIndex = RA.reduceRightWithIndex;\n/**\n * Given an iterating function that returns a `HKT` (higher kinded type), `traverse`\n * applies the iterating function to each element of the `Array` and then [`sequence`](#sequence)-s\n * the results using the provided `Applicative`.\n *\n * E.g. suppose you have an `Array` and you want to format each element with a function\n * that returns a result or an error as `f = (a: A) => Either`, using `traverse`\n * you can apply `f` to all elements and directly obtain as a result an `Either>`\n * i.e. an `Array` if all the results are `B`, or an `Error` if some of the results\n * are `Error`s.\n *\n * @example\n * import { traverse } from 'fp-ts/Array'\n * import { Applicative, left, right } from \"fp-ts/lib/Either\";\n *\n * const f = (x: unknown) =>\n * typeof x === \"string\" ? right(x.toUpperCase()) : left(new Error(\"not a string\"));\n * assert.deepStrictEqual(traverse(Applicative)(f)([\"a\", \"b\"]), right([\"A\", \"B\"]));\n * assert.deepStrictEqual(traverse(Applicative)(f)([\"a\", 5]), left(new Error(\"not a string\")));\n *\n * @category Traversable\n * @since 2.6.3\n */\nvar traverse = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (f) { return traverseWithIndexF(function (_, a) { return f(a); }); };\n};\nexports.traverse = traverse;\n/**\n * `sequence` takes an `Array` where elements are `HKT` (higher kinded type) and,\n * using an applicative of that `HKT`, returns an `HKT` of `Array`.\n * E.g. it can turn an `Array>` into an `Either>`.\n *\n * `sequence` requires an `Applicative` of the `HKT` you are targeting, e.g. to turn an\n * `Array>` into an `Either>`, it needs an\n * `Applicative` for `Either`, to to turn an `Array>` into an `Option>`,\n * it needs an `Applicative` for `Option`.\n *\n * @example\n * import { sequence } from 'fp-ts/Array'\n * import { Applicative, left, right } from \"fp-ts/lib/Either\";\n *\n * assert.deepStrictEqual(sequence(Applicative)([right(\"a\"), right(\"b\")]), right([\"a\", \"b\"]));\n * assert.deepStrictEqual(\n * sequence(Applicative)([right(\"a\"), left(new Error(\"not a string\"))]),\n * left(new Error(\"not a string\"))\n * );\n *\n * @category Traversable\n * @since 2.6.3\n */\nvar sequence = function (F) { return function (ta) {\n return _reduce(ta, F.of(exports.zero()), function (fas, fa) {\n return F.ap(F.map(fas, function (as) { return function (a) { return function_1.pipe(as, exports.append(a)); }; }), fa);\n });\n}; };\nexports.sequence = sequence;\n/**\n * Same as [`traverse`](#traverse) but passing also the index to the iterating function.\n *\n * @example\n * import { traverseWithIndex } from 'fp-ts/Array'\n * import { Applicative, left, right } from \"fp-ts/lib/Either\";\n *\n * const f = (index:number, x:unknown) =>\n * typeof x === \"string\" ? right(x.toUpperCase() + index) : left(new Error(\"not a string\"));\n * assert.deepStrictEqual(traverseWithIndex(Applicative)(f)([\"a\", \"b\"]), right([\"A0\", \"B1\"]));\n * assert.deepStrictEqual(traverseWithIndex(Applicative)(f)([\"a\", 5]), left(new Error(\"not a string\")));\n *\n * @category TraversableWithIndex\n * @since 2.6.3\n */\nvar traverseWithIndex = function (F) { return function (f) {\n return exports.reduceWithIndex(F.of(exports.zero()), function (i, fbs, a) {\n return F.ap(F.map(fbs, function (bs) { return function (b) { return function_1.pipe(bs, exports.append(b)); }; }), f(i, a));\n });\n}; };\nexports.traverseWithIndex = traverseWithIndex;\n/**\n * @category Witherable\n * @since 2.6.5\n */\nvar wither = function (F) {\n var _witherF = _wither(F);\n return function (f) { return function (fa) { return _witherF(fa, f); }; };\n};\nexports.wither = wither;\n/**\n * @category Witherable\n * @since 2.6.5\n */\nvar wilt = function (F) {\n var _wiltF = _wilt(F);\n return function (f) { return function (fa) { return _wiltF(fa, f); }; };\n};\nexports.wilt = wilt;\n/**\n * `unfold` takes a function `f` which returns an `Option` of a tuple containing an outcome\n * value and an input for the following iteration.\n * `unfold` applies `f` to the initial value `b` and then recursively to the second\n * element of the tuple contained in the returned `option` of the previous\n * calculation until `f` returns `Option.none`.\n *\n * @example\n * import { unfold } from 'fp-ts/Array'\n * import { option } from 'fp-ts'\n *\n * const f = (n: number) => {\n * if (n <= 0) return option.none;\n * const returnValue = n * 2;\n * const inputForNextRound = n - 1;\n * return option.some([returnValue, inputForNextRound] as const);\n * };\n * assert.deepStrictEqual(unfold(5, f), [10, 8, 6, 4, 2]);\n *\n * @category Unfoldable\n * @since 2.6.6\n */\nvar unfold = function (b, f) {\n var out = [];\n var bb = b;\n while (true) {\n var mt = f(bb);\n if (_.isSome(mt)) {\n var _a = mt.value, a = _a[0], b_1 = _a[1];\n out.push(a);\n bb = b_1;\n }\n else {\n break;\n }\n }\n return out;\n};\nexports.unfold = unfold;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.0.0\n */\nexports.URI = 'Array';\n/**\n * `getShow` makes a `Show` for an `Array` from a `Show` for\n * an `A`.\n *\n * @example\n * import { getShow } from 'fp-ts/Array'\n *\n * const numShow = { show: (n: number) => (n >= 0 ? `${n}` : `(${-n})`) };\n * assert.deepStrictEqual(getShow(numShow).show([-2, -1, 0, 1]), \"[(2), (1), 0, 1]\");\n *\n * @category instances\n * @since 2.0.0\n */\nexports.getShow = RA.getShow;\n/**\n * Get a `Semigroup` based on the concatenation of `Array`s.\n * See also [`getMonoid`](#getMonoid).\n *\n * @example\n * import { getSemigroup } from 'fp-ts/Array'\n *\n * const S = getSemigroup();\n * assert.deepStrictEqual(S.concat([1, 2], [2, 3]), [1, 2, 2, 3]);\n *\n * @category instances\n * @since 2.10.0\n */\nvar getSemigroup = function () { return ({\n concat: function (first, second) { return first.concat(second); }\n}); };\nexports.getSemigroup = getSemigroup;\n/**\n * Returns a `Monoid` for `Array` based on the concatenation of `Array`s.\n *\n * @example\n * import { getMonoid } from 'fp-ts/Array'\n *\n * const M = getMonoid()\n * assert.deepStrictEqual(M.concat([1, 2], [3, 4]), [1, 2, 3, 4])\n *\n * @category instances\n * @since 2.0.0\n */\nvar getMonoid = function () { return ({\n concat: exports.getSemigroup().concat,\n empty: []\n}); };\nexports.getMonoid = getMonoid;\n/**\n * Derives an `Eq` over the `Array` of a given element type from the `Eq` of that type. The derived `Eq` defines two\n * arrays as equal if all elements of both arrays are compared equal pairwise with the given `E`. In case of arrays of\n * different lengths, the result is non equality.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { getEq } from 'fp-ts/Array'\n *\n * const E = getEq(S.Eq)\n * assert.strictEqual(E.equals(['a', 'b'], ['a', 'b']), true)\n * assert.strictEqual(E.equals(['a'], []), false)\n *\n * @category instances\n * @since 2.0.0\n */\nexports.getEq = RA.getEq;\n/**\n * Derives an `Ord` over the `Array` of a given element type from the `Ord` of that type. The ordering between two such\n * arrays is equal to: the first non equal comparison of each arrays elements taken pairwise in increasing order, in\n * case of equality over all the pairwise elements; the longest array is considered the greatest, if both arrays have\n * the same length, the result is equality.\n *\n * @example\n * import { getOrd } from 'fp-ts/Array'\n * import * as S from 'fp-ts/string'\n *\n * const O = getOrd(S.Ord)\n * assert.strictEqual(O.compare(['b'], ['a']), 1)\n * assert.strictEqual(O.compare(['a'], ['a']), 0)\n * assert.strictEqual(O.compare(['a'], ['b']), -1)\n *\n * @category instances\n * @since 2.0.0\n */\nexports.getOrd = RA.getOrd;\n/**\n * Get a `Semigroup` based on the union of the elements of `Array`s.\n * Elements which equal according to the provided `Eq` are included\n * only once in the result.\n * See also [`getUnionMonoid`](#getUnionMonoid).\n *\n * @example\n * import { getUnionSemigroup } from 'fp-ts/Array';\n * import { Eq } from 'fp-ts/number';\n *\n * const S = getUnionSemigroup(Eq);\n * assert.deepStrictEqual(S.concat([1, 2], [2, 3]), [1, 2, 3]);\n *\n * @category instances\n * @since 2.11.0\n */\nvar getUnionSemigroup = function (E) {\n var unionE = union(E);\n return {\n concat: function (first, second) { return unionE(second)(first); }\n };\n};\nexports.getUnionSemigroup = getUnionSemigroup;\n/**\n * Get a `Monoid` based on the union of the elements of `Array`s.\n * Elements which equal according to the provided `Eq` are included\n * only once in the result.\n *\n * @example\n * import { getUnionMonoid } from 'fp-ts/Array'\n * import { Eq } from 'fp-ts/number';\n *\n * const M = getUnionMonoid(Eq);\n * assert.deepStrictEqual(M.concat([1, 2], [2, 3]), [1, 2, 3]);\n * assert.deepStrictEqual(M.empty,[]);\n *\n * @category instances\n * @since 2.11.0\n */\nvar getUnionMonoid = function (E) { return ({\n concat: exports.getUnionSemigroup(E).concat,\n empty: []\n}); };\nexports.getUnionMonoid = getUnionMonoid;\n/**\n * Get a `Semigroup` based on the intersection of the elements of `Array`s.\n * Only elements present in the two arrays which are equal according to the\n * provided `Eq` are included in the result.\n *\n * @example\n * import { getIntersectionSemigroup } from 'fp-ts/Array'\n * import { Eq } from 'fp-ts/number';\n *\n * const S = getIntersectionSemigroup(Eq);\n * assert.deepStrictEqual(S.concat([1, 2], [2, 3]), [2]);\n *\n * @category instances\n * @since 2.11.0\n */\nvar getIntersectionSemigroup = function (E) {\n var intersectionE = intersection(E);\n return {\n concat: function (first, second) { return intersectionE(second)(first); }\n };\n};\nexports.getIntersectionSemigroup = getIntersectionSemigroup;\n/**\n * Get a `Magma` for `Array` where the `concat` function is the differnce between\n * the first and the second array, i.e. the result contains all the elements of the\n * first array for which their is no equal element in the second array according\n * to the `Eq` provided.\n *\n *\n * @example\n * import { getDifferenceMagma } from 'fp-ts/Array'\n * import { Eq } from 'fp-ts/number';\n *\n * const S = getDifferenceMagma(Eq);\n * assert.deepStrictEqual(S.concat([1, 2], [2, 3]), [1]);\n *\n * @category instances\n * @since 2.11.0\n */\nvar getDifferenceMagma = function (E) {\n var differenceE = difference(E);\n return {\n concat: function (first, second) { return differenceE(second)(first); }\n };\n};\nexports.getDifferenceMagma = getDifferenceMagma;\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Functor = {\n URI: exports.URI,\n map: _map\n};\n/**\n * Given an input an `Array` of functions, `flap` returns an `Array` containing\n * the results of applying each function to the given input.\n *\n * @example\n * import { flap } from 'fp-ts/Array'\n *\n * const funs = [\n * (n: number) => `Double: ${n * 2}`,\n * (n: number) => `Triple: ${n * 3}`,\n * (n: number) => `Square: ${n * n}`,\n * ];\n * assert.deepStrictEqual(flap(4)(funs), ['Double: 8', 'Triple: 12', 'Square: 16']);\n *\n * @category combinators\n * @since 2.10.0\n */\nexports.flap = \n/*#__PURE__*/\nFunctor_1.flap(exports.Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Pointed = {\n URI: exports.URI,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FunctorWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Apply = {\n URI: exports.URI,\n map: _map,\n ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apFirst = \n/*#__PURE__*/\nApply_1.apFirst(exports.Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apSecond = \n/*#__PURE__*/\nApply_1.apSecond(exports.Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Applicative = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Chain = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.0.0\n */\nexports.chainFirst = \n/*#__PURE__*/\nChain_1.chainFirst(exports.Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Monad = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of,\n chain: _chain\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Unfoldable = {\n URI: exports.URI,\n unfold: exports.unfold\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Alt = {\n URI: exports.URI,\n map: _map,\n alt: _alt\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.Zero = {\n URI: exports.URI,\n zero: exports.zero\n};\n/**\n * @category constructors\n * @since 2.11.0\n */\nexports.guard = \n/*#__PURE__*/\nZero_1.guard(exports.Zero, exports.Pointed);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Alternative = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of,\n alt: _alt,\n zero: exports.zero\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Extend = {\n URI: exports.URI,\n map: _map,\n extend: _extend\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Compactable = {\n URI: exports.URI,\n compact: exports.compact,\n separate: exports.separate\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Filterable = {\n URI: exports.URI,\n map: _map,\n compact: exports.compact,\n separate: exports.separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FilterableWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n compact: exports.compact,\n separate: exports.separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n partitionMapWithIndex: _partitionMapWithIndex,\n partitionWithIndex: _partitionWithIndex,\n filterMapWithIndex: _filterMapWithIndex,\n filterWithIndex: _filterWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Foldable = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FoldableWithIndex = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Traversable = {\n URI: exports.URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.TraversableWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverse: _traverse,\n sequence: exports.sequence,\n traverseWithIndex: _traverseWithIndex\n};\nvar _wither = \n/*#__PURE__*/\nWitherable_1.witherDefault(exports.Traversable, exports.Compactable);\nvar _wilt = \n/*#__PURE__*/\nWitherable_1.wiltDefault(exports.Traversable, exports.Compactable);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Witherable = {\n URI: exports.URI,\n map: _map,\n compact: exports.compact,\n separate: exports.separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n wither: _wither,\n wilt: _wilt\n};\n/**\n * @category ChainRec\n * @since 2.11.0\n */\nexports.chainRecDepthFirst = RA.chainRecDepthFirst;\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.ChainRecDepthFirst = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain,\n chainRec: _chainRecDepthFirst\n};\n/**\n * @category ChainRec\n * @since 2.11.0\n */\nexports.chainRecBreadthFirst = RA.chainRecBreadthFirst;\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.ChainRecBreadthFirst = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain,\n chainRec: _chainRecBreadthFirst\n};\n/**\n * Filter values inside a context.\n *\n * @since 2.11.0\n */\nexports.filterE = \n/*#__PURE__*/\nWitherable_1.filterE(exports.Witherable);\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.FromEither = {\n URI: exports.URI,\n fromEither: exports.fromEither\n};\n/**\n * @category combinators\n * @since 2.11.0\n */\nexports.fromEitherK = \n/*#__PURE__*/\nFromEither_1.fromEitherK(exports.FromEither);\n// -------------------------------------------------------------------------------------\n// unsafe\n// -------------------------------------------------------------------------------------\n/**\n * @category unsafe\n * @since 2.0.0\n */\nexports.unsafeInsertAt = NEA.unsafeInsertAt;\n/**\n * @category unsafe\n * @since 2.0.0\n */\nvar unsafeUpdateAt = function (i, a, as) {\n return exports.isNonEmpty(as) ? NEA.unsafeUpdateAt(i, a, as) : [];\n};\nexports.unsafeUpdateAt = unsafeUpdateAt;\n/**\n * @category unsafe\n * @since 2.0.0\n */\nvar unsafeDeleteAt = function (i, as) {\n var xs = as.slice();\n xs.splice(i, 1);\n return xs;\n};\nexports.unsafeDeleteAt = unsafeDeleteAt;\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * `every` tells if the provided predicate holds true for every element in the `Array`.\n *\n * @example\n * import { every } from 'fp-ts/Array'\n *\n * assert.equal(every((x: number) => x >= 0)([1, 2, 3]), true);\n * assert.equal(every((x: number) => x >= 0)([-1, 2, 3]), false);\n *\n * @since 2.9.0\n */\nexports.every = RA.every;\n/**\n * `some` tells if the provided predicate holds true at least for one element in the `Array`.\n *\n * @example\n * import { some } from 'fp-ts/Array'\n *\n * assert.equal(some((x: number) => x >= 0)([1, 2, 3]), true);\n * assert.equal(some((x: number) => x >= 10)([1, 2, 3]), false);\n *\n * @since 2.9.0\n */\nvar some = function (predicate) { return function (as) { return as.some(predicate); }; };\nexports.some = some;\n/**\n * Alias of [`some`](#some)\n *\n * @since 2.11.0\n */\nexports.exists = exports.some;\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.9.0\n */\nexports.Do = \n/*#__PURE__*/\nexports.of(_.emptyRecord);\n/**\n * @since 2.8.0\n */\nexports.bindTo = \n/*#__PURE__*/\nFunctor_1.bindTo(exports.Functor);\n/**\n * @since 2.8.0\n */\nexports.bind = \n/*#__PURE__*/\nChain_1.bind(exports.Chain);\n// -------------------------------------------------------------------------------------\n// pipeable sequence S\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.8.0\n */\nexports.apS = \n/*#__PURE__*/\nApply_1.apS(exports.Apply);\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n// tslint:disable: deprecation\n/**\n * Use `NonEmptyArray` module instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nexports.range = NEA.range;\n/**\n * Use a new `[]` instead.\n *\n * @since 2.0.0\n * @deprecated\n */\nexports.empty = [];\n/**\n * Use `prepend` instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nexports.cons = NEA.cons;\n/**\n * Use `append` instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nexports.snoc = NEA.snoc;\n/**\n * Use `prependAll` instead\n *\n * @category combinators\n * @since 2.9.0\n * @deprecated\n */\nexports.prependToAll = exports.prependAll;\n/**\n * Use small, specific instances instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.array = {\n URI: exports.URI,\n compact: exports.compact,\n separate: exports.separate,\n map: _map,\n ap: _ap,\n of: exports.of,\n chain: _chain,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n mapWithIndex: _mapWithIndex,\n partitionMapWithIndex: _partitionMapWithIndex,\n partitionWithIndex: _partitionWithIndex,\n filterMapWithIndex: _filterMapWithIndex,\n filterWithIndex: _filterWithIndex,\n alt: _alt,\n zero: exports.zero,\n unfold: exports.unfold,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex,\n extend: _extend,\n wither: _wither,\n wilt: _wilt\n};\n", "/**\n * @license Fraction.js v4.2.0 05/03/2022\n * https://www.xarg.org/2014/03/rational-numbers-in-javascript/\n *\n * Copyright (c) 2021, Robert Eisele (robert@xarg.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * [ n => , d => ]\n *\n * Integer form\n * - Single integer value\n *\n * Double form\n * - Single double value\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n *\n * var f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n(function(root) {\n\n \"use strict\";\n\n // Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n // Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n // If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\n var MAX_CYCLE_LEN = 2000;\n\n // Parsed data to avoid calling \"new\" all the time\n var P = {\n \"s\": 1,\n \"n\": 0,\n \"d\": 1\n };\n\n function assign(n, s) {\n\n if (isNaN(n = parseInt(n, 10))) {\n throw Fraction['InvalidParameter'];\n }\n return n * s;\n }\n\n // Creates a new Fraction internally without the need of the bulky constructor\n function newFraction(n, d) {\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n var f = Object.create(Fraction.prototype);\n f[\"s\"] = n < 0 ? -1 : 1;\n\n n = n < 0 ? -n : n;\n\n var a = gcd(n, d);\n\n f[\"n\"] = n / a;\n f[\"d\"] = d / a;\n return f;\n }\n\n function factorize(num) {\n\n var factors = {};\n\n var n = num;\n var i = 2;\n var s = 4;\n\n while (s <= n) {\n\n while (n % i === 0) {\n n/= i;\n factors[i] = (factors[i] || 0) + 1;\n }\n s+= 1 + 2 * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || 0) + 1;\n } else {\n factors[num] = (factors[num] || 0) + 1;\n }\n return factors;\n }\n\n var parse = function(p1, p2) {\n\n var n = 0, d = 1, s = 1;\n var v = 0, w = 0, x = 0, y = 1, z = 1;\n\n var A = 0, B = 1;\n var C = 1, D = 1;\n\n var N = 10000000;\n var M;\n\n if (p1 === undefined || p1 === null) {\n /* void */\n } else if (p2 !== undefined) {\n n = p1;\n d = p2;\n s = n * d;\n\n if (n % 1 !== 0 || d % 1 !== 0) {\n throw Fraction['NonIntegerParameter'];\n }\n\n } else\n switch (typeof p1) {\n\n case \"object\":\n {\n if (\"d\" in p1 && \"n\" in p1) {\n n = p1[\"n\"];\n d = p1[\"d\"];\n if (\"s\" in p1)\n n*= p1[\"s\"];\n } else if (0 in p1) {\n n = p1[0];\n if (1 in p1)\n d = p1[1];\n } else {\n throw Fraction['InvalidParameter'];\n }\n s = n * d;\n break;\n }\n case \"number\":\n {\n if (p1 < 0) {\n s = p1;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = p1;\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n if (p1 >= 1) {\n z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));\n p1/= z;\n }\n\n // Using Farey Sequences\n // http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/\n\n while (B <= N && D <= N) {\n M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A+= C;\n B+= D;\n } else {\n C+= A;\n D+= B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n*= z;\n } else if (isNaN(p1) || isNaN(p2)) {\n d = n = NaN;\n }\n break;\n }\n case \"string\":\n {\n B = p1.match(/\\d+|./g);\n\n if (B === null)\n throw Fraction['InvalidParameter'];\n\n if (B[A] === '-') {// Check for minus sign at the beginning\n s = -1;\n A++;\n } else if (B[A] === '+') {// Check for plus sign at the beginning\n A++;\n }\n\n if (B.length === A + 1) { // Check if it's just a simple number \"1234\"\n w = assign(B[A++], s);\n } else if (B[A + 1] === '.' || B[A] === '.') { // Check if it's a decimal number\n\n if (B[A] !== '.') { // Handle 0.5 and .5\n v = assign(B[A++], s);\n }\n A++;\n\n // Check for decimal places\n if (A + 1 === B.length || B[A + 1] === '(' && B[A + 3] === ')' || B[A + 1] === \"'\" && B[A + 3] === \"'\") {\n w = assign(B[A], s);\n y = Math.pow(10, B[A].length);\n A++;\n }\n\n // Check for repeating places\n if (B[A] === '(' && B[A + 2] === ')' || B[A] === \"'\" && B[A + 2] === \"'\") {\n x = assign(B[A + 1], s);\n z = Math.pow(10, B[A + 1].length) - 1;\n A+= 3;\n }\n\n } else if (B[A + 1] === '/' || B[A + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(B[A], s);\n y = assign(B[A + 2], 1);\n A+= 3;\n } else if (B[A + 3] === '/' && B[A + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(B[A], s);\n w = assign(B[A + 2], s);\n y = assign(B[A + 4], 1);\n A+= 5;\n }\n\n if (B.length <= A) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n break;\n }\n\n /* Fall through on error */\n }\n default:\n throw Fraction['InvalidParameter'];\n }\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n P[\"s\"] = s < 0 ? -1 : 1;\n P[\"n\"] = Math.abs(n);\n P[\"d\"] = Math.abs(d);\n };\n\n function modpow(b, e, m) {\n\n var r = 1;\n for (; e > 0; b = (b * b) % m, e >>= 1) {\n\n if (e & 1) {\n r = (r * b) % m;\n }\n }\n return r;\n }\n\n\n function cycleLen(n, d) {\n\n for (; d % 2 === 0;\n d/= 2) {\n }\n\n for (; d % 5 === 0;\n d/= 5) {\n }\n\n if (d === 1) // Catch non-cyclic numbers\n return 0;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n var rem = 10 % d;\n var t = 1;\n\n for (; rem !== 1; t++) {\n rem = rem * 10 % d;\n\n if (t > MAX_CYCLE_LEN)\n return 0; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return t;\n }\n\n\n function cycleStart(n, d, len) {\n\n var rem1 = 1;\n var rem2 = modpow(10, len, d);\n\n for (var t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return t;\n\n rem1 = rem1 * 10 % d;\n rem2 = rem2 * 10 % d;\n }\n return 0;\n }\n\n function gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a%= b;\n if (!a)\n return b;\n b%= a;\n if (!b)\n return a;\n }\n };\n\n /**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\n function Fraction(a, b) {\n\n parse(a, b);\n\n if (this instanceof Fraction) {\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse variable a\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n } else {\n return newFraction(P['s'] * P['n'], P['d']);\n }\n }\n\n Fraction['DivisionByZero'] = new Error(\"Division by Zero\");\n Fraction['InvalidParameter'] = new Error(\"Invalid argument\");\n Fraction['NonIntegerParameter'] = new Error(\"Parameters must be integer\");\n\n Fraction.prototype = {\n\n \"s\": 1,\n \"n\": 0,\n \"d\": 1,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function() {\n\n return newFraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function() {\n\n return newFraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function() {\n return newFraction(this['s'] * this['n'], this['d']);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n **/\n \"mod\": function(a, b) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return new Fraction(NaN);\n }\n\n if (a === undefined) {\n return newFraction(this[\"s\"] * this[\"n\"] % this[\"d\"], 1);\n }\n\n parse(a, b);\n if (0 === P[\"n\"] && 0 === this[\"d\"]) {\n throw Fraction['DivisionByZero'];\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return newFraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function(a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return newFraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function(a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === 0 && this[\"n\"] === 0) {\n return newFraction(0, 1);\n }\n return newFraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.ceil(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.floor(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational numbers\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.round(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function() {\n\n return newFraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some rational exponent, if possible\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function(a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === 1) {\n\n if (P['s'] < 0) {\n return newFraction(Math.pow(this['s'] * this[\"d\"], P['n']), Math.pow(this[\"n\"], P['n']));\n } else {\n return newFraction(Math.pow(this['s'] * this[\"n\"], P['n']), Math.pow(this[\"d\"], P['n']));\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // <=> (-1)^(c/d) * (a/b)^(c/d) = x\n // <=> (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x # rotate 1 by 180\u00B0\n // <=> (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula in Q ( https://proofwiki.org/wiki/De_Moivre%27s_Formula/Rational_Index )\n // From which follows that only for c=0 the root is non-complex. c/d is a reduced fraction, so that sin(c/dpi)=0 occurs for d=1, which is handled by our trivial case.\n if (this['s'] < 0) return null;\n\n // Now prime factor n and d\n var N = factorize(this['n']);\n var D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n var n = 1;\n var d = 1;\n for (var k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = 0;\n break;\n }\n N[k]*= P['n'];\n\n if (N[k] % P['d'] === 0) {\n N[k]/= P['d'];\n } else return null;\n n*= Math.pow(k, N[k]);\n }\n\n for (var k in D) {\n if (k === '1') continue;\n D[k]*= P['n'];\n\n if (D[k] % P['d'] === 0) {\n D[k]/= P['d'];\n } else return null;\n d*= Math.pow(k, D[k]);\n }\n\n if (P['s'] < 0) {\n return newFraction(d, n);\n }\n return newFraction(n, d);\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function(a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"]; // Same as compare() === 0\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"compare\": function(a, b) {\n\n parse(a, b);\n var t = (this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"]);\n return (0 < t) - (t < 0);\n },\n\n \"simplify\": function(eps) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return this;\n }\n\n eps = eps || 0.001;\n\n var thisABS = this['abs']();\n var cont = thisABS['toContinued']();\n\n for (var i = 1; i < cont.length; i++) {\n\n var s = newFraction(cont[i - 1], 1);\n for (var k = i - 2; k >= 0; k--) {\n s = s['inverse']()['add'](cont[k]);\n }\n\n if (s['sub'](thisABS)['abs']().valueOf() < eps) {\n return s['mul'](this['s']);\n }\n }\n return this;\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function(a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function() {\n\n return this[\"s\"] * this[\"n\"] / this[\"d\"];\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction(true) => \"4 1/3\"\n **/\n 'toFraction': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n str+= \" \";\n n%= d;\n }\n\n str+= n;\n str+= '/';\n str+= d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n n%= d;\n }\n\n str+= \"\\\\frac{\";\n str+= n;\n str+= '}{';\n str+= d;\n str+= '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function() {\n\n var t;\n var a = this['n'];\n var b = this['d'];\n var res = [];\n\n if (isNaN(a) || isNaN(b)) {\n return res;\n }\n\n do {\n res.push(Math.floor(a / b));\n t = a % b;\n a = b;\n b = t;\n } while (a !== 1);\n\n return res;\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function(dec) {\n\n var N = this[\"n\"];\n var D = this[\"d\"];\n\n if (isNaN(N) || isNaN(D)) {\n return \"NaN\";\n }\n\n dec = dec || 15; // 15 = decimal places when no repetation\n\n var cycLen = cycleLen(N, D); // Cycle length\n var cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n var str = this['s'] < 0 ? \"-\" : \"\";\n\n str+= N / D | 0;\n\n N%= D;\n N*= 10;\n\n if (N)\n str+= \".\";\n\n if (cycLen) {\n\n for (var i = cycOff; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \"(\";\n for (var i = cycLen; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \")\";\n } else {\n for (var i = dec; N && i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n }\n return str;\n }\n };\n\n if (typeof define === \"function\" && define[\"amd\"]) {\n define([], function() {\n return Fraction;\n });\n } else if (typeof exports === \"object\") {\n Object.defineProperty(Fraction, \"__esModule\", { 'value': true });\n Fraction['default'] = Fraction;\n Fraction['Fraction'] = Fraction;\n module['exports'] = Fraction;\n } else {\n root['Fraction'] = Fraction;\n }\n\n})(this);\n", "'use strict';\n\nconst ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\toverline: [53, 55],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16 +\n\t\t\t\t\t(36 * Math.round(red / 255 * 5)) +\n\t\t\t\t\t(6 * Math.round(green / 255 * 5)) +\n\t\t\t\t\tMath.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /(?[a-f\\d]{6}|[a-f\\d]{3})/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet {colorString} = matches.groups;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = colorString.split('').map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getKeysOfEnumerableProperties = (object, compareKeys) => {\n const rawKeys = Object.keys(object);\n const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(object).forEach(symbol => {\n if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n keys.push(symbol);\n }\n });\n }\n return keys;\n};\n\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printIteratorEntries(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer,\n // Too bad, so sad that separator for ECMAScript Map has been ' => '\n // What a distracting diff if you change a data structure to/from\n // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n separator = ': '\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n const name = printer(\n current.value[0],\n config,\n indentationNext,\n depth,\n refs\n );\n const value = printer(\n current.value[1],\n config,\n indentationNext,\n depth,\n refs\n );\n result += name + separator + value;\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\nfunction printIteratorValues(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n result += printer(current.value, config, indentationNext, depth, refs);\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n let result = '';\n if (list.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < list.length; i++) {\n result += indentationNext;\n if (i === config.maxWidth) {\n result += '\u2026';\n break;\n }\n if (i in list) {\n result += printer(list[i], config, indentationNext, depth, refs);\n }\n if (i < list.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n let result = '';\n const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n if (keys.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = printer(key, config, indentationNext, depth, refs);\n const value = printer(val[key], config, indentationNext, depth, refs);\n result += `${indentationNext + name}: ${value}`;\n if (i < keys.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst asymmetricMatcher =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('jest.asymmetricMatcher')\n : 0x1357a5;\nconst SPACE = ' ';\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n const stringedValue = val.toString();\n if (\n stringedValue === 'ArrayContaining' ||\n stringedValue === 'ArrayNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}[${(0, _collections.printListItems)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (\n stringedValue === 'ObjectContaining' ||\n stringedValue === 'ObjectNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n if (\n stringedValue === 'StringMatching' ||\n stringedValue === 'StringNotMatching'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (\n stringedValue === 'StringContaining' ||\n stringedValue === 'StringNotContaining'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (typeof val.toAsymmetricMatcher !== 'function') {\n throw new Error(\n `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n );\n }\n return val.toAsymmetricMatcher();\n};\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === asymmetricMatcher;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\nconst testName = name =>\n OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\nconst test = val =>\n val &&\n val.constructor &&\n !!val.constructor.name &&\n testName(val.constructor.name);\nexports.test = test;\nconst isNamedNodeMap = collection =>\n collection.constructor.name === 'NamedNodeMap';\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n const name = collection.constructor.name;\n if (++depth > config.maxDepth) {\n return `[${name}]`;\n }\n return (\n (config.min ? '' : name + SPACE) +\n (OBJECT_NAMES.indexOf(name) !== -1\n ? `{${(0, _collections.printObjectProperties)(\n isNamedNodeMap(collection)\n ? Array.from(collection).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {})\n : {\n ...collection\n },\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`\n : `[${(0, _collections.printListItems)(\n Array.from(collection),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`)\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = escapeHTML;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction escapeHTML(str) {\n return str.replace(//g, '>');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printText =\n exports.printProps =\n exports.printElementAsLeaf =\n exports.printElement =\n exports.printComment =\n exports.printChildren =\n void 0;\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n const indentationNext = indentation + config.indent;\n const colors = config.colors;\n return keys\n .map(key => {\n const value = props[key];\n let printed = printer(value, config, indentationNext, depth, refs);\n if (typeof value !== 'string') {\n if (printed.indexOf('\\n') !== -1) {\n printed =\n config.spacingOuter +\n indentationNext +\n printed +\n config.spacingOuter +\n indentation;\n }\n printed = `{${printed}}`;\n }\n return `${\n config.spacingInner +\n indentation +\n colors.prop.open +\n key +\n colors.prop.close\n }=${colors.value.open}${printed}${colors.value.close}`;\n })\n .join('');\n};\n\n// Return empty string if children is empty.\nexports.printProps = printProps;\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n children\n .map(\n child =>\n config.spacingOuter +\n indentation +\n (typeof child === 'string'\n ? printText(child, config)\n : printer(child, config, indentation, depth, refs))\n )\n .join('');\nexports.printChildren = printChildren;\nconst printText = (text, config) => {\n const contentColor = config.colors.content;\n return (\n contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n );\n};\nexports.printText = printText;\nconst printComment = (comment, config) => {\n const commentColor = config.colors.comment;\n return `${commentColor.open}${\n commentColor.close\n }`;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nexports.printComment = printComment;\nconst printElement = (\n type,\n printedProps,\n printedChildren,\n config,\n indentation\n) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${\n printedProps &&\n tagColor.close +\n printedProps +\n config.spacingOuter +\n indentation +\n tagColor.open\n }${\n printedChildren\n ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}${tagColor.close}`;\n};\nexports.printElement = printElement;\nconst printElementAsLeaf = (type, config) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${tagColor.close} \u2026${tagColor.open} />${tagColor.close}`;\n};\nexports.printElementAsLeaf = printElementAsLeaf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst testHasAttribute = val => {\n try {\n return typeof val.hasAttribute === 'function' && val.hasAttribute('is');\n } catch {\n return false;\n }\n};\nconst testNode = val => {\n const constructorName = val.constructor.name;\n const {nodeType, tagName} = val;\n const isCustomElement =\n (typeof tagName === 'string' && tagName.includes('-')) ||\n testHasAttribute(val);\n return (\n (nodeType === ELEMENT_NODE &&\n (ELEMENT_REGEXP.test(constructorName) || isCustomElement)) ||\n (nodeType === TEXT_NODE && constructorName === 'Text') ||\n (nodeType === COMMENT_NODE && constructorName === 'Comment') ||\n (nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment')\n );\n};\nconst test = val => val?.constructor?.name && testNode(val);\nexports.test = test;\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n if (nodeIsText(node)) {\n return (0, _markup.printText)(node.data, config);\n }\n if (nodeIsComment(node)) {\n return (0, _markup.printComment)(node.data, config);\n }\n const type = nodeIsFragment(node)\n ? 'DocumentFragment'\n : node.tagName.toLowerCase();\n if (++depth > config.maxDepth) {\n return (0, _markup.printElementAsLeaf)(type, config);\n }\n return (0, _markup.printElement)(\n type,\n (0, _markup.printProps)(\n nodeIsFragment(node)\n ? []\n : Array.from(node.attributes)\n .map(attr => attr.name)\n .sort(),\n nodeIsFragment(node)\n ? {}\n : Array.from(node.attributes).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {}),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n Array.prototype.slice.call(node.childNodes || node.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\nconst getImmutableName = name => `Immutable.${name}`;\nconst printAsLeaf = name => `[${name}]`;\nconst SPACE = ' ';\nconst LAZY = '\u2026'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}{${(0,\n _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n let i = 0;\n return {\n next() {\n if (i < val._keys.length) {\n const key = val._keys[i++];\n return {\n done: false,\n value: [key, val.get(key)]\n };\n }\n return {\n done: true,\n value: undefined\n };\n }\n };\n}\nconst printImmutableRecord = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n) => {\n // _name property is defined only for an Immutable Record instance\n // which was constructed with a second optional descriptive name arg\n const name = getImmutableName(val._name || 'Record');\n return ++depth > config.maxDepth\n ? printAsLeaf(name)\n : `${name + SPACE}{${(0, _collections.printIteratorEntries)(\n getRecordEntries(val),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n};\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n const name = getImmutableName('Seq');\n if (++depth > config.maxDepth) {\n return printAsLeaf(name);\n }\n if (val[IS_KEYED_SENTINEL]) {\n return `${name + SPACE}{${\n // from Immutable collection of entries or from ECMAScript object\n val._iter || val._object\n ? (0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }}`;\n }\n return `${name + SPACE}[${\n val._iter ||\n // from Immutable collection of values\n val._array ||\n // from ECMAScript array\n val._collection ||\n // from ECMAScript collection in immutable v4\n val._iterable // from ECMAScript collection in immutable v3\n ? (0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }]`;\n};\nconst printImmutableValues = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}[${(0,\n _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n if (val[IS_MAP_SENTINEL]) {\n return printImmutableEntries(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n );\n }\n if (val[IS_LIST_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'List'\n );\n }\n if (val[IS_SET_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n );\n }\n if (val[IS_STACK_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'Stack'\n );\n }\n if (val[IS_SEQ_SENTINEL]) {\n return printImmutableSeq(val, config, indentation, depth, refs, printer);\n }\n\n // For compatibility with immutable v3 and v4, let record be the default.\n return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nexports.serialize = serialize;\nconst test = val =>\n val &&\n (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar ReactIs = _interopRequireWildcard(require('react-is'));\nvar _markup = require('./lib/markup');\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== 'function') return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function (nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n return {default: obj};\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor =\n Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n if (Array.isArray(arg)) {\n arg.forEach(item => {\n getChildren(item, children);\n });\n } else if (arg != null && arg !== false) {\n children.push(arg);\n }\n return children;\n};\nconst getType = element => {\n const type = element.type;\n if (typeof type === 'string') {\n return type;\n }\n if (typeof type === 'function') {\n return type.displayName || type.name || 'Unknown';\n }\n if (ReactIs.isFragment(element)) {\n return 'React.Fragment';\n }\n if (ReactIs.isSuspense(element)) {\n return 'React.Suspense';\n }\n if (typeof type === 'object' && type !== null) {\n if (ReactIs.isContextProvider(element)) {\n return 'Context.Provider';\n }\n if (ReactIs.isContextConsumer(element)) {\n return 'Context.Consumer';\n }\n if (ReactIs.isForwardRef(element)) {\n if (type.displayName) {\n return type.displayName;\n }\n const functionName = type.render.displayName || type.render.name || '';\n return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';\n }\n if (ReactIs.isMemo(element)) {\n const functionName =\n type.displayName || type.type.displayName || type.type.name || '';\n return functionName !== '' ? `Memo(${functionName})` : 'Memo';\n }\n }\n return 'UNDEFINED';\n};\nconst getPropKeys = element => {\n const {props} = element;\n return Object.keys(props)\n .filter(key => key !== 'children' && props[key] !== undefined)\n .sort();\n};\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(getType(element), config)\n : (0, _markup.printElement)(\n getType(element),\n (0, _markup.printProps)(\n getPropKeys(element),\n element.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n getChildren(element.props.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val != null && ReactIs.isElement(val);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Child can be `number` in Stack renderer but not in Fiber renderer.\n\nconst testSymbol =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('react.test.json')\n : 0xea71357;\nconst getPropKeys = object => {\n const {props} = object;\n return props\n ? Object.keys(props)\n .filter(key => props[key] !== undefined)\n .sort()\n : [];\n};\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(object.type, config)\n : (0, _markup.printElement)(\n object.type,\n object.props\n ? (0, _markup.printProps)(\n getPropKeys(object),\n object.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n object.children\n ? (0, _markup.printChildren)(\n object.children,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === testSymbol;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = exports.DEFAULT_OPTIONS = void 0;\nexports.format = format;\nexports.plugins = void 0;\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\nvar _collections = require('./collections');\nvar _AsymmetricMatcher = _interopRequireDefault(\n require('./plugins/AsymmetricMatcher')\n);\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\nvar _ReactTestComponent = _interopRequireDefault(\n require('./plugins/ReactTestComponent')\n);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\nconst getConstructorName = val =>\n (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n\n/* global window */\n/** Is val is equal to global window object? Works even if it does not exist :) */\nconst isWindow = val => typeof window !== 'undefined' && val === window;\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\nclass PrettyFormatPluginError extends Error {\n constructor(message, stack) {\n super(message);\n this.stack = stack;\n this.name = this.constructor.name;\n }\n}\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\nfunction printNumber(val) {\n return Object.is(val, -0) ? '-0' : String(val);\n}\nfunction printBigInt(val) {\n return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n if (!printFunctionName) {\n return '[Function]';\n }\n return `[Function ${val.name || 'anonymous'}]`;\n}\nfunction printSymbol(val) {\n return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\nfunction printError(val) {\n return `[${errorToString.call(val)}]`;\n}\n\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n if (val === true || val === false) {\n return `${val}`;\n }\n if (val === undefined) {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n const typeOf = typeof val;\n if (typeOf === 'number') {\n return printNumber(val);\n }\n if (typeOf === 'bigint') {\n return printBigInt(val);\n }\n if (typeOf === 'string') {\n if (escapeString) {\n return `\"${val.replace(/\"|\\\\/g, '\\\\$&')}\"`;\n }\n return `\"${val}\"`;\n }\n if (typeOf === 'function') {\n return printFunction(val, printFunctionName);\n }\n if (typeOf === 'symbol') {\n return printSymbol(val);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object WeakMap]') {\n return 'WeakMap {}';\n }\n if (toStringed === '[object WeakSet]') {\n return 'WeakSet {}';\n }\n if (\n toStringed === '[object Function]' ||\n toStringed === '[object GeneratorFunction]'\n ) {\n return printFunction(val, printFunctionName);\n }\n if (toStringed === '[object Symbol]') {\n return printSymbol(val);\n }\n if (toStringed === '[object Date]') {\n return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n }\n if (toStringed === '[object Error]') {\n return printError(val);\n }\n if (toStringed === '[object RegExp]') {\n if (escapeRegex) {\n // https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n return regExpToString.call(val);\n }\n if (val instanceof Error) {\n return printError(val);\n }\n return null;\n}\n\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\nfunction printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n) {\n if (refs.indexOf(val) !== -1) {\n return '[Circular]';\n }\n refs = refs.slice();\n refs.push(val);\n const hitMaxDepth = ++depth > config.maxDepth;\n const min = config.min;\n if (\n config.callToJSON &&\n !hitMaxDepth &&\n val.toJSON &&\n typeof val.toJSON === 'function' &&\n !hasCalledToJSON\n ) {\n return printer(val.toJSON(), config, indentation, depth, refs, true);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth\n ? '[Arguments]'\n : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth\n ? `[${val.constructor.name}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && val.constructor.name === 'Array'\n ? ''\n : `${val.constructor.name} `\n }[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (toStringed === '[object Map]') {\n return hitMaxDepth\n ? '[Map]'\n : `Map {${(0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer,\n ' => '\n )}}`;\n }\n if (toStringed === '[object Set]') {\n return hitMaxDepth\n ? '[Set]'\n : `Set {${(0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n\n // Avoid failure to serialize global window object in jsdom test environment.\n // For example, not even relevant if window is prop of React element.\n return hitMaxDepth || isWindow(val)\n ? `[${getConstructorName(val)}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && getConstructorName(val) === 'Object'\n ? ''\n : `${getConstructorName(val)} `\n }{${(0, _collections.printObjectProperties)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction isNewPlugin(plugin) {\n return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n let printed;\n try {\n printed = isNewPlugin(plugin)\n ? plugin.serialize(val, config, indentation, depth, refs, printer)\n : plugin.print(\n val,\n valChild => printer(valChild, config, indentation, depth, refs),\n str => {\n const indentationNext = indentation + config.indent;\n return (\n indentationNext +\n str.replace(NEWLINE_REGEXP, `\\n${indentationNext}`)\n );\n },\n {\n edgeSpacing: config.spacingOuter,\n min: config.min,\n spacing: config.spacingInner\n },\n config.colors\n );\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n if (typeof printed !== 'string') {\n throw new Error(\n `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n );\n }\n return printed;\n}\nfunction findPlugin(plugins, val) {\n for (let p = 0; p < plugins.length; p++) {\n try {\n if (plugins[p].test(val)) {\n return plugins[p];\n }\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n }\n return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n const plugin = findPlugin(config.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, config, indentation, depth, refs);\n }\n const basicResult = printBasicValue(\n val,\n config.printFunctionName,\n config.escapeRegex,\n config.escapeString\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n );\n}\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\n\n// could be replaced by `satisfies` operator in the future: https://github.com/microsoft/TypeScript/issues/47920\nconst toOptionsSubtype = options => options;\nconst DEFAULT_OPTIONS = toOptionsSubtype({\n callToJSON: true,\n compareKeys: undefined,\n escapeRegex: false,\n escapeString: true,\n highlight: false,\n indent: 2,\n maxDepth: Infinity,\n maxWidth: Infinity,\n min: false,\n plugins: [],\n printBasicPrototype: true,\n printFunctionName: true,\n theme: DEFAULT_THEME\n});\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nfunction validateOptions(options) {\n Object.keys(options).forEach(key => {\n if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n throw new Error(`pretty-format: Unknown option \"${key}\".`);\n }\n });\n if (options.min && options.indent !== undefined && options.indent !== 0) {\n throw new Error(\n 'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n );\n }\n if (options.theme !== undefined) {\n if (options.theme === null) {\n throw new Error('pretty-format: Option \"theme\" must not be null.');\n }\n if (typeof options.theme !== 'object') {\n throw new Error(\n `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n );\n }\n }\n}\nconst getColorsHighlight = options =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n const value =\n options.theme && options.theme[key] !== undefined\n ? options.theme[key]\n : DEFAULT_THEME[key];\n const color = value && _ansiStyles.default[value];\n if (\n color &&\n typeof color.close === 'string' &&\n typeof color.open === 'string'\n ) {\n colors[key] = color;\n } else {\n throw new Error(\n `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n );\n }\n return colors;\n }, Object.create(null));\nconst getColorsEmpty = () =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n colors[key] = {\n close: '',\n open: ''\n };\n return colors;\n }, Object.create(null));\nconst getPrintFunctionName = options =>\n options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\nconst getEscapeRegex = options =>\n options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\nconst getEscapeString = options =>\n options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\nconst getConfig = options => ({\n callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n compareKeys:\n typeof options?.compareKeys === 'function' || options?.compareKeys === null\n ? options.compareKeys\n : DEFAULT_OPTIONS.compareKeys,\n escapeRegex: getEscapeRegex(options),\n escapeString: getEscapeString(options),\n indent: options?.min\n ? ''\n : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n min: options?.min ?? DEFAULT_OPTIONS.min,\n plugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n printBasicPrototype: options?.printBasicPrototype ?? true,\n printFunctionName: getPrintFunctionName(options),\n spacingInner: options?.min ? ' ' : '\\n',\n spacingOuter: options?.min ? '' : '\\n'\n});\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\nfunction format(val, options) {\n if (options) {\n validateOptions(options);\n if (options.plugins) {\n const plugin = findPlugin(options.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, getConfig(options), '', 0, []);\n }\n }\n }\n const basicResult = printBasicValue(\n val,\n getPrintFunctionName(options),\n getEscapeRegex(options),\n getEscapeString(options)\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(val, getConfig(options), '', 0, []);\n}\nconst plugins = {\n AsymmetricMatcher: _AsymmetricMatcher.default,\n DOMCollection: _DOMCollection.default,\n DOMElement: _DOMElement.default,\n Immutable: _Immutable.default,\n ReactElement: _ReactElement.default,\n ReactTestComponent: _ReactTestComponent.default\n};\nexports.plugins = plugins;\nvar _default = format;\nexports.default = _default;\n", "/**\n * @license Fraction.js v4.2.0 05/03/2022\n * https://www.xarg.org/2014/03/rational-numbers-in-javascript/\n *\n * Copyright (c) 2021, Robert Eisele (robert@xarg.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * [ n => , d => ]\n *\n * Integer form\n * - Single integer value\n *\n * Double form\n * - Single double value\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n *\n * var f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n(function(root) {\n\n \"use strict\";\n\n // Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n // Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n // If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\n var MAX_CYCLE_LEN = 2000;\n\n // Parsed data to avoid calling \"new\" all the time\n var P = {\n \"s\": 1,\n \"n\": 0,\n \"d\": 1\n };\n\n function assign(n, s) {\n\n if (isNaN(n = parseInt(n, 10))) {\n throw Fraction['InvalidParameter'];\n }\n return n * s;\n }\n\n // Creates a new Fraction internally without the need of the bulky constructor\n function newFraction(n, d) {\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n var f = Object.create(Fraction.prototype);\n f[\"s\"] = n < 0 ? -1 : 1;\n\n n = n < 0 ? -n : n;\n\n var a = gcd(n, d);\n\n f[\"n\"] = n / a;\n f[\"d\"] = d / a;\n return f;\n }\n\n function factorize(num) {\n\n var factors = {};\n\n var n = num;\n var i = 2;\n var s = 4;\n\n while (s <= n) {\n\n while (n % i === 0) {\n n/= i;\n factors[i] = (factors[i] || 0) + 1;\n }\n s+= 1 + 2 * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || 0) + 1;\n } else {\n factors[num] = (factors[num] || 0) + 1;\n }\n return factors;\n }\n\n var parse = function(p1, p2) {\n\n var n = 0, d = 1, s = 1;\n var v = 0, w = 0, x = 0, y = 1, z = 1;\n\n var A = 0, B = 1;\n var C = 1, D = 1;\n\n var N = 10000000;\n var M;\n\n if (p1 === undefined || p1 === null) {\n /* void */\n } else if (p2 !== undefined) {\n n = p1;\n d = p2;\n s = n * d;\n\n if (n % 1 !== 0 || d % 1 !== 0) {\n throw Fraction['NonIntegerParameter'];\n }\n\n } else\n switch (typeof p1) {\n\n case \"object\":\n {\n if (\"d\" in p1 && \"n\" in p1) {\n n = p1[\"n\"];\n d = p1[\"d\"];\n if (\"s\" in p1)\n n*= p1[\"s\"];\n } else if (0 in p1) {\n n = p1[0];\n if (1 in p1)\n d = p1[1];\n } else {\n throw Fraction['InvalidParameter'];\n }\n s = n * d;\n break;\n }\n case \"number\":\n {\n if (p1 < 0) {\n s = p1;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = p1;\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n if (p1 >= 1) {\n z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));\n p1/= z;\n }\n\n // Using Farey Sequences\n // http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/\n\n while (B <= N && D <= N) {\n M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A+= C;\n B+= D;\n } else {\n C+= A;\n D+= B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n*= z;\n } else if (isNaN(p1) || isNaN(p2)) {\n d = n = NaN;\n }\n break;\n }\n case \"string\":\n {\n B = p1.match(/\\d+|./g);\n\n if (B === null)\n throw Fraction['InvalidParameter'];\n\n if (B[A] === '-') {// Check for minus sign at the beginning\n s = -1;\n A++;\n } else if (B[A] === '+') {// Check for plus sign at the beginning\n A++;\n }\n\n if (B.length === A + 1) { // Check if it's just a simple number \"1234\"\n w = assign(B[A++], s);\n } else if (B[A + 1] === '.' || B[A] === '.') { // Check if it's a decimal number\n\n if (B[A] !== '.') { // Handle 0.5 and .5\n v = assign(B[A++], s);\n }\n A++;\n\n // Check for decimal places\n if (A + 1 === B.length || B[A + 1] === '(' && B[A + 3] === ')' || B[A + 1] === \"'\" && B[A + 3] === \"'\") {\n w = assign(B[A], s);\n y = Math.pow(10, B[A].length);\n A++;\n }\n\n // Check for repeating places\n if (B[A] === '(' && B[A + 2] === ')' || B[A] === \"'\" && B[A + 2] === \"'\") {\n x = assign(B[A + 1], s);\n z = Math.pow(10, B[A + 1].length) - 1;\n A+= 3;\n }\n\n } else if (B[A + 1] === '/' || B[A + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(B[A], s);\n y = assign(B[A + 2], 1);\n A+= 3;\n } else if (B[A + 3] === '/' && B[A + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(B[A], s);\n w = assign(B[A + 2], s);\n y = assign(B[A + 4], 1);\n A+= 5;\n }\n\n if (B.length <= A) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n break;\n }\n\n /* Fall through on error */\n }\n default:\n throw Fraction['InvalidParameter'];\n }\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n P[\"s\"] = s < 0 ? -1 : 1;\n P[\"n\"] = Math.abs(n);\n P[\"d\"] = Math.abs(d);\n };\n\n function modpow(b, e, m) {\n\n var r = 1;\n for (; e > 0; b = (b * b) % m, e >>= 1) {\n\n if (e & 1) {\n r = (r * b) % m;\n }\n }\n return r;\n }\n\n\n function cycleLen(n, d) {\n\n for (; d % 2 === 0;\n d/= 2) {\n }\n\n for (; d % 5 === 0;\n d/= 5) {\n }\n\n if (d === 1) // Catch non-cyclic numbers\n return 0;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n var rem = 10 % d;\n var t = 1;\n\n for (; rem !== 1; t++) {\n rem = rem * 10 % d;\n\n if (t > MAX_CYCLE_LEN)\n return 0; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return t;\n }\n\n\n function cycleStart(n, d, len) {\n\n var rem1 = 1;\n var rem2 = modpow(10, len, d);\n\n for (var t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return t;\n\n rem1 = rem1 * 10 % d;\n rem2 = rem2 * 10 % d;\n }\n return 0;\n }\n\n function gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a%= b;\n if (!a)\n return b;\n b%= a;\n if (!b)\n return a;\n }\n };\n\n /**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\n function Fraction(a, b) {\n\n parse(a, b);\n\n if (this instanceof Fraction) {\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse variable a\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n } else {\n return newFraction(P['s'] * P['n'], P['d']);\n }\n }\n\n Fraction['DivisionByZero'] = new Error(\"Division by Zero\");\n Fraction['InvalidParameter'] = new Error(\"Invalid argument\");\n Fraction['NonIntegerParameter'] = new Error(\"Parameters must be integer\");\n\n Fraction.prototype = {\n\n \"s\": 1,\n \"n\": 0,\n \"d\": 1,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function() {\n\n return newFraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function() {\n\n return newFraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function() {\n return newFraction(this['s'] * this['n'], this['d']);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n **/\n \"mod\": function(a, b) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return new Fraction(NaN);\n }\n\n if (a === undefined) {\n return newFraction(this[\"s\"] * this[\"n\"] % this[\"d\"], 1);\n }\n\n parse(a, b);\n if (0 === P[\"n\"] && 0 === this[\"d\"]) {\n throw Fraction['DivisionByZero'];\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return newFraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function(a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return newFraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function(a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === 0 && this[\"n\"] === 0) {\n return newFraction(0, 1);\n }\n return newFraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.ceil(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.floor(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational numbers\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.round(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function() {\n\n return newFraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some rational exponent, if possible\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function(a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === 1) {\n\n if (P['s'] < 0) {\n return newFraction(Math.pow(this['s'] * this[\"d\"], P['n']), Math.pow(this[\"n\"], P['n']));\n } else {\n return newFraction(Math.pow(this['s'] * this[\"n\"], P['n']), Math.pow(this[\"d\"], P['n']));\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // <=> (-1)^(c/d) * (a/b)^(c/d) = x\n // <=> (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x # rotate 1 by 180\u00B0\n // <=> (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula in Q ( https://proofwiki.org/wiki/De_Moivre%27s_Formula/Rational_Index )\n // From which follows that only for c=0 the root is non-complex. c/d is a reduced fraction, so that sin(c/dpi)=0 occurs for d=1, which is handled by our trivial case.\n if (this['s'] < 0) return null;\n\n // Now prime factor n and d\n var N = factorize(this['n']);\n var D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n var n = 1;\n var d = 1;\n for (var k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = 0;\n break;\n }\n N[k]*= P['n'];\n\n if (N[k] % P['d'] === 0) {\n N[k]/= P['d'];\n } else return null;\n n*= Math.pow(k, N[k]);\n }\n\n for (var k in D) {\n if (k === '1') continue;\n D[k]*= P['n'];\n\n if (D[k] % P['d'] === 0) {\n D[k]/= P['d'];\n } else return null;\n d*= Math.pow(k, D[k]);\n }\n\n if (P['s'] < 0) {\n return newFraction(d, n);\n }\n return newFraction(n, d);\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function(a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"]; // Same as compare() === 0\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"compare\": function(a, b) {\n\n parse(a, b);\n var t = (this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"]);\n return (0 < t) - (t < 0);\n },\n\n \"simplify\": function(eps) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return this;\n }\n\n eps = eps || 0.001;\n\n var thisABS = this['abs']();\n var cont = thisABS['toContinued']();\n\n for (var i = 1; i < cont.length; i++) {\n\n var s = newFraction(cont[i - 1], 1);\n for (var k = i - 2; k >= 0; k--) {\n s = s['inverse']()['add'](cont[k]);\n }\n\n if (s['sub'](thisABS)['abs']().valueOf() < eps) {\n return s['mul'](this['s']);\n }\n }\n return this;\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function(a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function() {\n\n return this[\"s\"] * this[\"n\"] / this[\"d\"];\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction(true) => \"4 1/3\"\n **/\n 'toFraction': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n str+= \" \";\n n%= d;\n }\n\n str+= n;\n str+= '/';\n str+= d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n n%= d;\n }\n\n str+= \"\\\\frac{\";\n str+= n;\n str+= '}{';\n str+= d;\n str+= '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function() {\n\n var t;\n var a = this['n'];\n var b = this['d'];\n var res = [];\n\n if (isNaN(a) || isNaN(b)) {\n return res;\n }\n\n do {\n res.push(Math.floor(a / b));\n t = a % b;\n a = b;\n b = t;\n } while (a !== 1);\n\n return res;\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function(dec) {\n\n var N = this[\"n\"];\n var D = this[\"d\"];\n\n if (isNaN(N) || isNaN(D)) {\n return \"NaN\";\n }\n\n dec = dec || 15; // 15 = decimal places when no repetation\n\n var cycLen = cycleLen(N, D); // Cycle length\n var cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n var str = this['s'] < 0 ? \"-\" : \"\";\n\n str+= N / D | 0;\n\n N%= D;\n N*= 10;\n\n if (N)\n str+= \".\";\n\n if (cycLen) {\n\n for (var i = cycOff; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \"(\";\n for (var i = cycLen; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \")\";\n } else {\n for (var i = dec; N && i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n }\n return str;\n }\n };\n\n if (typeof define === \"function\" && define[\"amd\"]) {\n define([], function() {\n return Fraction;\n });\n } else if (typeof exports === \"object\") {\n Object.defineProperty(Fraction, \"__esModule\", { 'value': true });\n Fraction['default'] = Fraction;\n Fraction['Fraction'] = Fraction;\n module['exports'] = Fraction;\n } else {\n root['Fraction'] = Fraction;\n }\n\n})(this);\n", "'use strict';\n\nconst ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\toverline: [53, 55],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16 +\n\t\t\t\t\t(36 * Math.round(red / 255 * 5)) +\n\t\t\t\t\t(6 * Math.round(green / 255 * 5)) +\n\t\t\t\t\tMath.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /(?[a-f\\d]{6}|[a-f\\d]{3})/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet {colorString} = matches.groups;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = colorString.split('').map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getKeysOfEnumerableProperties = (object, compareKeys) => {\n const rawKeys = Object.keys(object);\n const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(object).forEach(symbol => {\n if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n keys.push(symbol);\n }\n });\n }\n return keys;\n};\n\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printIteratorEntries(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer,\n // Too bad, so sad that separator for ECMAScript Map has been ' => '\n // What a distracting diff if you change a data structure to/from\n // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n separator = ': '\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n const name = printer(\n current.value[0],\n config,\n indentationNext,\n depth,\n refs\n );\n const value = printer(\n current.value[1],\n config,\n indentationNext,\n depth,\n refs\n );\n result += name + separator + value;\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\nfunction printIteratorValues(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n result += printer(current.value, config, indentationNext, depth, refs);\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n let result = '';\n if (list.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < list.length; i++) {\n result += indentationNext;\n if (i === config.maxWidth) {\n result += '\u2026';\n break;\n }\n if (i in list) {\n result += printer(list[i], config, indentationNext, depth, refs);\n }\n if (i < list.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n let result = '';\n const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n if (keys.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = printer(key, config, indentationNext, depth, refs);\n const value = printer(val[key], config, indentationNext, depth, refs);\n result += `${indentationNext + name}: ${value}`;\n if (i < keys.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst asymmetricMatcher =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('jest.asymmetricMatcher')\n : 0x1357a5;\nconst SPACE = ' ';\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n const stringedValue = val.toString();\n if (\n stringedValue === 'ArrayContaining' ||\n stringedValue === 'ArrayNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}[${(0, _collections.printListItems)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (\n stringedValue === 'ObjectContaining' ||\n stringedValue === 'ObjectNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n if (\n stringedValue === 'StringMatching' ||\n stringedValue === 'StringNotMatching'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (\n stringedValue === 'StringContaining' ||\n stringedValue === 'StringNotContaining'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (typeof val.toAsymmetricMatcher !== 'function') {\n throw new Error(\n `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n );\n }\n return val.toAsymmetricMatcher();\n};\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === asymmetricMatcher;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\nconst testName = name =>\n OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\nconst test = val =>\n val &&\n val.constructor &&\n !!val.constructor.name &&\n testName(val.constructor.name);\nexports.test = test;\nconst isNamedNodeMap = collection =>\n collection.constructor.name === 'NamedNodeMap';\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n const name = collection.constructor.name;\n if (++depth > config.maxDepth) {\n return `[${name}]`;\n }\n return (\n (config.min ? '' : name + SPACE) +\n (OBJECT_NAMES.indexOf(name) !== -1\n ? `{${(0, _collections.printObjectProperties)(\n isNamedNodeMap(collection)\n ? Array.from(collection).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {})\n : {\n ...collection\n },\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`\n : `[${(0, _collections.printListItems)(\n Array.from(collection),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`)\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = escapeHTML;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction escapeHTML(str) {\n return str.replace(//g, '>');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printText =\n exports.printProps =\n exports.printElementAsLeaf =\n exports.printElement =\n exports.printComment =\n exports.printChildren =\n void 0;\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n const indentationNext = indentation + config.indent;\n const colors = config.colors;\n return keys\n .map(key => {\n const value = props[key];\n let printed = printer(value, config, indentationNext, depth, refs);\n if (typeof value !== 'string') {\n if (printed.indexOf('\\n') !== -1) {\n printed =\n config.spacingOuter +\n indentationNext +\n printed +\n config.spacingOuter +\n indentation;\n }\n printed = `{${printed}}`;\n }\n return `${\n config.spacingInner +\n indentation +\n colors.prop.open +\n key +\n colors.prop.close\n }=${colors.value.open}${printed}${colors.value.close}`;\n })\n .join('');\n};\n\n// Return empty string if children is empty.\nexports.printProps = printProps;\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n children\n .map(\n child =>\n config.spacingOuter +\n indentation +\n (typeof child === 'string'\n ? printText(child, config)\n : printer(child, config, indentation, depth, refs))\n )\n .join('');\nexports.printChildren = printChildren;\nconst printText = (text, config) => {\n const contentColor = config.colors.content;\n return (\n contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n );\n};\nexports.printText = printText;\nconst printComment = (comment, config) => {\n const commentColor = config.colors.comment;\n return `${commentColor.open}${\n commentColor.close\n }`;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nexports.printComment = printComment;\nconst printElement = (\n type,\n printedProps,\n printedChildren,\n config,\n indentation\n) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${\n printedProps &&\n tagColor.close +\n printedProps +\n config.spacingOuter +\n indentation +\n tagColor.open\n }${\n printedChildren\n ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}${tagColor.close}`;\n};\nexports.printElement = printElement;\nconst printElementAsLeaf = (type, config) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${tagColor.close} \u2026${tagColor.open} />${tagColor.close}`;\n};\nexports.printElementAsLeaf = printElementAsLeaf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst testHasAttribute = val => {\n try {\n return typeof val.hasAttribute === 'function' && val.hasAttribute('is');\n } catch {\n return false;\n }\n};\nconst testNode = val => {\n const constructorName = val.constructor.name;\n const {nodeType, tagName} = val;\n const isCustomElement =\n (typeof tagName === 'string' && tagName.includes('-')) ||\n testHasAttribute(val);\n return (\n (nodeType === ELEMENT_NODE &&\n (ELEMENT_REGEXP.test(constructorName) || isCustomElement)) ||\n (nodeType === TEXT_NODE && constructorName === 'Text') ||\n (nodeType === COMMENT_NODE && constructorName === 'Comment') ||\n (nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment')\n );\n};\nconst test = val => val?.constructor?.name && testNode(val);\nexports.test = test;\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n if (nodeIsText(node)) {\n return (0, _markup.printText)(node.data, config);\n }\n if (nodeIsComment(node)) {\n return (0, _markup.printComment)(node.data, config);\n }\n const type = nodeIsFragment(node)\n ? 'DocumentFragment'\n : node.tagName.toLowerCase();\n if (++depth > config.maxDepth) {\n return (0, _markup.printElementAsLeaf)(type, config);\n }\n return (0, _markup.printElement)(\n type,\n (0, _markup.printProps)(\n nodeIsFragment(node)\n ? []\n : Array.from(node.attributes)\n .map(attr => attr.name)\n .sort(),\n nodeIsFragment(node)\n ? {}\n : Array.from(node.attributes).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {}),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n Array.prototype.slice.call(node.childNodes || node.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\nconst getImmutableName = name => `Immutable.${name}`;\nconst printAsLeaf = name => `[${name}]`;\nconst SPACE = ' ';\nconst LAZY = '\u2026'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}{${(0,\n _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n let i = 0;\n return {\n next() {\n if (i < val._keys.length) {\n const key = val._keys[i++];\n return {\n done: false,\n value: [key, val.get(key)]\n };\n }\n return {\n done: true,\n value: undefined\n };\n }\n };\n}\nconst printImmutableRecord = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n) => {\n // _name property is defined only for an Immutable Record instance\n // which was constructed with a second optional descriptive name arg\n const name = getImmutableName(val._name || 'Record');\n return ++depth > config.maxDepth\n ? printAsLeaf(name)\n : `${name + SPACE}{${(0, _collections.printIteratorEntries)(\n getRecordEntries(val),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n};\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n const name = getImmutableName('Seq');\n if (++depth > config.maxDepth) {\n return printAsLeaf(name);\n }\n if (val[IS_KEYED_SENTINEL]) {\n return `${name + SPACE}{${\n // from Immutable collection of entries or from ECMAScript object\n val._iter || val._object\n ? (0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }}`;\n }\n return `${name + SPACE}[${\n val._iter ||\n // from Immutable collection of values\n val._array ||\n // from ECMAScript array\n val._collection ||\n // from ECMAScript collection in immutable v4\n val._iterable // from ECMAScript collection in immutable v3\n ? (0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }]`;\n};\nconst printImmutableValues = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}[${(0,\n _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n if (val[IS_MAP_SENTINEL]) {\n return printImmutableEntries(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n );\n }\n if (val[IS_LIST_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'List'\n );\n }\n if (val[IS_SET_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n );\n }\n if (val[IS_STACK_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'Stack'\n );\n }\n if (val[IS_SEQ_SENTINEL]) {\n return printImmutableSeq(val, config, indentation, depth, refs, printer);\n }\n\n // For compatibility with immutable v3 and v4, let record be the default.\n return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nexports.serialize = serialize;\nconst test = val =>\n val &&\n (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar ReactIs = _interopRequireWildcard(require('react-is'));\nvar _markup = require('./lib/markup');\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== 'function') return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function (nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n return {default: obj};\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor =\n Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n if (Array.isArray(arg)) {\n arg.forEach(item => {\n getChildren(item, children);\n });\n } else if (arg != null && arg !== false) {\n children.push(arg);\n }\n return children;\n};\nconst getType = element => {\n const type = element.type;\n if (typeof type === 'string') {\n return type;\n }\n if (typeof type === 'function') {\n return type.displayName || type.name || 'Unknown';\n }\n if (ReactIs.isFragment(element)) {\n return 'React.Fragment';\n }\n if (ReactIs.isSuspense(element)) {\n return 'React.Suspense';\n }\n if (typeof type === 'object' && type !== null) {\n if (ReactIs.isContextProvider(element)) {\n return 'Context.Provider';\n }\n if (ReactIs.isContextConsumer(element)) {\n return 'Context.Consumer';\n }\n if (ReactIs.isForwardRef(element)) {\n if (type.displayName) {\n return type.displayName;\n }\n const functionName = type.render.displayName || type.render.name || '';\n return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';\n }\n if (ReactIs.isMemo(element)) {\n const functionName =\n type.displayName || type.type.displayName || type.type.name || '';\n return functionName !== '' ? `Memo(${functionName})` : 'Memo';\n }\n }\n return 'UNDEFINED';\n};\nconst getPropKeys = element => {\n const {props} = element;\n return Object.keys(props)\n .filter(key => key !== 'children' && props[key] !== undefined)\n .sort();\n};\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(getType(element), config)\n : (0, _markup.printElement)(\n getType(element),\n (0, _markup.printProps)(\n getPropKeys(element),\n element.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n getChildren(element.props.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val != null && ReactIs.isElement(val);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Child can be `number` in Stack renderer but not in Fiber renderer.\n\nconst testSymbol =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('react.test.json')\n : 0xea71357;\nconst getPropKeys = object => {\n const {props} = object;\n return props\n ? Object.keys(props)\n .filter(key => props[key] !== undefined)\n .sort()\n : [];\n};\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(object.type, config)\n : (0, _markup.printElement)(\n object.type,\n object.props\n ? (0, _markup.printProps)(\n getPropKeys(object),\n object.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n object.children\n ? (0, _markup.printChildren)(\n object.children,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === testSymbol;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = exports.DEFAULT_OPTIONS = void 0;\nexports.format = format;\nexports.plugins = void 0;\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\nvar _collections = require('./collections');\nvar _AsymmetricMatcher = _interopRequireDefault(\n require('./plugins/AsymmetricMatcher')\n);\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\nvar _ReactTestComponent = _interopRequireDefault(\n require('./plugins/ReactTestComponent')\n);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\nconst getConstructorName = val =>\n (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n\n/* global window */\n/** Is val is equal to global window object? Works even if it does not exist :) */\nconst isWindow = val => typeof window !== 'undefined' && val === window;\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\nclass PrettyFormatPluginError extends Error {\n constructor(message, stack) {\n super(message);\n this.stack = stack;\n this.name = this.constructor.name;\n }\n}\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\nfunction printNumber(val) {\n return Object.is(val, -0) ? '-0' : String(val);\n}\nfunction printBigInt(val) {\n return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n if (!printFunctionName) {\n return '[Function]';\n }\n return `[Function ${val.name || 'anonymous'}]`;\n}\nfunction printSymbol(val) {\n return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\nfunction printError(val) {\n return `[${errorToString.call(val)}]`;\n}\n\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n if (val === true || val === false) {\n return `${val}`;\n }\n if (val === undefined) {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n const typeOf = typeof val;\n if (typeOf === 'number') {\n return printNumber(val);\n }\n if (typeOf === 'bigint') {\n return printBigInt(val);\n }\n if (typeOf === 'string') {\n if (escapeString) {\n return `\"${val.replace(/\"|\\\\/g, '\\\\$&')}\"`;\n }\n return `\"${val}\"`;\n }\n if (typeOf === 'function') {\n return printFunction(val, printFunctionName);\n }\n if (typeOf === 'symbol') {\n return printSymbol(val);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object WeakMap]') {\n return 'WeakMap {}';\n }\n if (toStringed === '[object WeakSet]') {\n return 'WeakSet {}';\n }\n if (\n toStringed === '[object Function]' ||\n toStringed === '[object GeneratorFunction]'\n ) {\n return printFunction(val, printFunctionName);\n }\n if (toStringed === '[object Symbol]') {\n return printSymbol(val);\n }\n if (toStringed === '[object Date]') {\n return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n }\n if (toStringed === '[object Error]') {\n return printError(val);\n }\n if (toStringed === '[object RegExp]') {\n if (escapeRegex) {\n // https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n return regExpToString.call(val);\n }\n if (val instanceof Error) {\n return printError(val);\n }\n return null;\n}\n\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\nfunction printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n) {\n if (refs.indexOf(val) !== -1) {\n return '[Circular]';\n }\n refs = refs.slice();\n refs.push(val);\n const hitMaxDepth = ++depth > config.maxDepth;\n const min = config.min;\n if (\n config.callToJSON &&\n !hitMaxDepth &&\n val.toJSON &&\n typeof val.toJSON === 'function' &&\n !hasCalledToJSON\n ) {\n return printer(val.toJSON(), config, indentation, depth, refs, true);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth\n ? '[Arguments]'\n : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth\n ? `[${val.constructor.name}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && val.constructor.name === 'Array'\n ? ''\n : `${val.constructor.name} `\n }[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (toStringed === '[object Map]') {\n return hitMaxDepth\n ? '[Map]'\n : `Map {${(0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer,\n ' => '\n )}}`;\n }\n if (toStringed === '[object Set]') {\n return hitMaxDepth\n ? '[Set]'\n : `Set {${(0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n\n // Avoid failure to serialize global window object in jsdom test environment.\n // For example, not even relevant if window is prop of React element.\n return hitMaxDepth || isWindow(val)\n ? `[${getConstructorName(val)}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && getConstructorName(val) === 'Object'\n ? ''\n : `${getConstructorName(val)} `\n }{${(0, _collections.printObjectProperties)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction isNewPlugin(plugin) {\n return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n let printed;\n try {\n printed = isNewPlugin(plugin)\n ? plugin.serialize(val, config, indentation, depth, refs, printer)\n : plugin.print(\n val,\n valChild => printer(valChild, config, indentation, depth, refs),\n str => {\n const indentationNext = indentation + config.indent;\n return (\n indentationNext +\n str.replace(NEWLINE_REGEXP, `\\n${indentationNext}`)\n );\n },\n {\n edgeSpacing: config.spacingOuter,\n min: config.min,\n spacing: config.spacingInner\n },\n config.colors\n );\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n if (typeof printed !== 'string') {\n throw new Error(\n `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n );\n }\n return printed;\n}\nfunction findPlugin(plugins, val) {\n for (let p = 0; p < plugins.length; p++) {\n try {\n if (plugins[p].test(val)) {\n return plugins[p];\n }\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n }\n return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n const plugin = findPlugin(config.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, config, indentation, depth, refs);\n }\n const basicResult = printBasicValue(\n val,\n config.printFunctionName,\n config.escapeRegex,\n config.escapeString\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n );\n}\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\n\n// could be replaced by `satisfies` operator in the future: https://github.com/microsoft/TypeScript/issues/47920\nconst toOptionsSubtype = options => options;\nconst DEFAULT_OPTIONS = toOptionsSubtype({\n callToJSON: true,\n compareKeys: undefined,\n escapeRegex: false,\n escapeString: true,\n highlight: false,\n indent: 2,\n maxDepth: Infinity,\n maxWidth: Infinity,\n min: false,\n plugins: [],\n printBasicPrototype: true,\n printFunctionName: true,\n theme: DEFAULT_THEME\n});\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nfunction validateOptions(options) {\n Object.keys(options).forEach(key => {\n if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n throw new Error(`pretty-format: Unknown option \"${key}\".`);\n }\n });\n if (options.min && options.indent !== undefined && options.indent !== 0) {\n throw new Error(\n 'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n );\n }\n if (options.theme !== undefined) {\n if (options.theme === null) {\n throw new Error('pretty-format: Option \"theme\" must not be null.');\n }\n if (typeof options.theme !== 'object') {\n throw new Error(\n `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n );\n }\n }\n}\nconst getColorsHighlight = options =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n const value =\n options.theme && options.theme[key] !== undefined\n ? options.theme[key]\n : DEFAULT_THEME[key];\n const color = value && _ansiStyles.default[value];\n if (\n color &&\n typeof color.close === 'string' &&\n typeof color.open === 'string'\n ) {\n colors[key] = color;\n } else {\n throw new Error(\n `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n );\n }\n return colors;\n }, Object.create(null));\nconst getColorsEmpty = () =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n colors[key] = {\n close: '',\n open: ''\n };\n return colors;\n }, Object.create(null));\nconst getPrintFunctionName = options =>\n options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\nconst getEscapeRegex = options =>\n options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\nconst getEscapeString = options =>\n options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\nconst getConfig = options => ({\n callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n compareKeys:\n typeof options?.compareKeys === 'function' || options?.compareKeys === null\n ? options.compareKeys\n : DEFAULT_OPTIONS.compareKeys,\n escapeRegex: getEscapeRegex(options),\n escapeString: getEscapeString(options),\n indent: options?.min\n ? ''\n : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n min: options?.min ?? DEFAULT_OPTIONS.min,\n plugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n printBasicPrototype: options?.printBasicPrototype ?? true,\n printFunctionName: getPrintFunctionName(options),\n spacingInner: options?.min ? ' ' : '\\n',\n spacingOuter: options?.min ? '' : '\\n'\n});\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\nfunction format(val, options) {\n if (options) {\n validateOptions(options);\n if (options.plugins) {\n const plugin = findPlugin(options.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, getConfig(options), '', 0, []);\n }\n }\n }\n const basicResult = printBasicValue(\n val,\n getPrintFunctionName(options),\n getEscapeRegex(options),\n getEscapeString(options)\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(val, getConfig(options), '', 0, []);\n}\nconst plugins = {\n AsymmetricMatcher: _AsymmetricMatcher.default,\n DOMCollection: _DOMCollection.default,\n DOMElement: _DOMElement.default,\n Immutable: _Immutable.default,\n ReactElement: _ReactElement.default,\n ReactTestComponent: _ReactTestComponent.default\n};\nexports.plugins = plugins;\nvar _default = format;\nexports.default = _default;\n", "import Fraction from 'fraction.js'\n\nexport function radian(angle: string): number {\n const coefficient = piCoefficient(angle)\n const fraction = new Fraction(coefficient).valueOf()\n\n return fraction * Math.PI\n}\n\n// TODO: neverthrow \u5316\nexport function angleDenominator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return 1\n } else if (split.length === 2) {\n return parseInt(split[1])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\n// TODO: neverthrow \u5316\nexport function angleNumerator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return parseInt(split[0])\n } else if (split.length === 2) {\n return parseInt(split[0])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\nexport function isAngleLessThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() < new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isAngleGreaterThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() > new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isValidAngle(angle: string): boolean {\n if (angle === '0') return true\n if (!/\u03C0/.test(angle)) return false\n\n try {\n const coefficient = piCoefficient(angle)\n new Fraction(coefficient).valueOf()\n\n return true\n } catch (e) {\n return false\n }\n}\n\nexport function piCoefficient(angle: string): string {\n return angle.replace(/(\\d+)\u03C0/g, '$1').replace(/\u03C0/g, '1')\n}\n\nexport function reduceAngle(angle: string): string {\n try {\n const coefficient = piCoefficient(angle)\n const reduced = new Fraction(coefficient).toFraction()\n const split = reduced.split('/')\n\n let numerator: string\n if (split[0] === '0') {\n numerator = '0'\n } else if (split[0] === '1') {\n numerator = `\u03C0`\n } else if (split[0] === '-1') {\n numerator = `-\u03C0`\n } else {\n numerator = `${split[0]}\u03C0`\n }\n\n if (split.length === 1) {\n return numerator\n } else {\n return `${numerator}/${split[1]}`\n }\n } catch (e) {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n", "type UnicodeFraction = {character: string; ref: string; value: number}\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const UNICODE_FRACTIONS = [\n {character: '\\u00BD', ref: '\u00BD', expanded: '1/2', value: 1 / 2},\n {character: '\\u00BC', ref: '\u00BC', expanded: '1/4', value: 1 / 4},\n {character: '\\u00BE', ref: '\u00BE', expanded: '3/4', value: 3 / 4},\n {character: '\\u2153', ref: '\u2153', expanded: '1/3', value: 1 / 3},\n {character: '\\u2154', ref: '\u2154', expanded: '2/3', value: 2 / 3},\n {character: '\\u2155', ref: '\u2155', expanded: '1/5', value: 1 / 5},\n {character: '\\u2156', ref: '\u2156', expanded: '2/5', value: 2 / 5},\n {character: '\\u2157', ref: '\u2157', expanded: '3/5', value: 3 / 5},\n {character: '\\u2158', ref: '\u2158', expanded: '4/5', value: 4 / 5},\n {character: '\\u2159', ref: '\u2159', expanded: '1/6', value: 1 / 6},\n {character: '\\u215A', ref: '\u215A', expanded: '5/6', value: 5 / 6},\n {character: '\\u2150', ref: '\u2150', expanded: '1/7', value: 1 / 7},\n {character: '\\u215B', ref: '\u215B', expanded: '1/8', value: 1 / 8},\n {character: '\\u215C', ref: '\u215C', expanded: '3/8', value: 3 / 8},\n {character: '\\u215D', ref: '\u215D', expanded: '5/8', value: 5 / 8},\n {character: '\\u215E', ref: '\u215E', expanded: '7/8', value: 7 / 8},\n {character: '\\u2151', ref: '\u2151', expanded: '1/9', value: 1 / 9},\n {character: '\\u2152', ref: '\u2152', expanded: '1/10', value: 1 / 10},\n]\n\n/**\n * Stores formatting options, for determining what string output should look\n * like.\n */\nexport class Format {\n /**\n * Returns an approximated result, but with the constraint that when it\n * changes slightly it should \"look the same\". (It should look good when\n * varying and animated.)\n */\n static readonly CONSISTENT = new Format(false, 0, 2, ', ')\n\n /**\n * Returns an accurate result, but favoring looking nice over being small.\n */\n static readonly EXACT = new Format(true, 0, undefined, ', ')\n\n /**\n * Returns an accurate result, favoring being small over looking nice.\n */\n static readonly MINIFIED = new Format(true, 0, undefined, ',')\n\n /**\n * Returns an approximated result, strongly favoring looking nice.\n */\n static readonly SIMPLIFIED = new Format(true, 0.0005, 3, ', ')\n\n /**\n * Parses the given text into a float. Works for text created by\n * [[formatFloat]].\n */\n static parseFloat(text: string): number {\n if (text.length === 0) {\n throw new Error(`Not a number: '${text}'`)\n }\n if (text[0] === '-') {\n return -Format.parseFloat(text.substr(1))\n }\n if (text[0] === '\\u221A') {\n return Math.sqrt(Format.parseFloat(text.substr(1)))\n }\n\n const fraction = Format.matchUnicodeFraction(e => e.character === text)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const result = parseFloat(text)\n if (isNaN(result)) {\n throw new Error(`Not a number: '${text}'`)\n }\n return result\n }\n\n /**\n * Corrects a value to a nearby simple fraction or root thereof, such as\n * sqrt(1/2), so it can be printed compactly.\n *\n * @param value The value to round.\n * @param epsilon The maximum offset error introduced by the rounding.\n */\n static simplifyByRounding(value: number, epsilon: number): number {\n if (value < 0) {\n return -Format.simplifyByRounding(-value, epsilon)\n }\n\n const r = value % 1\n if (r <= epsilon || 1 - r <= epsilon) {\n return Math.round(value)\n }\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return Math.sqrt(rootFraction.value)\n }\n\n return value\n }\n\n /**\n * Returns the first element of an array matching the given predicate, or else\n * returns undefined.\n *\n * @hidden\n */\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n /**\n * @param allowAbbreviation Should outputs be shortened, if possible?\n * @param maxAbbreviationError How much error is abbreviating allowed to introduce?\n * @param fixedDigits Use toFixed? How many digits?\n * @param itemSeparator What should list items be separated by?\n */\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator: string,\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n formatFloat(f: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateFloat(f, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return f.toFixed(this.fixedDigits)\n }\n return String(f)\n }\n\n /**\n * Returns a string representation of a float, taking advantage of unicode\n * fractions and square roots.\n *\n * @param value The value to represent as a string.\n * @param epsilon The maximum error introduced by using an expression.\n * @param digits digits The number of digits to use if no expression matches.\n */\n private abbreviateFloat(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateFloat(-value, epsilon, digits)}`\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {UNICODE_FRACTIONS} from './format'\n\ntype UnicodeFraction = {character: string; ref: string; value: number}\n\nexport class NumberFormatter {\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator = ', ',\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n format(n: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateNumber(n, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return n.toFixed(this.fixedDigits)\n }\n return String(n)\n }\n\n private abbreviateNumber(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateNumber(-value, epsilon, digits)}`\n\n const fraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {NumberFormatter} from './number-formatter'\nimport {ok, err, Result} from 'neverthrow'\n\ntype FormatOptions = {\n allowAbbreviation?: boolean\n maxAbbreviationError?: number\n fixedDigits?: number | undefined\n}\n\nconst DEFAULT_FORMAT_OPTIONS = {\n allowAbbreviation: true,\n maxAbbreviationError: 0,\n fixedDigits: undefined,\n}\n\nexport class Complex {\n /**\n * Complex { real: 0, imag: 0 }\n */\n static readonly ZERO = new Complex(0, 0)\n /**\n * Complex { real: 1, imag: 0 }\n */\n static readonly ONE = new Complex(1, 0)\n /**\n * The imaginary unit.\n */\n static readonly I = new Complex(0, 1)\n\n /**\n * The real part of the Complex number.\n */\n public real: number\n /**\n * The imaginary part of the Complex number.\n */\n public imag: number\n\n /**\n * Converts the given value to a Complex value.\n *\n * @param value - The value to convert to a Complex value\n */\n static from(value: number | Complex): Complex {\n if (typeof value === 'number') {\n return new Complex(value, 0)\n }\n\n return value\n }\n\n /**\n * Returns the real part of a Complex or a number value.\n *\n * @param value - The value to get the real part of\n */\n static real(value: number | Complex): number {\n if (typeof value === 'number') {\n return value\n }\n\n return value.real\n }\n\n /**\n * Returns the imaginary part of a Complex value, or else 0 for number values.\n *\n * @param value - The value to get the imaginary part of\n */\n static imag(value: number | Complex): number {\n if (typeof value === 'number') {\n return 0\n }\n\n return value.imag\n }\n\n /**\n * Returns a new Complex number with the given magnitude and phase.\n *\n * @param magnitude - The magnitude of the Complex number\n * @param phase - The phase of the Complex number\n */\n static polar(magnitude: number, phase: number): Complex {\n const [cos, sin] = this.cosAndSin(phase)\n\n return new Complex(magnitude * cos, magnitude * sin)\n }\n\n private static cosAndSin(radians: number): number[] {\n const unit = Math.PI / 4\n const i = Math.round(radians / unit)\n if (i * unit === radians) {\n const s = Math.sqrt(0.5)\n const snaps = [\n [1, 0], // 0\n [s, s], // \u03C0/4\n [0, 1], // \u03C0/2\n [-s, s], // 3\u03C0/4\n [-1, 0], // \u03C0\n [-s, -s], // 5\u03C0/4\n [0, -1], // 3\u03C0/2\n [s, -s], // 7\u03C0/4\n ]\n return snaps[i & 7]\n }\n return [Math.cos(radians), Math.sin(radians)]\n }\n\n /**\n * @param real - The real part of the Complex number\n * @param imag - The imaginary part of the Complex number\n */\n constructor(real: number, imag: number) {\n this.real = real\n this.imag = imag\n\n this.isApproximatelyEqualTo = this.nearlyEq // alias for nearlyEq\n this.isEqualTo = this.eq // alias for eq\n this.conj = this.conjugate // alias for conjugate\n this.plus = this.add // alias for add\n // aliases for sub\n this.subtract = this.sub\n this.minus = this.sub\n // aliases for mult\n this.multiply = this.mult\n this.times = this.mult\n this.dividedBy = this.div // alias for div\n this.magnitude = this.abs // alias for abs\n this.norm2 = this.abs2 // alias for abs2\n // aliases for arg\n this.angle = this.arg\n this.phase = this.arg\n }\n\n /**\n * Returns true if complex number is equal to other.\n *\n * @param other - The other value to compare with\n */\n eq(other: unknown): boolean {\n if (typeof other === 'number') {\n return this.real === other && this.imag === 0\n }\n if (other instanceof Complex) {\n return this.real === other.real && this.imag === other.imag\n }\n return false\n }\n\n isEqualTo = this.eq.bind(this)\n\n /**\n * Returns true if the Complex number is close to the value of other.\n *\n * @param other - The other value to compare with\n */\n nearlyEq(other: number | Complex | unknown, epsilon: number): boolean {\n if (typeof other === 'number' || other instanceof Complex) {\n const d = this.sub(Complex.from(other))\n return Math.abs(d.real) <= epsilon && Math.abs(d.imag) <= epsilon && d.abs() <= epsilon\n }\n return false\n }\n\n isApproximatelyEqualTo = this.nearlyEq.bind(this)\n\n /**\n * Returns the complex conjugate.\n *\n * @returns A new Complex representing the complex conjugate of this complex number\n */\n conjugate(): Complex {\n return new Complex(this.real, -this.imag)\n }\n\n conj = this.conjugate.bind(this)\n\n /**\n * Returns negation of the value.\n *\n * @returns A new Complex representing the negation of this complex number.\n */\n neg(): Complex {\n return new Complex(-this.real, -this.imag)\n }\n\n /**\n * Returns the sum of this complex number and value.\n *\n * @param value - The addend number.\n * @returns A new Complex representing the sum of this complex number and value.\n */\n add(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real + c.real, this.imag + c.imag)\n }\n\n plus = this.add.bind(this)\n\n /**\n * Returns the subtraction of this complex number and value.\n *\n * @param value - The subtrahend number.\n * @returns A new Complex representing the subtraction of this complex number and value.\n */\n sub(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real - c.real, this.imag - c.imag)\n }\n\n subtract = this.sub.bind(this)\n minus = this.sub.bind(this)\n\n /**\n * Returns the product of this complex number and value.\n *\n * @param value - The multiplier number.\n * @returns A new Complex representing the product of this complex number and value.\n */\n mult(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real * c.real - this.imag * c.imag, this.real * c.imag + this.imag * c.real)\n }\n\n multiply = this.mult.bind(this)\n times = this.mult.bind(this)\n\n /**\n * Returns a complex number divided by value.\n * If value is zero, returns an error.\n *\n * @param value - The divisor number.\n * @returns A Result object with the result of division or a division-by-zero error.\n * @example\n * ```\n * const res = new Complex(2, 3).div(2)\n * if (res.isOk()) {\n * console.log(res.value) // Complex { real: 1, imag: 1.5 }\n * } else {\n * console.error(res.error)\n * }\n * ```\n */\n div(value: number | Complex): Result {\n const c = Complex.from(value)\n const d = c.abs2()\n if (d === 0) {\n return err(Error('Division by Zero'))\n }\n\n const n = this.mult(c.conjugate())\n return ok(new Complex(n.real / d, n.imag / d))\n }\n\n dividedBy = this.div.bind(this)\n\n /**\n * Returns the absolute part of its polar form.\n *\n * @returns A number representing the absolute part of its polar form.\n * @example\n * ```\n * new Complex(-1, 0).abs() // 1\n * new Complex(3, 4).abs() // 5\n * ```\n */\n abs(): number {\n return Math.sqrt(this.abs2())\n }\n\n magnitude = this.abs.bind(this)\n\n /**\n * Returns square of the absolute value.\n *\n * @returns A number representing the square of the absolute value.\n * @example\n * ```\n * new Complex(-1, 0).abs2() // 1\n * new Complex(3, 4).abs2() // 25\n * ```\n */\n abs2(): number {\n return this.real * this.real + this.imag * this.imag\n }\n\n norm2 = this.abs2.bind(this)\n\n /**\n * Returns the angle part of its polar form.\n *\n * @returns A number representing the angle part of its polar form in radians.\n */\n arg(): number {\n return Math.atan2(this.imag, this.real)\n }\n\n angle = this.arg.bind(this)\n phase = this.arg.bind(this)\n\n /**\n * Returns the exponentiation of a complex number. That is c.pow(x) = c^x.\n *\n * @param exponent - the exponent number\n * @returns A number representing base taken to the power of exponent\n */\n pow(exponent: number | Complex): Complex {\n if (exponent === 0.5 && this.imag === 0 && this.real >= 0) {\n return new Complex(Math.sqrt(this.real), 0)\n }\n if (this.eq(Complex.ZERO)) {\n return Complex.ZERO\n }\n return this.ln().mult(Complex.from(exponent)).exp()\n }\n\n /**\n * Returns e raised to the c power. That is c.exp() = e^c.\n */\n exp(): Complex {\n return Complex.polar(Math.exp(this.real), this.imag)\n }\n\n /**\n * Returns a string representing this complex number according to the specified format.\n *\n * @param options - An object that sets the format options for this complex number.\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).format() // '1+2i'\n * new Complex(1, 2).format({\n * allowAbbreviation: false,\n * fixedDigits: 2,\n * }) // '+1.00+2.00i'\n * ```\n */\n format(options: FormatOptions = DEFAULT_FORMAT_OPTIONS): string {\n const format = new NumberFormatter(\n options.allowAbbreviation === undefined ? DEFAULT_FORMAT_OPTIONS.allowAbbreviation : options.allowAbbreviation,\n options.maxAbbreviationError || 0,\n options.fixedDigits,\n )\n return format.allowAbbreviation ? this.toStringAllowSingleValue(format) : this.toStringBothValues(format)\n }\n\n /**\n * Returns a compact string representing this Complex number.\n *\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).toString() // '1+2i'\n * new Complex(Math.sqrt(1 / 2), -1 / 3).toString() // '\u221A\u00BD-\u2153i'\n * ```\n */\n toString(): string {\n const formatter = new NumberFormatter(\n DEFAULT_FORMAT_OPTIONS.allowAbbreviation,\n DEFAULT_FORMAT_OPTIONS.maxAbbreviationError,\n DEFAULT_FORMAT_OPTIONS.fixedDigits,\n )\n return this.toStringAllowSingleValue(formatter)\n }\n\n // log(c) = ln|c| + arg(c)i\n private ln(): Complex {\n return new Complex(Math.log(this.abs()), this.arg())\n }\n\n // If a complex number has only real or imaginary parts,\n // convert it to a string with only real or imaginary parts, such as '\u2153' or '-3i'.\n private toStringAllowSingleValue(formatter: NumberFormatter): string {\n if (this.canImagPartBeOmitted(formatter.maxAbbreviationError)) {\n return formatter.format(this.real)\n }\n\n if (this.canRealPartBeOmitted(formatter.maxAbbreviationError)) {\n let imagFactor\n\n if (this.isImagFactorCloseToOne(formatter.maxAbbreviationError)) {\n imagFactor = ''\n } else if (this.isImagFactorMinusOne(formatter.maxAbbreviationError)) {\n imagFactor = '-'\n } else {\n imagFactor = formatter.format(this.imag)\n }\n\n return `${imagFactor}i`\n }\n\n return this.toStringBothValues(formatter)\n }\n\n // Convert a complex number whose real and imaginary parts are not both zero into a string like '\u2153-3i'.\n private toStringBothValues(formatter: NumberFormatter): string {\n const imagSign = this.imag >= 0 ? '+' : '-'\n const imagFactor = this.canImagFactorBeOmitted(formatter) ? '' : formatter.format(Math.abs(this.imag))\n const realPlusSign = formatter.allowAbbreviation || formatter.fixedDigits === undefined || this.real < 0 ? '' : '+'\n\n return `${realPlusSign + formatter.format(this.real) + imagSign + imagFactor}i`\n }\n\n // Returns whether the real part of a complex number can be omitted.\n private canRealPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.real) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number can be omitted.\n private canImagPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to 1.\n private isImagFactorCloseToOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag - 1) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to -1.\n private isImagFactorMinusOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag + 1) <= maxAbbreviationError\n }\n\n // Returns true if the factor of the imaginary part can be omitted, such as i or -i.\n private canImagFactorBeOmitted(formatter: NumberFormatter): boolean {\n return formatter.allowAbbreviation && Math.abs(Math.abs(this.imag) - 1) <= formatter.maxAbbreviationError\n }\n}\n", "export const Config = {\n MAX_QUBIT_COUNT: 16,\n} as const\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {format as prettyFormat} from 'pretty-format'\n\nlet CONSTRUCTOR_CALLS_NESTING = 0\n\nexport class DetailedError extends Error {\n public details: string | undefined\n private detailsObj: unknown\n\n constructor(message: string, detailsObj: unknown) {\n super(message)\n\n this.detailsObj = detailsObj\n this.name = 'Error'\n this.message = message\n this.stack = new Error().stack\n if (this.stack !== undefined) {\n this.stack = this.stack.replace(/^Error\\n\\s+at new DetailedError (\\S+)\\s?\\n\\s+at /, '\\n ')\n }\n\n CONSTRUCTOR_CALLS_NESTING++\n try {\n this.details =\n CONSTRUCTOR_CALLS_NESTING === 1\n ? prettyFormat(this.detailsObj)\n : '(failed to prettyFormat detailsObj due to possibly re-entrancy)'\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error(ex)\n this.details = '(failed to prettyFormat detailsObj, see the console for details)'\n } finally {\n CONSTRUCTOR_CALLS_NESTING--\n }\n }\n}\n", "/**\n * Emit a custom event\n *\n * @param type The event type\n * @param detail Any details to pass along with the event\n * @param element The element to attach the event to\n */\nexport function emitEvent(type: string, detail = {}, element: Node = document): boolean {\n const event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail,\n })\n\n return element.dispatchEvent(event)\n}\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function hasOwnProperty(obj: unknown, key: K): obj is Record {\n return obj !== null && obj !== undefined && key in (obj as Record)\n}\n\nexport type ArrayIsh =\n | unknown[]\n | Float32Array\n | Float64Array\n | Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Uint8ClampedArray\n\nconst GENERIC_ARRAY_TYPES = [\n Float32Array,\n Float64Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Uint8ClampedArray,\n]\n\nexport function equate(subject: unknown, other: unknown): boolean {\n if (subject === other || (isExactlyNaN(subject) && isExactlyNaN(other))) {\n return true\n }\n\n const customEquality = tryEquateCustom(subject, other)\n if (customEquality !== undefined) {\n return customEquality\n }\n if (isAtomic(subject) || isAtomic(other) || !eqType(subject, other)) {\n return false\n }\n\n if (subject instanceof Map && other instanceof Map) {\n return equateMaps(subject, other)\n }\n if (subject instanceof Set && other instanceof Set) {\n return equateSets(subject, other)\n }\n if (isIndexable(subject) && isIndexable(other)) {\n return equateIndexables(subject, other)\n }\n\n return equateObjects(subject, other)\n}\n\nfunction isIndexable(value: unknown): value is ArrayIsh {\n return Array.isArray(value) || !GENERIC_ARRAY_TYPES.every(t => !(value instanceof t))\n}\n\nfunction isExactlyNaN(v: unknown) {\n return typeof v === 'number' && isNaN(v)\n}\n\nfunction tryEquateCustom(subject: unknown, other: unknown): boolean | undefined {\n if (!isAtomic(subject) && hasOwnProperty(subject, 'isEqualTo') && typeof subject.isEqualTo === 'function') {\n return subject.isEqualTo(other) as boolean\n }\n if (!isAtomic(other) && hasOwnProperty(other, 'isEqualTo') && typeof other.isEqualTo === 'function') {\n return other.isEqualTo(subject) as boolean\n }\n return undefined\n}\n\ntype Atomic = null | undefined | string | number | boolean\n\nfunction isAtomic(value: unknown): value is Atomic {\n return (\n value === null ||\n value === undefined ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n )\n}\n\nfunction equateMaps(subject: Map, other: Map) {\n if (subject.size !== other.size) {\n return false\n }\n for (const [k, v] of subject) {\n if (!other.has(k)) {\n return false\n }\n const otherV = other.get(k)\n if (!equate(v, otherV)) {\n return false\n }\n }\n return true\n}\n\nfunction equateSets(subject: Set, other: Set) {\n if (subject.size !== other.size) {\n return false\n }\n for (const k of subject) {\n if (!other.has(k)) {\n return false\n }\n }\n return true\n}\n\nfunction eqType(subject: unknown, other: unknown): boolean {\n return typeof subject === typeof other\n}\n\nfunction equateIndexables(subject: ArrayIsh, other: ArrayIsh) {\n if (subject.length !== other.length) {\n return false\n }\n for (let i = 0; i < subject.length; i++) {\n if (!equate(subject[i], other[i])) {\n return false\n }\n }\n return true\n}\n\nfunction objectKeys(obj: unknown) {\n const result = new Set()\n for (const k in obj as Record) {\n if (hasOwnProperty(obj, k)) {\n result.add(k)\n }\n }\n return result\n}\n\nfunction equateObjects(subject: unknown, other: unknown) {\n const keys = objectKeys(subject)\n if (!equateSets(keys, objectKeys(other))) {\n return false\n }\n\n for (const k of keys) {\n if (k === Symbol.iterator) {\n continue\n }\n if (!equate((subject as Record)[k as string], (other as Record)[k as string])) {\n return false\n }\n }\n\n const hasSubjectIter = hasOwnProperty(subject, Symbol.iterator)\n const hasOtherIter = hasOwnProperty(other, Symbol.iterator)\n if (hasSubjectIter !== hasOtherIter) {\n return false\n }\n if (hasSubjectIter && hasOtherIter) {\n if (!equateIterables(subject as Iterable, other as Iterable)) {\n return false\n }\n }\n\n return true\n}\n\nfunction equateIterables(subject: Iterable, other: Iterable) {\n const otherIter = other[Symbol.iterator]()\n for (const subjectItem of subject) {\n const otherItemDone = otherIter.next()\n if (otherItemDone.done || !equate(subjectItem, otherItemDone.value)) {\n return false\n }\n }\n return otherIter.next().done\n}\n", "import {Config} from './config'\n\nexport type CreateArrayWithLengthX = ACC['length'] extends LENGTH\n ? ACC\n : CreateArrayWithLengthX\n\nexport type NumericRange<\n START_ARR extends number[],\n END extends number,\n ACC extends number = never,\n> = START_ARR['length'] extends END ? ACC | END : NumericRange<[...START_ARR, 1], END, ACC | START_ARR['length']>\n\nexport type ResizeableSpan = NumericRange, typeof Config.MAX_QUBIT_COUNT>\n\nexport const isResizeableSpan = (arg: unknown): arg is ResizeableSpan =>\n typeof arg == 'number' && 1 <= arg && arg <= Config.MAX_QUBIT_COUNT\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Result} from 'neverthrow'\n\ntype ParseError = {message: string}\nconst toParseError = (): ParseError => ({message: 'Parse Error'})\n\nexport class Util {\n static need(expression: boolean, message: string, args?: unknown[]): asserts expression {\n if (expression !== true) {\n const argDesc = args === undefined ? '(not provided)' : `[${Array.prototype.slice.call(args).join(', ')}]`\n const msgDesc = message === undefined ? '(not provided)' : message\n const msg = `Precondition failed\\n\\nMessage: ${msgDesc}\\n\\nArgs: ${argDesc}`\n throw new Error(msg)\n }\n }\n\n static notNull(v: T): asserts v is NonNullable {\n Util.need(v !== null && v !== undefined, 'notNull')\n }\n\n // \u73FE\u5728\u306E URL \u3092\u30D1\u30FC\u30B9\u3057\u3001\u6700\u5F8C\u306E / \u4EE5\u964D\u3092\u30C7\u30B3\u30FC\u30C9\u3057\u305F\u3082\u306E\u3092\u8FD4\u3059\n static get urlJson(): string {\n const url = new URL(location.href, window.location.origin)\n const path = decodeURIComponent(url.pathname)\n const lastSlashIndex = path.lastIndexOf('/')\n\n return path.substring(lastSlashIndex + 1)\n }\n\n static safeJsonParse = Result.fromThrowable(JSON.parse, toParseError)\n}\n", "export const SerializedAntiControlGateType = '\u25E6'\n\nexport type SerializedAntiControlGate = {\n type: typeof SerializedAntiControlGateType\n targets: number[]\n}\n", "export const SerializedBlochDisplayType = 'Bloch'\n\nexport type SerializedBlochDisplay = {\n type: typeof SerializedBlochDisplayType\n targets: number[]\n}\n", "export const SerializedControlGateType = '\u2022'\n\nexport type SerializedControlGate = {\n type: typeof SerializedControlGateType\n targets: number[]\n}\n", "export const SerializedHGateType = 'H'\n\nexport type SerializedHGate = {\n type: typeof SerializedHGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedMeasurementGateType = 'Measure'\n\nexport type SerializedMeasurementGate = {\n type: typeof SerializedMeasurementGateType\n targets: number[]\n flag?: string\n}\n", "export const SerializedPhaseGateType = 'P'\n\nexport type SerializedPhaseGate = {\n type: typeof SerializedPhaseGateType\n angle?: string\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftDaggerGateType = 'QFT\u2020'\n\nexport type SerializedQftDaggerGate = {\n type: typeof SerializedQftDaggerGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftGateType = 'QFT'\n\nexport type SerializedQftGate = {\n type: typeof SerializedQftGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "export const SerializedRnotGateType = 'X^\u00BD'\n\nexport type SerializedRnotGate = {\n type: typeof SerializedRnotGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRxGateType = 'Rx'\n\nexport type SerializedRxGate = {\n type: typeof SerializedRxGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRyGateType = 'Ry'\n\nexport type SerializedRyGate = {\n type: typeof SerializedRyGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRzGateType = 'Rz'\n\nexport type SerializedRzGate = {\n type: typeof SerializedRzGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSDaggerGateType = 'S\u2020'\n\nexport type SerializedSDaggerGate = {\n type: typeof SerializedSDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSGateType = 'S'\n\nexport type SerializedSGate = {\n type: typeof SerializedSGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSpacerGateType = '\u2026'\n\nexport type SerializedSpacerGate = {\n type: typeof SerializedSpacerGateType\n targets: number[]\n}\n", "export const SerializedSwapGateType = 'Swap'\n\nexport type SerializedSwapGate = {\n type: typeof SerializedSwapGateType\n targets: [number, number]\n controls?: number[]\n}\n", "export const SerializedTDaggerGateType = 'T\u2020'\n\nexport type SerializedTDaggerGate = {\n type: typeof SerializedTDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedTGateType = 'T'\n\nexport type SerializedTGate = {\n type: typeof SerializedTGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedWrite0GateType = '|0>'\nexport const SerializedWrite1GateType = '|1>'\n\nexport type SerializedWriteGate = {\n type: typeof SerializedWrite0GateType | typeof SerializedWrite1GateType\n targets: number[]\n}\n", "export const SerializedXGateType = 'X'\n\nexport type SerializedXGate = {\n type: typeof SerializedXGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedYGateType = 'Y'\n\nexport type SerializedYGate = {\n type: typeof SerializedYGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedZGateType = 'Z'\n\nexport type SerializedZGate = {\n type: typeof SerializedZGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar defaultErrorConfig = {\r\n withStackTrace: false\r\n};\r\n// Custom error object\r\n// Context / discussion: https://github.com/supermacro/neverthrow/pull/215\r\nvar createNeverThrowError = function (message, result, config) {\r\n if (config === void 0) { config = defaultErrorConfig; }\r\n var data = result.isOk()\r\n ? { type: 'Ok', value: result.value }\r\n : { type: 'Err', value: result.error };\r\n var maybeStack = config.withStackTrace ? new Error().stack : undefined;\r\n return {\r\n data: data,\r\n message: message,\r\n stack: maybeStack\r\n };\r\n};\n\nvar ResultAsync = /** @class */ (function () {\r\n function ResultAsync(res) {\r\n this._promise = res;\r\n }\r\n ResultAsync.fromSafePromise = function (promise) {\r\n var newPromise = promise.then(function (value) { return new Ok(value); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.fromPromise = function (promise, errorFn) {\r\n var newPromise = promise\r\n .then(function (value) { return new Ok(value); })[\"catch\"](function (e) { return new Err(errorFn(e)); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.combine = function (asyncResultList) {\r\n return combineResultAsyncList(asyncResultList);\r\n };\r\n ResultAsync.combineWithAllErrors = function (asyncResultList) {\r\n return combineResultAsyncListWithAllErrors(asyncResultList);\r\n };\r\n ResultAsync.prototype.map = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isErr()) {\r\n return [2 /*return*/, new Err(res.error)];\r\n }\r\n _a = Ok.bind;\r\n return [4 /*yield*/, f(res.value)];\r\n case 1: return [2 /*return*/, new (_a.apply(Ok, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.mapErr = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isOk()) {\r\n return [2 /*return*/, new Ok(res.value)];\r\n }\r\n _a = Err.bind;\r\n return [4 /*yield*/, f(res.error)];\r\n case 1: return [2 /*return*/, new (_a.apply(Err, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.andThen = function (f) {\r\n return new ResultAsync(this._promise.then(function (res) {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n var newValue = f(res.value);\r\n return newValue instanceof ResultAsync ? newValue._promise : newValue;\r\n }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.orElse = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (res.isErr()) {\r\n return [2 /*return*/, f(res.error)];\r\n }\r\n return [2 /*return*/, new Ok(res.value)];\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.match = function (ok, _err) {\r\n return this._promise.then(function (res) { return res.match(ok, _err); });\r\n };\r\n ResultAsync.prototype.unwrapOr = function (t) {\r\n return this._promise.then(function (res) { return res.unwrapOr(t); });\r\n };\r\n // Makes ResultAsync implement PromiseLike\r\n ResultAsync.prototype.then = function (successCallback, failureCallback) {\r\n return this._promise.then(successCallback, failureCallback);\r\n };\r\n return ResultAsync;\r\n}());\r\nvar okAsync = function (value) {\r\n return new ResultAsync(Promise.resolve(new Ok(value)));\r\n};\r\nvar errAsync = function (err) {\r\n return new ResultAsync(Promise.resolve(new Err(err)));\r\n};\r\nvar fromPromise = ResultAsync.fromPromise;\r\nvar fromSafePromise = ResultAsync.fromSafePromise;\n\nvar appendValueToEndOfList = function (value) { return function (list) { return __spreadArray(__spreadArray([], __read(list), false), [value], false); }; };\r\n/**\r\n * Short circuits on the FIRST Err value that we find\r\n */\r\nvar combineResultList = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return acc.isOk()\r\n ? result.isErr()\r\n ? err(result.error)\r\n : acc.map(appendValueToEndOfList(result.value))\r\n : acc;\r\n }, ok([]));\r\n};\r\n/* This is the typesafe version of Promise.all\r\n *\r\n * Takes a list of ResultAsync and success if all inner results are Ok values\r\n * or fails if one (or more) of the inner results are Err values\r\n */\r\nvar combineResultAsyncList = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList);\r\n};\r\n/**\r\n * Give a list of all the errors we find\r\n */\r\nvar combineResultListWithAllErrors = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return result.isErr()\r\n ? acc.isErr()\r\n ? err(__spreadArray(__spreadArray([], __read(acc.error), false), [result.error], false))\r\n : err([result.error])\r\n : acc.isErr()\r\n ? acc\r\n : ok(__spreadArray(__spreadArray([], __read(acc.value), false), [result.value], false));\r\n }, ok([]));\r\n};\r\nvar combineResultAsyncListWithAllErrors = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors);\r\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nvar Result;\r\n(function (Result) {\r\n /**\r\n * Wraps a function with a try catch, creating a new function with the same\r\n * arguments but returning `Ok` if successful, `Err` if the function throws\r\n *\r\n * @param fn function to wrap with ok on success or err on failure\r\n * @param errorFn when an error is thrown, this will wrap the error result if provided\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function fromThrowable(fn, errorFn) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n try {\r\n var result = fn.apply(void 0, __spreadArray([], __read(args), false));\r\n return ok(result);\r\n }\r\n catch (e) {\r\n return err(errorFn ? errorFn(e) : e);\r\n }\r\n };\r\n }\r\n Result.fromThrowable = fromThrowable;\r\n function combine(resultList) {\r\n return combineResultList(resultList);\r\n }\r\n Result.combine = combine;\r\n function combineWithAllErrors(resultList) {\r\n return combineResultListWithAllErrors(resultList);\r\n }\r\n Result.combineWithAllErrors = combineWithAllErrors;\r\n})(Result || (Result = {}));\r\nvar ok = function (value) { return new Ok(value); };\r\nvar err = function (err) { return new Err(err); };\r\nvar Ok = /** @class */ (function () {\r\n function Ok(value) {\r\n this.value = value;\r\n }\r\n Ok.prototype.isOk = function () {\r\n return true;\r\n };\r\n Ok.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n Ok.prototype.map = function (f) {\r\n return ok(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.mapErr = function (_f) {\r\n return ok(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.andThen = function (f) {\r\n return f(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.orElse = function (_f) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype.asyncAndThen = function (f) {\r\n return f(this.value);\r\n };\r\n Ok.prototype.asyncMap = function (f) {\r\n return ResultAsync.fromSafePromise(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.unwrapOr = function (_v) {\r\n return this.value;\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.match = function (ok, _err) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype._unsafeUnwrap = function (_) {\r\n return this.value;\r\n };\r\n Ok.prototype._unsafeUnwrapErr = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrapErr` on an Ok', this, config);\r\n };\r\n return Ok;\r\n}());\r\nvar Err = /** @class */ (function () {\r\n function Err(error) {\r\n this.error = error;\r\n }\r\n Err.prototype.isOk = function () {\r\n return false;\r\n };\r\n Err.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.map = function (_f) {\r\n return err(this.error);\r\n };\r\n Err.prototype.mapErr = function (f) {\r\n return err(f(this.error));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.andThen = function (_f) {\r\n return err(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.orElse = function (f) {\r\n return f(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncAndThen = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncMap = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n Err.prototype.unwrapOr = function (v) {\r\n return v;\r\n };\r\n Err.prototype.match = function (_ok, err) {\r\n return err(this.error);\r\n };\r\n Err.prototype._unsafeUnwrap = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrap` on an Err', this, config);\r\n };\r\n Err.prototype._unsafeUnwrapErr = function (_) {\r\n return this.error;\r\n };\r\n return Err;\r\n}());\r\nvar fromThrowable = Result.fromThrowable;\r\n//#endregion\n\nexport { Err, Ok, Result, ResultAsync, err, errAsync, fromPromise, fromSafePromise, fromThrowable, ok, okAsync };\n", "import {Complex, DetailedError, Format, Util, radian} from '@qni/common'\nimport {Eq} from 'fp-ts/number'\nimport {isNonEmpty} from 'fp-ts/lib/Array'\nimport {range} from 'fp-ts/NonEmptyArray'\nimport {uniq} from 'fp-ts/lib/ReadonlyNonEmptyArray'\n\ntype FormatOptions = {\n allowAbbreviation?: boolean\n maxAbbreviationError?: number\n fixedDigits?: number | undefined\n itemSeparator?: string\n}\n\nconst DEFAULT_FORMAT_OPTIONS: FormatOptions = {\n allowAbbreviation: true,\n maxAbbreviationError: 0,\n fixedDigits: undefined,\n itemSeparator: ', ',\n}\n\n// TODO: X, Y, Z \u306A\u3069\u306E\u5404\u5B9A\u6570\u3092 Simulator \u306B\u79FB\u52D5\nexport class Matrix {\n /**\n * Hadamard gate.\n *\n * ```\n * H = 1/\u221A2 * | 1 1 |\n * | 1 -1 |\n * ```\n */\n static readonly H = Matrix.square(1, 1, 1, -1).times(Math.sqrt(0.5))\n\n /**\n * Pauli X gate.\n *\n * ```\n * X = | 0 1 |\n * | 1 0 |\n * ```\n */\n static readonly PAULI_X = Matrix.square(0, 1, 1, 0)\n\n /**\n * Pauli Y gate.\n *\n * ```\n * Y = | 0 -i |\n * | i 0 |\n * ```\n */\n static readonly PAULI_Y = Matrix.square(0, new Complex(0, -1), Complex.I, 0)\n\n /**\n * Pauli Z gate.\n *\n * ```\n * Z = | 1 0 |\n * | 0 -1 |\n * ```\n */\n static readonly PAULI_Z = Matrix.square(1, 0, 0, -1)\n\n /**\n * S gate.\n *\n * ```\n * S = | 1 0 |\n * | 0 i |\n * ```\n */\n static readonly S = Matrix.square(1, 0, 0, Complex.I)\n\n /**\n * S\u2020 gate.\n *\n * ```\n * S\u2020 = | 1 0 |\n * | 0 -i |\n * ```\n */\n static readonly SDagger = Matrix.square(1, 0, 0, Complex.I.neg())\n\n /**\n * T gate.\n *\n * ```\n * T = | 1 0 |\n * | 0 exp(i\u03C0/4) |\n * ```\n */\n static readonly T = Matrix.square(1, 0, 0, Complex.I.times(Math.PI / 4).exp())\n\n /**\n * T\u2020 gate.\n *\n * ```\n * T = | 1 0 |\n * | 0 exp(-i\u03C0/4) |\n * ```\n */\n static readonly TDagger = Matrix.square(1, 0, 0, Complex.I.times(Math.PI / -4).exp())\n\n /**\n * Phase (P) gate.\n *\n * ```\n * P(\u03C6) = | 1 0 |\n * | 0 exp(i\u03C6) |\n * ```\n */\n static PHASE(phi: string): Matrix {\n const \u03C6 = radian(phi)\n const e = Complex.from(Math.E)\n\n return Matrix.square(1, 0, 0, e.pow(Complex.I.times(\u03C6)))\n }\n\n /**\n * RNOT (\u221AX) gate.\n *\n * ```\n * \u221AX = 1/2 * | 1+i 1-i |\n * | 1-i 1+i |\n * ```\n */\n static get RNOT(): Matrix {\n const i = Complex.I\n const mi = i.neg()\n\n return Matrix.square(i.plus(1), mi.plus(1), mi.plus(1), i.plus(1)).times(0.5)\n }\n\n /**\n * Rx gate.\n *\n * ```\n * Rx(\u03B8) = | cos(\u03B8/2) -isin(\u03B8/2) |\n * | -isin(\u03B8/2) cos(\u03B8/2) |\n *\n * e.g.,\n * Rx(\u03C0/2) = | cos(\u03C0/4) -isin(\u03C0/4) |\n * | -isin(\u03C0/4) cos(\u03C0/4) |\n *\n * = 1/\u221A2 * | 1 -i |\n * | -i 1 |\n * ```\n */\n static RX(theta: string): Matrix {\n const \u03B8 = radian(theta)\n const mi = Complex.I.neg()\n const cos\u03B82 = Math.cos(\u03B8 / 2)\n const sin\u03B82 = Math.sin(\u03B8 / 2)\n\n return Matrix.square(cos\u03B82, mi.times(sin\u03B82), mi.times(sin\u03B82), cos\u03B82)\n }\n\n /**\n * Ry gate.\n *\n * ```\n * Ry(\u03B8) = | cos(\u03B8/2) -sin(\u03B8/2) |\n * | sin(\u03B8/2) cos(\u03B8/2) |\n *\n * e.g.,\n * Ry(\u03C0/2) = | cos(\u03C0/4) -sin(\u03C0/4) |\n * | sin(\u03C0/4) cos(\u03C0/4) |\n *\n * = 1/\u221A2 * | 1 -1 |\n * | 1 1 |\n * ```\n */\n static RY(theta: string): Matrix {\n const \u03B8 = radian(theta)\n const cos\u03B82 = Math.cos(\u03B8 / 2)\n const sin\u03B82 = Math.sin(\u03B8 / 2)\n\n return Matrix.square(cos\u03B82, -sin\u03B82, sin\u03B82, cos\u03B82)\n }\n\n /**\n * Rz gate.\n *\n * ```\n * Rz(\u03B8) = | exp(-i\u03B8/2) 0 |\n * | 0 exp(i\u03B8/2) |\n *\n * e.g.,\n * Rz(\u03C0/2) = | exp(-i\u03C0/4) 0 |\n * | 0 exp(i\u03C0/4) |\n *\n * = 1/\u221A2 * | 1-i 0 |\n * | 0 1+i |\n * ```\n */\n static RZ(theta: string): Matrix {\n const \u03B8 = radian(theta)\n const i = Complex.I\n\n return Matrix.square(\n i\n .neg()\n .times(\u03B8 / 2)\n .exp(),\n 0,\n 0,\n i.times(\u03B8 / 2).exp(),\n )\n }\n\n static fromRows(rows: Complex[][]): Matrix {\n const h = rows.length\n const rowWidths = rows.map(e => e.length)\n if (!isNonEmpty(rowWidths)) throw new DetailedError('Zero height', {rows})\n\n const ws = uniq(Eq)(rowWidths)\n if (ws.length !== 1) throw new DetailedError('Inconsistent row widths.', {rows})\n const w = ws[0]\n\n const buffer = new Float64Array(w * h * 2)\n let i = 0\n for (const row of rows) {\n for (const cell of row) {\n buffer[i] = Complex.real(cell)\n buffer[i + 1] = Complex.imag(cell)\n i += 2\n }\n }\n return new Matrix(w, h, buffer)\n }\n\n static generate(\n width: number,\n height: number,\n coefficientRowColGenerator: (row: number, col: number) => number | Complex,\n ): Matrix {\n const buf = new Float64Array(width * height * 2)\n for (let r = 0; r < height; r++) {\n for (let c = 0; c < width; c++) {\n const k = (r * width + c) * 2\n const v = coefficientRowColGenerator(r, c)\n buf[k] = Complex.real(v)\n buf[k + 1] = Complex.imag(v)\n }\n }\n return new Matrix(width, height, buf)\n }\n\n static solo(coef: number | Complex): Matrix {\n return new Matrix(1, 1, new Float64Array([Complex.real(coef), Complex.imag(coef)]))\n }\n\n static square(...coefs: Array): Matrix {\n Util.need(Array.isArray(coefs), 'Array.isArray(coefs)', coefs)\n const n = Math.round(Math.sqrt(coefs.length))\n Util.need(n * n === coefs.length, 'Matrix.square: non-square number of arguments')\n return Matrix.generate(n, n, (r, c) => coefs[r * n + c])\n }\n\n static col(...coefs: Array): Matrix {\n Util.need(Array.isArray(coefs), 'Array.isArray(coefs)', coefs)\n return Matrix.generate(1, coefs.length, r => coefs[r])\n }\n\n static row(...coefs: Array): Matrix {\n Util.need(Array.isArray(coefs), 'Array.isArray(coefs)', coefs)\n return Matrix.generate(coefs.length, 1, (r, c) => coefs[c])\n }\n\n static identity(size: number): Matrix {\n if (!Number.isInteger(size) || size <= 0) {\n throw new DetailedError('Bad size', {size})\n }\n const buf = new Float64Array(size * size * 2)\n for (let k = 0; k < size; k++) {\n buf[k * (size + 1) * 2] = 1\n }\n return new Matrix(size, size, buf)\n }\n\n static zero(width: number, height: number): Matrix {\n return new Matrix(width, height, new Float64Array(width * height * 2))\n }\n\n public width: number\n public height: number\n public buffer: Float64Array | Float32Array\n\n constructor(width: number, height: number, buffer: Float64Array | Float32Array) {\n if (width * height * 2 !== buffer.length) {\n throw new DetailedError('width*height*2 !== buffer.length', {\n width,\n height,\n len: buffer.length,\n })\n }\n this.width = width\n this.height = height\n this.buffer = buffer\n }\n\n columnAt(colIndex: number): Complex[] {\n Util.need(colIndex >= 0 && colIndex <= this.width, 'colIndex >= 0 && colIndex <= this.width')\n const col = []\n for (let r = 0; r < this.height; r++) {\n col.push(this.cell(colIndex, r))\n }\n return col\n }\n\n adjoint(): Matrix {\n const w = this.height\n const h = this.width\n const newBuf = new Float64Array(w * h * 2)\n for (let r = 0; r < h; r++) {\n for (let c = 0; c < w; c++) {\n const kIn = (c * this.width + r) * 2\n const kOut = (r * w + c) * 2\n newBuf[kOut] = this.buffer[kIn]\n newBuf[kOut + 1] = -this.buffer[kIn + 1]\n }\n }\n return new Matrix(w, h, newBuf)\n }\n\n times(other: Matrix | number | Complex): Matrix {\n return other instanceof Matrix ? this.timesMatrix(other) : this.timesScalar(other)\n }\n\n private timesMatrix(other: Matrix): Matrix {\n if (this.width !== other.height) {\n throw new DetailedError('Incompatible sizes.', {this: this, other})\n }\n const w = other.width\n const h = this.height\n const n = this.width\n const newBuffer = new Float64Array(w * h * 2)\n for (let r = 0; r < h; r++) {\n for (let c = 0; c < w; c++) {\n const k3 = (r * w + c) * 2\n for (let k = 0; k < n; k++) {\n const k1 = (r * n + k) * 2\n const k2 = (k * w + c) * 2\n const r1 = this.buffer[k1]\n const i1 = this.buffer[k1 + 1]\n const r2 = other.buffer[k2]\n const i2 = other.buffer[k2 + 1]\n const r3 = r1 * r2 - i1 * i2\n const i3 = r1 * i2 + r2 * i1\n newBuffer[k3] += r3\n newBuffer[k3 + 1] += i3\n }\n }\n }\n return new Matrix(w, h, newBuffer)\n }\n\n private timesScalar(v: number | Complex): Matrix {\n const newBuffer = new Float64Array(this.buffer.length)\n const sr = Complex.real(v)\n const si = Complex.imag(v)\n for (let i = 0; i < newBuffer.length; i += 2) {\n const vr = this.buffer[i]\n const vi = this.buffer[i + 1]\n newBuffer[i] = vr * sr - vi * si\n newBuffer[i + 1] = vr * si + vi * sr\n }\n return new Matrix(this.width, this.height, newBuffer)\n }\n\n isEqualTo(obj: Matrix | unknown): boolean {\n if (this === obj) return true\n if (!(obj instanceof Matrix)) return false\n\n const other = obj\n return (\n this.width === other.width &&\n this.height === other.height &&\n range(0, this.buffer.length - 1).every(i => this.buffer[i] === other.buffer[i])\n )\n }\n\n isApproximatelyEqualTo(other: Matrix | unknown, epsilon: number): boolean {\n return (\n other instanceof Matrix &&\n this.width === other.width &&\n this.height === other.height &&\n Math.sqrt(this.minus(other).norm2()) <= epsilon\n )\n }\n\n minus(other: Matrix): Matrix {\n const {width: w, height: h, buffer: b1} = this\n const b2 = other.buffer\n Util.need(other.width === w && other.height === h, 'Matrix.minus: compatible sizes')\n\n const newBuffer = new Float64Array(this.buffer.length)\n for (let i = 0; i < newBuffer.length; i++) {\n newBuffer[i] = b1[i] - b2[i]\n }\n return new Matrix(w, h, newBuffer)\n }\n\n norm2(): number {\n let t = 0\n for (const e of this.buffer) {\n t += e * e\n }\n return t\n }\n\n format(options = DEFAULT_FORMAT_OPTIONS): string {\n const format = new Format(\n options.allowAbbreviation === undefined ? true : options.allowAbbreviation,\n options.maxAbbreviationError || 0,\n options.fixedDigits,\n options.itemSeparator || ', ',\n )\n return this.toString(format)\n }\n\n toString(options = DEFAULT_FORMAT_OPTIONS): string {\n const data = this.rows()\n .map(row => row.map(e => e.format(options)).join(options.itemSeparator))\n .join(`}${options.itemSeparator}{`)\n return `{{${data}}}`\n }\n\n rows(): Complex[][] {\n return range(0, this.height - 1).map(row =>\n range(0, this.width - 1).map(col => this.cell(col, row)),\n )\n }\n\n cell(col: number, row: number): Complex {\n if (col < 0 || row < 0 || col >= this.width || row >= this.height) {\n throw new DetailedError('Cell out of range', {\n col,\n row,\n width: this.width,\n height: this.height,\n })\n }\n const i = (this.width * row + col) * 2\n return new Complex(this.buffer[i], this.buffer[i + 1])\n }\n\n set(col: number, row: number, value: Complex): void {\n if (col < 0 || row < 0 || col >= this.width || row >= this.height) {\n throw new DetailedError('Cell out of range', {\n col,\n row,\n width: this.width,\n height: this.height,\n })\n }\n const i = (this.width * row + col) * 2\n this.buffer[i] = value.real\n this.buffer[i + 1] = value.imag\n }\n\n isApproximatelyHermitian(epsilon: number): boolean {\n if (this.width !== this.height) {\n return false\n }\n for (let c = 0; c < this.width; c++) {\n for (let r = 0; r < this.height; r++) {\n const i = (this.width * r + c) * 2\n const j = (this.width * c + r) * 2\n if (Math.abs(this.buffer[i] - this.buffer[j]) > epsilon) {\n return false\n }\n if (Math.abs(this.buffer[i + 1] + this.buffer[j + 1]) > epsilon) {\n return false\n }\n }\n }\n return true\n }\n\n plus(other: Matrix): Matrix {\n const {width: w, height: h, buffer: b1} = this\n const b2 = other.buffer\n Util.need(other.width === w && other.height === h, 'Matrix.plus: compatible sizes')\n\n const newBuffer = new Float64Array(this.buffer.length)\n for (let i = 0; i < newBuffer.length; i++) {\n newBuffer[i] = b1[i] + b2[i]\n }\n return new Matrix(w, h, newBuffer)\n }\n\n tensorProduct(other: Matrix): Matrix {\n const w1 = this.width\n const h1 = this.height\n const w2 = other.width\n const h2 = other.height\n const w = w1 * w2\n const h = h1 * h2\n const newBuffer = new Float64Array(w * h * 2)\n for (let r1 = 0; r1 < h1; r1++) {\n for (let r2 = 0; r2 < h2; r2++) {\n for (let c1 = 0; c1 < w1; c1++) {\n for (let c2 = 0; c2 < w2; c2++) {\n const k1 = (r1 * w1 + c1) * 2\n const k2 = (r2 * w2 + c2) * 2\n const k3 = ((r1 * h2 + r2) * w + (c1 * w2 + c2)) * 2\n const cr1 = this.buffer[k1]\n const ci1 = this.buffer[k1 + 1]\n const cr2 = other.buffer[k2]\n const ci2 = other.buffer[k2 + 1]\n const cr3 = cr1 * cr2 - ci1 * ci2\n const ci3 = cr1 * ci2 + ci1 * cr2\n newBuffer[k3] = cr3\n newBuffer[k3 + 1] = ci3\n }\n }\n }\n }\n return new Matrix(w, h, newBuffer)\n }\n\n timesQubitOperation(operation2x2: Matrix, qubitIndex: number, controlMask: number, desiredValueMask: number): Matrix {\n Util.need((controlMask & (1 << qubitIndex)) === 0, 'Matrix.timesQubitOperation: self-controlled')\n Util.need(operation2x2.width === 2 && operation2x2.height === 2, 'Matrix.timesQubitOperation: not 2x2')\n\n const {width: w, height: h, buffer: old} = this\n const [ar, ai, br, bi, cr, ci, dr, di] = operation2x2.buffer\n\n Util.need(h >= 2 << qubitIndex, 'Matrix.timesQubitOperation: qubit index out of range')\n\n const buf = new Float64Array(old)\n let i = 0\n for (let r = 0; r < h; r++) {\n const isControlled = ((controlMask & r) ^ desiredValueMask) !== 0\n const qubitVal = (r & (1 << qubitIndex)) !== 0\n for (let c = 0; c < w; c++) {\n if (!isControlled && !qubitVal) {\n const j = i + (1 << qubitIndex) * 2 * w\n const xr = buf[i]\n const xi = buf[i + 1]\n const yr = buf[j]\n const yi = buf[j + 1]\n\n buf[i] = xr * ar - xi * ai + yr * br - yi * bi\n buf[i + 1] = xr * ai + xi * ar + yr * bi + yi * br\n buf[j] = xr * cr - xi * ci + yr * dr - yi * di\n buf[j + 1] = xr * ci + xi * cr + yr * di + yi * dr\n }\n i += 2\n }\n }\n return new Matrix(w, h, buf)\n }\n\n trace(): Complex {\n let total_r = 0\n let total_i = 0\n const d = this.width * 2 + 2\n for (let i = 0; i < this.buffer.length; i += d) {\n total_r += this.buffer[i]\n total_i += this.buffer[i + 1]\n }\n return new Complex(total_r, total_i)\n }\n\n qubitDensityMatrixToBlochVector(): [number, number, number] {\n if (this.width !== 2 || this.height !== 2) {\n throw new DetailedError('Need a 2x2 density matrix.', this)\n }\n if (!this.isApproximatelyHermitian(0.01)) {\n throw new DetailedError('Density matrix should be Hermitian.', this)\n }\n if (!this.trace().nearlyEq(1, 0.01)) {\n throw new DetailedError('Density matrix should have unit trace.', this)\n }\n\n // Density matrix from bloch vector equation: M = 1/2 (I + v\u03C3)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [ar, ai, br, bi, cr, ci, dr, di] = this.buffer\n const x = cr + br\n const y = ci - bi\n const z = ar - dr\n return [x, y, z]\n }\n\n clone(): Matrix {\n return new Matrix(this.width, this.height, this.buffer.slice())\n }\n}\n", "import {Complex, DetailedError} from '@qni/common'\nimport {Matrix} from './matrix'\n\nexport class StateVector {\n public matrix: Matrix\n public size: number\n public nqubit: number\n\n get bra(): Matrix {\n return this.matrix.adjoint()\n }\n\n get ket(): Matrix {\n return this.matrix\n }\n\n constructor(bits: string | Matrix) {\n if ('string' === typeof bits) {\n this.matrix = this.bitstringToMatrix(bits)\n } else {\n this.matrix = bits\n }\n\n this.size = this.matrix.height\n this.nqubit = Math.log2(this.size)\n }\n\n amplifier(index: number): Complex {\n return this.matrix.cell(0, index)\n }\n\n setAmplifier(index: number, value: Complex): void {\n this.matrix.set(0, index, value)\n }\n\n blochVector(bit: number): [number, number, number] {\n return this.qubitDensityMatrix(bit).qubitDensityMatrixToBlochVector()\n }\n\n isApproximatelyEqualTo(other: StateVector | unknown, epsilon: number): boolean {\n return other instanceof StateVector && this.matrix.isApproximatelyEqualTo(other.matrix, epsilon)\n }\n\n timesQubitOperation(operation2x2: Matrix, qubitIndex: number, controlMask: number): void {\n this.matrix = this.matrix.timesQubitOperation(operation2x2, qubitIndex, controlMask, controlMask)\n }\n\n toString(): string {\n return this.matrix.toString()\n }\n\n private bitstringToMatrix(bitString: string): Matrix {\n let paren = false\n let parenToken = ''\n const kets = []\n const invalidBitStringError = new DetailedError('Invalid StateVector bit string', bitString)\n\n for (const char of bitString.split('')) {\n switch (char) {\n case '0': {\n if (paren) throw invalidBitStringError\n kets.push(Matrix.col(1, 0))\n break\n }\n case '1': {\n if (paren) throw invalidBitStringError\n kets.push(Matrix.col(0, 1))\n break\n }\n case '+': {\n if (paren) throw invalidBitStringError\n kets.push(Matrix.col(1, 1).times(Math.sqrt(0.5)))\n break\n }\n case '-': {\n if (paren) {\n parenToken += '-'\n } else {\n kets.push(Matrix.col(1, -1).times(Math.sqrt(0.5)))\n }\n break\n }\n case 'i': {\n if (paren) {\n parenToken += 'i'\n } else {\n kets.push(Matrix.col(1, new Complex(0, 1)).times(Math.sqrt(0.5)))\n }\n break\n }\n case '(': {\n if (paren) throw invalidBitStringError\n paren = true\n parenToken = ''\n break\n }\n case ')': {\n if (!paren) throw invalidBitStringError\n if (parenToken !== '-i') throw invalidBitStringError\n kets.push(Matrix.col(1, new Complex(0, -1)).times(Math.sqrt(0.5)))\n paren = false\n break\n }\n default:\n throw invalidBitStringError\n }\n }\n\n if (kets.length === 0) throw invalidBitStringError\n return kets.reduce((result, each) => result.tensorProduct(each))\n }\n\n qubitDensityMatrix(qubitIndex: number): Matrix {\n if (qubitIndex < 0 || qubitIndex >= this.nqubit) {\n throw new DetailedError('Qubit index out of range', qubitIndex)\n }\n\n const traceBits = [...Array(Math.log2(this.matrix.height)).keys()].filter(each => each !== qubitIndex)\n const removeBits = (num: number, bits: number[]) => {\n return bits\n .sort()\n .reverse()\n .reduce((result, each) => {\n let mask = result >> (each + 1)\n mask = mask << each\n const right = ((1 << each) - 1) & result\n\n return mask | right\n }, num)\n }\n\n let densityMatrix = Matrix.zero(2, 2)\n\n for (let bra = 0; bra < this.matrix.height; bra++) {\n for (let ket = 0; ket < this.matrix.height; ket++) {\n const survived = traceBits.every(b => {\n return ((bra >> b) & 1) === ((ket >> b) & 1)\n })\n if (!survived) continue\n\n const amp = this.matrix.cell(0, ket).times(this.matrix.cell(0, bra).conjugate())\n if (amp.isEqualTo(0)) continue\n\n const ketMat = removeBits(ket, traceBits) === 0 ? Matrix.col(1, 0) : Matrix.col(0, 1)\n const braMat = removeBits(bra, traceBits) === 0 ? Matrix.row(1, 0) : Matrix.row(0, 1)\n const ketBra = ketMat.times(braMat)\n\n densityMatrix = densityMatrix.plus(ketBra.times(amp))\n }\n }\n\n return densityMatrix\n }\n}\n", "export function round(n: number, decimal: number): number {\n return Math.round(n * Math.pow(10, decimal)) / Math.pow(10, decimal)\n}\n", "import {\n Complex,\n ResizeableSpan,\n SerializedBlochDisplayType,\n SerializedCircuitStep,\n SerializedControlGateType,\n SerializedHGateType,\n SerializedMeasurementGateType,\n SerializedPhaseGateType,\n SerializedQftDaggerGateType,\n SerializedQftGateType,\n SerializedRnotGateType,\n SerializedRxGateType,\n SerializedRyGateType,\n SerializedRzGateType,\n SerializedSDaggerGateType,\n SerializedSGateType,\n SerializedSpacerGateType,\n SerializedSwapGateType,\n SerializedTDaggerGateType,\n SerializedTGateType,\n SerializedWrite0GateType,\n SerializedWrite1GateType,\n SerializedXGateType,\n SerializedYGateType,\n SerializedZGateType,\n} from '@qni/common'\nimport {Matrix} from './matrix'\nimport {StateVector} from './state-vector'\nimport {round} from './util'\n\nexport class Simulator {\n public state: StateVector\n public blochVectors!: {[bit: number]: [number, number, number]}\n public measuredBits: {[bit: number]: number}\n public flags: {[key: string]: boolean}\n\n constructor(bits: string | StateVector) {\n if ('string' === typeof bits) {\n this.state = new StateVector(bits)\n } else {\n this.state = bits\n }\n\n this.measuredBits = {}\n this.flags = {}\n }\n\n runStep(operations: SerializedCircuitStep): Simulator {\n this.blochVectors = {}\n\n for (const each of operations) {\n switch (each.type) {\n case SerializedWrite0GateType:\n this.write(0, ...each.targets)\n break\n case SerializedWrite1GateType:\n this.write(1, ...each.targets)\n break\n case SerializedBlochDisplayType:\n for (const target of each.targets) {\n this.blochVectors[target] = this.state.blochVector(target)\n }\n break\n case SerializedHGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.ach(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.h(...each.targets)\n }\n break\n case SerializedXGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acnot(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.x(...each.targets)\n }\n break\n case SerializedYGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acy(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.y(...each.targets)\n }\n break\n case SerializedZGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acz(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.z(...each.targets)\n }\n break\n case SerializedSpacerGateType:\n break\n case SerializedPhaseGateType: {\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acphase(each.controls || [], each.antiControls || [], each.angle, each.targets[0])\n } else {\n this.cphase(each.targets.slice(1), each.angle, each.targets[0])\n }\n break\n }\n case SerializedSGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acs(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.s(...each.targets)\n }\n break\n }\n case SerializedSDaggerGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acsDagger(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.sDagger(...each.targets)\n }\n break\n }\n case SerializedTGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.act(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.t(...each.targets)\n }\n break\n }\n case SerializedTDaggerGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.actDagger(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.tDagger(...each.targets)\n }\n break\n }\n case SerializedQftGateType:\n this.qft(each.span, ...each.targets)\n break\n case SerializedQftDaggerGateType:\n this.qftDagger(each.span, ...each.targets)\n break\n case SerializedControlGateType: {\n this.cz(each.targets.slice(1), each.targets[0])\n break\n }\n case SerializedSwapGateType: {\n // TODO: controls \u304C\u8907\u6570\u306E\u5834\u5408\u306B\u3082\u5BFE\u5FDC\n if (each.controls && each.controls.length === 1) {\n this.cswap(each.controls[0], each.targets[0], each.targets[1])\n } else {\n this.swap(each.targets[0], each.targets[1])\n }\n break\n }\n case SerializedRnotGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acrnot(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.rnot(...each.targets)\n }\n break\n case SerializedRxGateType:\n if (each.if && !this.flags[each.if]) break\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acrx(each.controls || [], each.antiControls || [], each.angle, ...each.targets)\n } else {\n this.rx(each.angle, ...each.targets)\n }\n break\n case SerializedRyGateType:\n if (each.if && !this.flags[each.if]) break\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acry(each.controls || [], each.antiControls || [], each.angle, ...each.targets)\n } else {\n this.ry(each.angle, ...each.targets)\n }\n break\n case SerializedRzGateType:\n if (each.if && !this.flags[each.if]) break\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acrz(each.controls || [], each.antiControls || [], each.angle, ...each.targets)\n } else {\n this.rz(each.angle, ...each.targets)\n }\n break\n case SerializedMeasurementGateType:\n for (const target of each.targets) {\n this.measure(target)\n if (each.flag) this.flags[each.flag] = this.measuredBits[target] === 1\n }\n break\n default:\n throw new Error('Unknown instruction')\n }\n }\n\n return this\n }\n\n write(value: number, ...targets: number[]): Simulator {\n for (const t of targets) {\n const pZero = round(this.pZero(t), 5)\n\n if ((value === 0 && pZero === 0) || (value === 1 && pZero === 1)) {\n this.x(t)\n }\n }\n return this\n }\n\n h(...targets: number[]): Simulator {\n this.u(Matrix.H, ...targets)\n return this\n }\n\n ch(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Matrix.H, ...targets)\n return this\n }\n\n ach(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.H, ...targets)\n this.x(...antiControls)\n return this\n }\n\n x(...targets: number[]): Simulator {\n this.u(Matrix.PAULI_X, ...targets)\n return this\n }\n\n cnot(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Matrix.PAULI_X, ...targets)\n\n return this\n }\n\n acnot(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.PAULI_X, ...targets)\n this.x(...antiControls)\n\n return this\n }\n\n y(...targets: number[]): Simulator {\n this.u(Matrix.PAULI_Y, ...targets)\n return this\n }\n\n cy(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Matrix.PAULI_Y, ...targets)\n return this\n }\n\n acy(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.PAULI_Y, ...targets)\n this.x(...antiControls)\n return this\n }\n\n z(...targets: number[]): Simulator {\n this.u(Matrix.PAULI_Z, ...targets)\n return this\n }\n\n cz(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Matrix.PAULI_Z, ...targets)\n return this\n }\n\n acz(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.PAULI_Z, ...targets)\n this.x(...antiControls)\n return this\n }\n\n phase(phi: string, ...targets: number[]): Simulator {\n this.u(Matrix.PHASE(phi), ...targets)\n return this\n }\n\n cphase(controls: number | number[], phi: string, ...targets: number[]): Simulator {\n this.cu(controls, Matrix.PHASE(phi), ...targets)\n return this\n }\n\n acphase(controls: number | number[], antiControls: number[], phi: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.PHASE(phi), ...targets)\n this.x(...antiControls)\n return this\n }\n\n s(...targets: number[]): Simulator {\n this.u(Matrix.S, ...targets)\n return this\n }\n\n acs(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.S, ...targets)\n this.x(...antiControls)\n return this\n }\n\n sDagger(...targets: number[]): Simulator {\n this.u(Matrix.SDagger, ...targets)\n return this\n }\n\n acsDagger(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.SDagger, ...targets)\n this.x(...antiControls)\n return this\n }\n\n t(...targets: number[]): Simulator {\n this.u(Matrix.T, ...targets)\n return this\n }\n\n ct(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Matrix.T, ...targets)\n return this\n }\n\n act(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.T, ...targets)\n this.x(...antiControls)\n return this\n }\n\n tDagger(...targets: number[]): Simulator {\n this.u(Matrix.TDagger, ...targets)\n return this\n }\n\n actDagger(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.TDagger, ...targets)\n this.x(...antiControls)\n return this\n }\n\n swap(target0: number, target1: number): Simulator {\n this.cnot(target0, target1).cnot(target1, target0).cnot(target0, target1)\n return this\n }\n\n cswap(control: number, target0: number, target1: number): Simulator {\n this.cnot([control, target0], target1).cnot([control, target1], target0).cnot([control, target0], target1)\n return this\n }\n\n rnot(...targets: number[]): Simulator {\n this.u(Matrix.RNOT, ...targets)\n return this\n }\n\n crnot(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.RNOT, ...targets)\n this.x(...antiControls)\n return this\n }\n\n acrnot(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.RNOT, ...targets)\n this.x(...antiControls)\n return this\n }\n\n rx(theta: string, ...targets: number[]): Simulator {\n this.u(Matrix.RX(theta), ...targets)\n return this\n }\n\n acrx(controls: number | number[], antiControls: number[], theta: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.RX(theta), ...targets)\n this.x(...antiControls)\n return this\n }\n\n crx(controls: number | number[], theta: string, ...targets: number[]): Simulator {\n this.cu(controls, Matrix.RX(theta), ...targets)\n return this\n }\n\n ry(theta: string, ...targets: number[]): Simulator {\n this.u(Matrix.RY(theta), ...targets)\n return this\n }\n\n cry(controls: number | number[], theta: string, ...targets: number[]): Simulator {\n this.cu(controls, Matrix.RY(theta), ...targets)\n return this\n }\n\n acry(controls: number | number[], antiControls: number[], theta: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.RY(theta), ...targets)\n this.x(...antiControls)\n return this\n }\n\n rz(theta: string, ...targets: number[]): Simulator {\n this.u(Matrix.RZ(theta), ...targets)\n return this\n }\n\n crz(controls: number | number[], theta: string, ...targets: number[]): Simulator {\n this.cu(controls, Matrix.RZ(theta), ...targets)\n return this\n }\n\n acrz(controls: number | number[], antiControls: number[], theta: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.RZ(theta), ...targets)\n this.x(...antiControls)\n return this\n }\n\n qft(span: ResizeableSpan, ...targets: number[]): Simulator {\n for (const each of targets) {\n this.qftSingleTargetBit(span, each)\n }\n return this\n }\n\n private qftSingleTargetBit(span: ResizeableSpan, target: number): Simulator {\n switch (span) {\n case 1: {\n this.h(target)\n break\n }\n case 2: {\n this.swap(target, target + 1)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .h(target + 1)\n break\n }\n case 3: {\n this.swap(target, target + 2)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .h(target + 2)\n break\n }\n case 4: {\n this.swap(target, target + 3)\n .swap(target + 1, target + 2)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .h(target + 3)\n break\n }\n case 5: {\n this.swap(target, target + 4)\n .swap(target + 1, target + 3)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .h(target + 4)\n break\n }\n case 6: {\n this.swap(target, target + 5)\n .swap(target + 1, target + 4)\n .swap(target + 2, target + 3)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .h(target + 5)\n break\n }\n case 7: {\n this.swap(target, target + 6)\n .swap(target + 1, target + 5)\n .swap(target + 2, target + 4)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .h(target + 6)\n break\n }\n case 8: {\n this.swap(target, target + 7)\n .swap(target + 1, target + 6)\n .swap(target + 2, target + 5)\n .swap(target + 3, target + 4)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .h(target + 7)\n break\n }\n case 9: {\n this.swap(target, target + 8)\n .swap(target + 1, target + 7)\n .swap(target + 2, target + 6)\n .swap(target + 3, target + 5)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .h(target + 8)\n break\n }\n case 10: {\n this.swap(target, target + 9)\n .swap(target + 1, target + 8)\n .swap(target + 2, target + 7)\n .swap(target + 3, target + 6)\n .swap(target + 4, target + 5)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .h(target + 9)\n break\n }\n case 11: {\n this.swap(target, target + 10)\n .swap(target + 1, target + 9)\n .swap(target + 2, target + 8)\n .swap(target + 3, target + 7)\n .swap(target + 4, target + 6)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .h(target + 10)\n break\n }\n case 12: {\n this.swap(target, target + 11)\n .swap(target + 1, target + 10)\n .swap(target + 2, target + 9)\n .swap(target + 3, target + 8)\n .swap(target + 4, target + 7)\n .swap(target + 5, target + 6)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .h(target + 11)\n break\n }\n case 13: {\n this.swap(target, target + 12)\n .swap(target + 1, target + 11)\n .swap(target + 2, target + 10)\n .swap(target + 3, target + 9)\n .swap(target + 4, target + 8)\n .swap(target + 5, target + 7)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .h(target + 12)\n break\n }\n case 14: {\n this.swap(target, target + 13)\n .swap(target + 1, target + 12)\n .swap(target + 2, target + 11)\n .swap(target + 3, target + 10)\n .swap(target + 4, target + 9)\n .swap(target + 5, target + 8)\n .swap(target + 6, target + 7)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .cphase(target + 13, '\u03C0/8192', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .cphase(target + 13, '\u03C0/4096', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .cphase(target + 13, '\u03C0/2048', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .cphase(target + 13, '\u03C0/1024', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .cphase(target + 13, '\u03C0/512', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .cphase(target + 13, '\u03C0/256', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .cphase(target + 13, '\u03C0/128', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .cphase(target + 13, '\u03C0/64', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .cphase(target + 13, '\u03C0/32', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .cphase(target + 13, '\u03C0/16', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .cphase(target + 13, '\u03C0/8', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .cphase(target + 14, '\u03C0/4', target + 10)\n .h(target + 12)\n .cphase(target + 14, '\u03C0/2', target + 11)\n .h(target + 13)\n break\n }\n case 15: {\n this.swap(target, target + 14)\n .swap(target + 1, target + 13)\n .swap(target + 2, target + 12)\n .swap(target + 3, target + 11)\n .swap(target + 4, target + 10)\n .swap(target + 5, target + 9)\n .swap(target + 6, target + 8)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .cphase(target + 13, '\u03C0/8192', target)\n .cphase(target + 14, '\u03C0/16384', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .cphase(target + 13, '\u03C0/4096', target + 1)\n .cphase(target + 14, '\u03C0/8192', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .cphase(target + 13, '\u03C0/2048', target + 2)\n .cphase(target + 14, '\u03C0/4096', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .cphase(target + 13, '\u03C0/1024', target + 3)\n .cphase(target + 14, '\u03C0/2048', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .cphase(target + 13, '\u03C0/512', target + 4)\n .cphase(target + 14, '\u03C0/1024', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .cphase(target + 13, '\u03C0/256', target + 5)\n .cphase(target + 14, '\u03C0/512', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .cphase(target + 13, '\u03C0/128', target + 6)\n .cphase(target + 14, '\u03C0/256', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .cphase(target + 13, '\u03C0/64', target + 7)\n .cphase(target + 14, '\u03C0/128', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .cphase(target + 13, '\u03C0/32', target + 8)\n .cphase(target + 14, '\u03C0/64', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .cphase(target + 13, '\u03C0/16', target + 8)\n .cphase(target + 14, '\u03C0/32', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .cphase(target + 13, '\u03C0/8', target + 9)\n .cphase(target + 14, '\u03C0/16', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .cphase(target + 14, '\u03C0/4', target + 10)\n .cphase(target + 15, '\u03C0/8', target + 10)\n .h(target + 12)\n .cphase(target + 14, '\u03C0/2', target + 11)\n .cphase(target + 15, '\u03C0/4', target + 11)\n .h(target + 13)\n .cphase(target + 15, '\u03C0/2', target + 12)\n .h(target + 14)\n break\n }\n case 16: {\n this.swap(target, target + 15)\n .swap(target + 1, target + 14)\n .swap(target + 2, target + 13)\n .swap(target + 3, target + 12)\n .swap(target + 4, target + 11)\n .swap(target + 5, target + 10)\n .swap(target + 6, target + 9)\n .swap(target + 7, target + 8)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .cphase(target + 13, '\u03C0/8192', target)\n .cphase(target + 14, '\u03C0/16384', target)\n .cphase(target + 15, '\u03C0/32768', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .cphase(target + 13, '\u03C0/4096', target + 1)\n .cphase(target + 14, '\u03C0/8192', target + 1)\n .cphase(target + 15, '\u03C0/16384', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .cphase(target + 13, '\u03C0/2048', target + 2)\n .cphase(target + 14, '\u03C0/4096', target + 2)\n .cphase(target + 15, '\u03C0/8192', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .cphase(target + 13, '\u03C0/1024', target + 3)\n .cphase(target + 14, '\u03C0/2048', target + 3)\n .cphase(target + 15, '\u03C0/4096', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .cphase(target + 13, '\u03C0/512', target + 4)\n .cphase(target + 14, '\u03C0/1024', target + 4)\n .cphase(target + 15, '\u03C0/2048', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .cphase(target + 13, '\u03C0/256', target + 5)\n .cphase(target + 14, '\u03C0/512', target + 5)\n .cphase(target + 15, '\u03C0/1024', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .cphase(target + 13, '\u03C0/128', target + 6)\n .cphase(target + 14, '\u03C0/256', target + 6)\n .cphase(target + 15, '\u03C0/512', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .cphase(target + 13, '\u03C0/64', target + 7)\n .cphase(target + 14, '\u03C0/128', target + 7)\n .cphase(target + 15, '\u03C0/256', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .cphase(target + 13, '\u03C0/32', target + 8)\n .cphase(target + 14, '\u03C0/64', target + 8)\n .cphase(target + 15, '\u03C0/128', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .cphase(target + 13, '\u03C0/16', target + 8)\n .cphase(target + 14, '\u03C0/32', target + 8)\n .cphase(target + 15, '\u03C0/64', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .cphase(target + 13, '\u03C0/8', target + 9)\n .cphase(target + 14, '\u03C0/16', target + 9)\n .cphase(target + 15, '\u03C0/32', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .cphase(target + 14, '\u03C0/4', target + 10)\n .cphase(target + 15, '\u03C0/8', target + 10)\n .cphase(target + 16, '\u03C0/16', target + 10)\n .h(target + 12)\n .cphase(target + 14, '\u03C0/2', target + 11)\n .cphase(target + 15, '\u03C0/4', target + 11)\n .cphase(target + 16, '\u03C0/8', target + 11)\n .h(target + 13)\n .cphase(target + 15, '\u03C0/2', target + 12)\n .cphase(target + 16, '\u03C0/4', target + 12)\n .h(target + 14)\n .cphase(target + 16, '\u03C0/2', target + 13)\n .h(target + 15)\n break\n }\n default: {\n throw new Error(`Invalid span: ${span}`)\n }\n }\n return this\n }\n\n qftDagger(span: ResizeableSpan, ...targets: number[]): Simulator {\n for (const each of targets) {\n this.qftDaggerSingleTargetBit(span, each)\n }\n return this\n }\n\n private qftDaggerSingleTargetBit(span: ResizeableSpan, target: number): Simulator {\n switch (span) {\n case 1: {\n this.h(target)\n break\n }\n case 2: {\n this.h(target + 1)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 1)\n break\n }\n case 3: {\n this.h(target + 2)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 2)\n break\n }\n case 4: {\n this.h(target + 3)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 3)\n .swap(target + 1, target + 2)\n break\n }\n case 5: {\n this.h(target + 4)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 4)\n .swap(target + 1, target + 3)\n break\n }\n case 6: {\n this.h(target + 5)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 5)\n .swap(target + 1, target + 4)\n .swap(target + 2, target + 3)\n break\n }\n case 7: {\n this.h(target + 6)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 6)\n .swap(target + 1, target + 5)\n .swap(target + 2, target + 4)\n break\n }\n case 8: {\n this.h(target + 7)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 7)\n .swap(target + 1, target + 6)\n .swap(target + 2, target + 5)\n .swap(target + 3, target + 4)\n break\n }\n case 9: {\n this.h(target + 8)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 8)\n .swap(target + 1, target + 7)\n .swap(target + 2, target + 6)\n .swap(target + 3, target + 5)\n break\n }\n case 10: {\n this.h(target + 9)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 9)\n .swap(target + 1, target + 8)\n .swap(target + 2, target + 7)\n .swap(target + 3, target + 6)\n .swap(target + 4, target + 5)\n break\n }\n case 11: {\n this.h(target + 10)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 10)\n .swap(target + 1, target + 9)\n .swap(target + 2, target + 8)\n .swap(target + 3, target + 7)\n .swap(target + 4, target + 6)\n break\n }\n case 12: {\n this.h(target + 11)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 11)\n .swap(target + 1, target + 10)\n .swap(target + 2, target + 9)\n .swap(target + 3, target + 8)\n .swap(target + 4, target + 7)\n .swap(target + 5, target + 6)\n break\n }\n case 13: {\n this.h(target + 12)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 12)\n .swap(target + 1, target + 11)\n .swap(target + 2, target + 10)\n .swap(target + 3, target + 9)\n .swap(target + 4, target + 8)\n .swap(target + 5, target + 7)\n break\n }\n case 14: {\n this.h(target + 13)\n .cphase(target + 13, '-\u03C0/2', target + 12)\n .h(target + 12)\n .cphase(target + 13, '-\u03C0/4', target + 11)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 13, '-\u03C0/8', target + 10)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target)\n .h(target + 10)\n .cphase(target + 13, '-\u03C0/16', target + 9)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 13, '-\u03C0/32', target + 8)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 13, '-\u03C0/64', target + 7)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 13, '-\u03C0/128', target + 6)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 13, '-\u03C0/256', target + 5)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 13, '-\u03C0/512', target + 4)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 13, '-\u03C0/1024', target + 3)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 13, '-\u03C0/2048', target + 2)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 13, '-\u03C0/4096', target + 1)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 13, '-\u03C0/8192', target)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 13)\n .swap(target + 1, target + 12)\n .swap(target + 2, target + 11)\n .swap(target + 3, target + 10)\n .swap(target + 4, target + 9)\n .swap(target + 5, target + 8)\n .swap(target + 6, target + 7)\n break\n }\n case 15: {\n this.h(target + 14)\n .cphase(target + 14, '-\u03C0/2', target + 13)\n .h(target + 13)\n .cphase(target + 14, '-\u03C0/4', target + 12)\n .cphase(target + 13, '-\u03C0/2', target + 12)\n .h(target + 12)\n .cphase(target + 14, '-\u03C0/8', target + 11)\n .cphase(target + 13, '-\u03C0/4', target + 11)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 14, '-\u03C0/16', target + 10)\n .cphase(target + 13, '-\u03C0/8', target + 10)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 14, '-\u03C0/32', target + 9)\n .cphase(target + 13, '-\u03C0/16', target + 9)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 14, '-\u03C0/64', target + 8)\n .cphase(target + 13, '-\u03C0/32', target + 8)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 14, '-\u03C0/128', target + 7)\n .cphase(target + 13, '-\u03C0/64', target + 7)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 14, '-\u03C0/256', target + 6)\n .cphase(target + 13, '-\u03C0/128', target + 6)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 14, '-\u03C0/512', target + 5)\n .cphase(target + 13, '-\u03C0/256', target + 5)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 14, '-\u03C0/1024', target + 4)\n .cphase(target + 13, '-\u03C0/512', target + 4)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 14, '-\u03C0/2048', target + 3)\n .cphase(target + 13, '-\u03C0/1024', target + 3)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 14, '-\u03C0/4096', target + 2)\n .cphase(target + 13, '-\u03C0/2048', target + 2)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 14, '-\u03C0/8192', target + 1)\n .cphase(target + 13, '-\u03C0/4096', target + 1)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 14, '-\u03C0/16384', target)\n .cphase(target + 13, '-\u03C0/8192', target)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 14)\n .swap(target + 1, target + 13)\n .swap(target + 2, target + 12)\n .swap(target + 3, target + 11)\n .swap(target + 4, target + 10)\n .swap(target + 5, target + 9)\n .swap(target + 6, target + 8)\n break\n }\n case 16: {\n this.h(target + 15)\n .cphase(target + 15, '-\u03C0/2', target + 14)\n .h(target + 14)\n .cphase(target + 15, '-\u03C0/4', target + 13)\n .cphase(target + 14, '-\u03C0/4', target + 13)\n .h(target + 13)\n .cphase(target + 15, '-\u03C0/8', target + 12)\n .cphase(target + 14, '-\u03C0/4', target + 12)\n .cphase(target + 13, '-\u03C0/2', target + 12)\n .h(target + 12)\n .cphase(target + 15, '-\u03C0/16', target + 11)\n .cphase(target + 14, '-\u03C0/8', target + 11)\n .cphase(target + 13, '-\u03C0/4', target + 11)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 15, '-\u03C0/32', target + 10)\n .cphase(target + 14, '-\u03C0/16', target + 10)\n .cphase(target + 13, '-\u03C0/8', target + 10)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 15, '-\u03C0/64', target + 9)\n .cphase(target + 14, '-\u03C0/32', target + 9)\n .cphase(target + 13, '-\u03C0/16', target + 9)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 15, '-\u03C0/128', target + 8)\n .cphase(target + 14, '-\u03C0/64', target + 8)\n .cphase(target + 13, '-\u03C0/32', target + 8)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 15, '-\u03C0/256', target + 7)\n .cphase(target + 14, '-\u03C0/128', target + 7)\n .cphase(target + 13, '-\u03C0/64', target + 7)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 15, '-\u03C0/512', target + 6)\n .cphase(target + 14, '-\u03C0/256', target + 6)\n .cphase(target + 13, '-\u03C0/128', target + 6)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 15, '-\u03C0/1024', target + 5)\n .cphase(target + 14, '-\u03C0/512', target + 5)\n .cphase(target + 13, '-\u03C0/256', target + 5)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 15, '-\u03C0/2048', target + 4)\n .cphase(target + 14, '-\u03C0/1024', target + 4)\n .cphase(target + 13, '-\u03C0/512', target + 4)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 15, '-\u03C0/4096', target + 3)\n .cphase(target + 14, '-\u03C0/2048', target + 3)\n .cphase(target + 13, '-\u03C0/1024', target + 3)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 15, '-\u03C0/8192', target + 2)\n .cphase(target + 14, '-\u03C0/4096', target + 2)\n .cphase(target + 13, '-\u03C0/2048', target + 2)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 15, '-\u03C0/16384', target + 1)\n .cphase(target + 14, '-\u03C0/8192', target + 1)\n .cphase(target + 13, '-\u03C0/4096', target + 1)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 15, '-\u03C0/32768', target)\n .cphase(target + 14, '-\u03C0/16384', target)\n .cphase(target + 13, '-\u03C0/8192', target)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target + 1, target + 15)\n .swap(target + 2, target + 14)\n .swap(target + 3, target + 13)\n .swap(target + 4, target + 12)\n .swap(target + 5, target + 11)\n .swap(target + 6, target + 10)\n .swap(target + 7, target + 9)\n .swap(target + 8, target + 8)\n .swap(target + 9, target + 7)\n .swap(target + 10, target + 6)\n break\n }\n default: {\n throw new Error(`Invalid span: ${span}`)\n }\n }\n return this\n }\n\n measure(...targets: number[]): Simulator {\n for (const t of targets) {\n const pZero = this.pZero(t)\n const rand = Math.random()\n\n if (rand <= pZero) {\n for (let bit = 0; bit < 1 << this.state.nqubit; bit++) {\n if ((bit & (1 << t)) !== 0) this.state.setAmplifier(bit, Complex.ZERO)\n const res = this.state.amplifier(bit).div(Math.sqrt(pZero))\n if (res.isOk()) {\n this.state.setAmplifier(bit, res.value)\n } else {\n throw Error(res.error.message)\n }\n }\n this.measuredBits[t] = 0\n } else {\n for (let bit = 0; bit < 1 << this.state.nqubit; bit++) {\n if ((bit & (1 << t)) === 0) this.state.setAmplifier(bit, Complex.ZERO)\n const res = this.state.amplifier(bit).div(Math.sqrt(1 - pZero))\n if (res.isOk()) {\n this.state.setAmplifier(bit, res.value)\n } else {\n throw Error(res.error.message)\n }\n }\n this.measuredBits[t] = 1\n }\n }\n return this\n }\n\n amplitudes(): Complex[] {\n return this.state.matrix.columnAt(0)\n }\n\n private u(u: Matrix, ...targets: number[]): void {\n for (const t of targets) {\n this.state.timesQubitOperation(u, t, 0)\n }\n }\n\n private cu(controls: number | number[], u: Matrix, ...targets: number[]): void {\n const cs = typeof controls === 'number' ? [controls] : controls\n const controlMask = cs.reduce((result, each) => {\n return result | (1 << each)\n }, 0)\n\n for (const t of targets) {\n this.state.timesQubitOperation(u, t, controlMask)\n }\n }\n\n private pZero(target: number): number {\n let p = 0\n for (let bit = 0; bit < 1 << this.state.nqubit; bit++) {\n if ((bit & (1 << target)) === 0) {\n p += Math.pow(this.state.amplifier(bit).abs(), 2)\n }\n }\n return p\n }\n}\n", "import Fraction from 'fraction.js'\n\nexport function radian(angle: string): number {\n const coefficient = piCoefficient(angle)\n const fraction = new Fraction(coefficient).valueOf()\n\n return fraction * Math.PI\n}\n\n// TODO: neverthrow \u5316\nexport function angleDenominator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return 1\n } else if (split.length === 2) {\n return parseInt(split[1])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\n// TODO: neverthrow \u5316\nexport function angleNumerator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return parseInt(split[0])\n } else if (split.length === 2) {\n return parseInt(split[0])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\nexport function isAngleLessThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() < new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isAngleGreaterThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() > new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isValidAngle(angle: string): boolean {\n if (angle === '0') return true\n if (!/\u03C0/.test(angle)) return false\n\n try {\n const coefficient = piCoefficient(angle)\n new Fraction(coefficient).valueOf()\n\n return true\n } catch (e) {\n return false\n }\n}\n\nexport function piCoefficient(angle: string): string {\n return angle.replace(/(\\d+)\u03C0/g, '$1').replace(/\u03C0/g, '1')\n}\n\nexport function reduceAngle(angle: string): string {\n try {\n const coefficient = piCoefficient(angle)\n const reduced = new Fraction(coefficient).toFraction()\n const split = reduced.split('/')\n\n let numerator: string\n if (split[0] === '0') {\n numerator = '0'\n } else if (split[0] === '1') {\n numerator = `\u03C0`\n } else if (split[0] === '-1') {\n numerator = `-\u03C0`\n } else {\n numerator = `${split[0]}\u03C0`\n }\n\n if (split.length === 1) {\n return numerator\n } else {\n return `${numerator}/${split[1]}`\n }\n } catch (e) {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n", "type UnicodeFraction = {character: string; ref: string; value: number}\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const UNICODE_FRACTIONS = [\n {character: '\\u00BD', ref: '\u00BD', expanded: '1/2', value: 1 / 2},\n {character: '\\u00BC', ref: '\u00BC', expanded: '1/4', value: 1 / 4},\n {character: '\\u00BE', ref: '\u00BE', expanded: '3/4', value: 3 / 4},\n {character: '\\u2153', ref: '\u2153', expanded: '1/3', value: 1 / 3},\n {character: '\\u2154', ref: '\u2154', expanded: '2/3', value: 2 / 3},\n {character: '\\u2155', ref: '\u2155', expanded: '1/5', value: 1 / 5},\n {character: '\\u2156', ref: '\u2156', expanded: '2/5', value: 2 / 5},\n {character: '\\u2157', ref: '\u2157', expanded: '3/5', value: 3 / 5},\n {character: '\\u2158', ref: '\u2158', expanded: '4/5', value: 4 / 5},\n {character: '\\u2159', ref: '\u2159', expanded: '1/6', value: 1 / 6},\n {character: '\\u215A', ref: '\u215A', expanded: '5/6', value: 5 / 6},\n {character: '\\u2150', ref: '\u2150', expanded: '1/7', value: 1 / 7},\n {character: '\\u215B', ref: '\u215B', expanded: '1/8', value: 1 / 8},\n {character: '\\u215C', ref: '\u215C', expanded: '3/8', value: 3 / 8},\n {character: '\\u215D', ref: '\u215D', expanded: '5/8', value: 5 / 8},\n {character: '\\u215E', ref: '\u215E', expanded: '7/8', value: 7 / 8},\n {character: '\\u2151', ref: '\u2151', expanded: '1/9', value: 1 / 9},\n {character: '\\u2152', ref: '\u2152', expanded: '1/10', value: 1 / 10},\n]\n\n/**\n * Stores formatting options, for determining what string output should look\n * like.\n */\nexport class Format {\n /**\n * Returns an approximated result, but with the constraint that when it\n * changes slightly it should \"look the same\". (It should look good when\n * varying and animated.)\n */\n static readonly CONSISTENT = new Format(false, 0, 2, ', ')\n\n /**\n * Returns an accurate result, but favoring looking nice over being small.\n */\n static readonly EXACT = new Format(true, 0, undefined, ', ')\n\n /**\n * Returns an accurate result, favoring being small over looking nice.\n */\n static readonly MINIFIED = new Format(true, 0, undefined, ',')\n\n /**\n * Returns an approximated result, strongly favoring looking nice.\n */\n static readonly SIMPLIFIED = new Format(true, 0.0005, 3, ', ')\n\n /**\n * Parses the given text into a float. Works for text created by\n * [[formatFloat]].\n */\n static parseFloat(text: string): number {\n if (text.length === 0) {\n throw new Error(`Not a number: '${text}'`)\n }\n if (text[0] === '-') {\n return -Format.parseFloat(text.substr(1))\n }\n if (text[0] === '\\u221A') {\n return Math.sqrt(Format.parseFloat(text.substr(1)))\n }\n\n const fraction = Format.matchUnicodeFraction(e => e.character === text)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const result = parseFloat(text)\n if (isNaN(result)) {\n throw new Error(`Not a number: '${text}'`)\n }\n return result\n }\n\n /**\n * Corrects a value to a nearby simple fraction or root thereof, such as\n * sqrt(1/2), so it can be printed compactly.\n *\n * @param value The value to round.\n * @param epsilon The maximum offset error introduced by the rounding.\n */\n static simplifyByRounding(value: number, epsilon: number): number {\n if (value < 0) {\n return -Format.simplifyByRounding(-value, epsilon)\n }\n\n const r = value % 1\n if (r <= epsilon || 1 - r <= epsilon) {\n return Math.round(value)\n }\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return Math.sqrt(rootFraction.value)\n }\n\n return value\n }\n\n /**\n * Returns the first element of an array matching the given predicate, or else\n * returns undefined.\n *\n * @hidden\n */\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n /**\n * @param allowAbbreviation Should outputs be shortened, if possible?\n * @param maxAbbreviationError How much error is abbreviating allowed to introduce?\n * @param fixedDigits Use toFixed? How many digits?\n * @param itemSeparator What should list items be separated by?\n */\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator: string,\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n formatFloat(f: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateFloat(f, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return f.toFixed(this.fixedDigits)\n }\n return String(f)\n }\n\n /**\n * Returns a string representation of a float, taking advantage of unicode\n * fractions and square roots.\n *\n * @param value The value to represent as a string.\n * @param epsilon The maximum error introduced by using an expression.\n * @param digits digits The number of digits to use if no expression matches.\n */\n private abbreviateFloat(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateFloat(-value, epsilon, digits)}`\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {UNICODE_FRACTIONS} from './format'\n\ntype UnicodeFraction = {character: string; ref: string; value: number}\n\nexport class NumberFormatter {\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator = ', ',\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n format(n: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateNumber(n, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return n.toFixed(this.fixedDigits)\n }\n return String(n)\n }\n\n private abbreviateNumber(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateNumber(-value, epsilon, digits)}`\n\n const fraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {NumberFormatter} from './number-formatter'\nimport {ok, err, Result} from 'neverthrow'\n\ntype FormatOptions = {\n allowAbbreviation?: boolean\n maxAbbreviationError?: number\n fixedDigits?: number | undefined\n}\n\nconst DEFAULT_FORMAT_OPTIONS = {\n allowAbbreviation: true,\n maxAbbreviationError: 0,\n fixedDigits: undefined,\n}\n\nexport class Complex {\n /**\n * Complex { real: 0, imag: 0 }\n */\n static readonly ZERO = new Complex(0, 0)\n /**\n * Complex { real: 1, imag: 0 }\n */\n static readonly ONE = new Complex(1, 0)\n /**\n * The imaginary unit.\n */\n static readonly I = new Complex(0, 1)\n\n /**\n * The real part of the Complex number.\n */\n public real: number\n /**\n * The imaginary part of the Complex number.\n */\n public imag: number\n\n /**\n * Converts the given value to a Complex value.\n *\n * @param value - The value to convert to a Complex value\n */\n static from(value: number | Complex): Complex {\n if (typeof value === 'number') {\n return new Complex(value, 0)\n }\n\n return value\n }\n\n /**\n * Returns the real part of a Complex or a number value.\n *\n * @param value - The value to get the real part of\n */\n static real(value: number | Complex): number {\n if (typeof value === 'number') {\n return value\n }\n\n return value.real\n }\n\n /**\n * Returns the imaginary part of a Complex value, or else 0 for number values.\n *\n * @param value - The value to get the imaginary part of\n */\n static imag(value: number | Complex): number {\n if (typeof value === 'number') {\n return 0\n }\n\n return value.imag\n }\n\n /**\n * Returns a new Complex number with the given magnitude and phase.\n *\n * @param magnitude - The magnitude of the Complex number\n * @param phase - The phase of the Complex number\n */\n static polar(magnitude: number, phase: number): Complex {\n const [cos, sin] = this.cosAndSin(phase)\n\n return new Complex(magnitude * cos, magnitude * sin)\n }\n\n private static cosAndSin(radians: number): number[] {\n const unit = Math.PI / 4\n const i = Math.round(radians / unit)\n if (i * unit === radians) {\n const s = Math.sqrt(0.5)\n const snaps = [\n [1, 0], // 0\n [s, s], // \u03C0/4\n [0, 1], // \u03C0/2\n [-s, s], // 3\u03C0/4\n [-1, 0], // \u03C0\n [-s, -s], // 5\u03C0/4\n [0, -1], // 3\u03C0/2\n [s, -s], // 7\u03C0/4\n ]\n return snaps[i & 7]\n }\n return [Math.cos(radians), Math.sin(radians)]\n }\n\n /**\n * @param real - The real part of the Complex number\n * @param imag - The imaginary part of the Complex number\n */\n constructor(real: number, imag: number) {\n this.real = real\n this.imag = imag\n\n this.isApproximatelyEqualTo = this.nearlyEq // alias for nearlyEq\n this.isEqualTo = this.eq // alias for eq\n this.conj = this.conjugate // alias for conjugate\n this.plus = this.add // alias for add\n // aliases for sub\n this.subtract = this.sub\n this.minus = this.sub\n // aliases for mult\n this.multiply = this.mult\n this.times = this.mult\n this.dividedBy = this.div // alias for div\n this.magnitude = this.abs // alias for abs\n this.norm2 = this.abs2 // alias for abs2\n // aliases for arg\n this.angle = this.arg\n this.phase = this.arg\n }\n\n /**\n * Returns true if complex number is equal to other.\n *\n * @param other - The other value to compare with\n */\n eq(other: unknown): boolean {\n if (typeof other === 'number') {\n return this.real === other && this.imag === 0\n }\n if (other instanceof Complex) {\n return this.real === other.real && this.imag === other.imag\n }\n return false\n }\n\n isEqualTo = this.eq.bind(this)\n\n /**\n * Returns true if the Complex number is close to the value of other.\n *\n * @param other - The other value to compare with\n */\n nearlyEq(other: number | Complex | unknown, epsilon: number): boolean {\n if (typeof other === 'number' || other instanceof Complex) {\n const d = this.sub(Complex.from(other))\n return Math.abs(d.real) <= epsilon && Math.abs(d.imag) <= epsilon && d.abs() <= epsilon\n }\n return false\n }\n\n isApproximatelyEqualTo = this.nearlyEq.bind(this)\n\n /**\n * Returns the complex conjugate.\n *\n * @returns A new Complex representing the complex conjugate of this complex number\n */\n conjugate(): Complex {\n return new Complex(this.real, -this.imag)\n }\n\n conj = this.conjugate.bind(this)\n\n /**\n * Returns negation of the value.\n *\n * @returns A new Complex representing the negation of this complex number.\n */\n neg(): Complex {\n return new Complex(-this.real, -this.imag)\n }\n\n /**\n * Returns the sum of this complex number and value.\n *\n * @param value - The addend number.\n * @returns A new Complex representing the sum of this complex number and value.\n */\n add(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real + c.real, this.imag + c.imag)\n }\n\n plus = this.add.bind(this)\n\n /**\n * Returns the subtraction of this complex number and value.\n *\n * @param value - The subtrahend number.\n * @returns A new Complex representing the subtraction of this complex number and value.\n */\n sub(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real - c.real, this.imag - c.imag)\n }\n\n subtract = this.sub.bind(this)\n minus = this.sub.bind(this)\n\n /**\n * Returns the product of this complex number and value.\n *\n * @param value - The multiplier number.\n * @returns A new Complex representing the product of this complex number and value.\n */\n mult(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real * c.real - this.imag * c.imag, this.real * c.imag + this.imag * c.real)\n }\n\n multiply = this.mult.bind(this)\n times = this.mult.bind(this)\n\n /**\n * Returns a complex number divided by value.\n * If value is zero, returns an error.\n *\n * @param value - The divisor number.\n * @returns A Result object with the result of division or a division-by-zero error.\n * @example\n * ```\n * const res = new Complex(2, 3).div(2)\n * if (res.isOk()) {\n * console.log(res.value) // Complex { real: 1, imag: 1.5 }\n * } else {\n * console.error(res.error)\n * }\n * ```\n */\n div(value: number | Complex): Result {\n const c = Complex.from(value)\n const d = c.abs2()\n if (d === 0) {\n return err(Error('Division by Zero'))\n }\n\n const n = this.mult(c.conjugate())\n return ok(new Complex(n.real / d, n.imag / d))\n }\n\n dividedBy = this.div.bind(this)\n\n /**\n * Returns the absolute part of its polar form.\n *\n * @returns A number representing the absolute part of its polar form.\n * @example\n * ```\n * new Complex(-1, 0).abs() // 1\n * new Complex(3, 4).abs() // 5\n * ```\n */\n abs(): number {\n return Math.sqrt(this.abs2())\n }\n\n magnitude = this.abs.bind(this)\n\n /**\n * Returns square of the absolute value.\n *\n * @returns A number representing the square of the absolute value.\n * @example\n * ```\n * new Complex(-1, 0).abs2() // 1\n * new Complex(3, 4).abs2() // 25\n * ```\n */\n abs2(): number {\n return this.real * this.real + this.imag * this.imag\n }\n\n norm2 = this.abs2.bind(this)\n\n /**\n * Returns the angle part of its polar form.\n *\n * @returns A number representing the angle part of its polar form in radians.\n */\n arg(): number {\n return Math.atan2(this.imag, this.real)\n }\n\n angle = this.arg.bind(this)\n phase = this.arg.bind(this)\n\n /**\n * Returns the exponentiation of a complex number. That is c.pow(x) = c^x.\n *\n * @param exponent - the exponent number\n * @returns A number representing base taken to the power of exponent\n */\n pow(exponent: number | Complex): Complex {\n if (exponent === 0.5 && this.imag === 0 && this.real >= 0) {\n return new Complex(Math.sqrt(this.real), 0)\n }\n if (this.eq(Complex.ZERO)) {\n return Complex.ZERO\n }\n return this.ln().mult(Complex.from(exponent)).exp()\n }\n\n /**\n * Returns e raised to the c power. That is c.exp() = e^c.\n */\n exp(): Complex {\n return Complex.polar(Math.exp(this.real), this.imag)\n }\n\n /**\n * Returns a string representing this complex number according to the specified format.\n *\n * @param options - An object that sets the format options for this complex number.\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).format() // '1+2i'\n * new Complex(1, 2).format({\n * allowAbbreviation: false,\n * fixedDigits: 2,\n * }) // '+1.00+2.00i'\n * ```\n */\n format(options: FormatOptions = DEFAULT_FORMAT_OPTIONS): string {\n const format = new NumberFormatter(\n options.allowAbbreviation === undefined ? DEFAULT_FORMAT_OPTIONS.allowAbbreviation : options.allowAbbreviation,\n options.maxAbbreviationError || 0,\n options.fixedDigits,\n )\n return format.allowAbbreviation ? this.toStringAllowSingleValue(format) : this.toStringBothValues(format)\n }\n\n /**\n * Returns a compact string representing this Complex number.\n *\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).toString() // '1+2i'\n * new Complex(Math.sqrt(1 / 2), -1 / 3).toString() // '\u221A\u00BD-\u2153i'\n * ```\n */\n toString(): string {\n const formatter = new NumberFormatter(\n DEFAULT_FORMAT_OPTIONS.allowAbbreviation,\n DEFAULT_FORMAT_OPTIONS.maxAbbreviationError,\n DEFAULT_FORMAT_OPTIONS.fixedDigits,\n )\n return this.toStringAllowSingleValue(formatter)\n }\n\n // log(c) = ln|c| + arg(c)i\n private ln(): Complex {\n return new Complex(Math.log(this.abs()), this.arg())\n }\n\n // If a complex number has only real or imaginary parts,\n // convert it to a string with only real or imaginary parts, such as '\u2153' or '-3i'.\n private toStringAllowSingleValue(formatter: NumberFormatter): string {\n if (this.canImagPartBeOmitted(formatter.maxAbbreviationError)) {\n return formatter.format(this.real)\n }\n\n if (this.canRealPartBeOmitted(formatter.maxAbbreviationError)) {\n let imagFactor\n\n if (this.isImagFactorCloseToOne(formatter.maxAbbreviationError)) {\n imagFactor = ''\n } else if (this.isImagFactorMinusOne(formatter.maxAbbreviationError)) {\n imagFactor = '-'\n } else {\n imagFactor = formatter.format(this.imag)\n }\n\n return `${imagFactor}i`\n }\n\n return this.toStringBothValues(formatter)\n }\n\n // Convert a complex number whose real and imaginary parts are not both zero into a string like '\u2153-3i'.\n private toStringBothValues(formatter: NumberFormatter): string {\n const imagSign = this.imag >= 0 ? '+' : '-'\n const imagFactor = this.canImagFactorBeOmitted(formatter) ? '' : formatter.format(Math.abs(this.imag))\n const realPlusSign = formatter.allowAbbreviation || formatter.fixedDigits === undefined || this.real < 0 ? '' : '+'\n\n return `${realPlusSign + formatter.format(this.real) + imagSign + imagFactor}i`\n }\n\n // Returns whether the real part of a complex number can be omitted.\n private canRealPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.real) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number can be omitted.\n private canImagPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to 1.\n private isImagFactorCloseToOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag - 1) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to -1.\n private isImagFactorMinusOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag + 1) <= maxAbbreviationError\n }\n\n // Returns true if the factor of the imaginary part can be omitted, such as i or -i.\n private canImagFactorBeOmitted(formatter: NumberFormatter): boolean {\n return formatter.allowAbbreviation && Math.abs(Math.abs(this.imag) - 1) <= formatter.maxAbbreviationError\n }\n}\n", "export const Config = {\n MAX_QUBIT_COUNT: 16,\n} as const\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {format as prettyFormat} from 'pretty-format'\n\nlet CONSTRUCTOR_CALLS_NESTING = 0\n\nexport class DetailedError extends Error {\n public details: string | undefined\n private detailsObj: unknown\n\n constructor(message: string, detailsObj: unknown) {\n super(message)\n\n this.detailsObj = detailsObj\n this.name = 'Error'\n this.message = message\n this.stack = new Error().stack\n if (this.stack !== undefined) {\n this.stack = this.stack.replace(/^Error\\n\\s+at new DetailedError (\\S+)\\s?\\n\\s+at /, '\\n ')\n }\n\n CONSTRUCTOR_CALLS_NESTING++\n try {\n this.details =\n CONSTRUCTOR_CALLS_NESTING === 1\n ? prettyFormat(this.detailsObj)\n : '(failed to prettyFormat detailsObj due to possibly re-entrancy)'\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error(ex)\n this.details = '(failed to prettyFormat detailsObj, see the console for details)'\n } finally {\n CONSTRUCTOR_CALLS_NESTING--\n }\n }\n}\n", "/**\n * Emit a custom event\n *\n * @param type The event type\n * @param detail Any details to pass along with the event\n * @param element The element to attach the event to\n */\nexport function emitEvent(type: string, detail = {}, element: Node = document): boolean {\n const event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail,\n })\n\n return element.dispatchEvent(event)\n}\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function hasOwnProperty(obj: unknown, key: K): obj is Record {\n return obj !== null && obj !== undefined && key in (obj as Record)\n}\n\nexport type ArrayIsh =\n | unknown[]\n | Float32Array\n | Float64Array\n | Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Uint8ClampedArray\n\nconst GENERIC_ARRAY_TYPES = [\n Float32Array,\n Float64Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Uint8ClampedArray,\n]\n\nexport function equate(subject: unknown, other: unknown): boolean {\n if (subject === other || (isExactlyNaN(subject) && isExactlyNaN(other))) {\n return true\n }\n\n const customEquality = tryEquateCustom(subject, other)\n if (customEquality !== undefined) {\n return customEquality\n }\n if (isAtomic(subject) || isAtomic(other) || !eqType(subject, other)) {\n return false\n }\n\n if (subject instanceof Map && other instanceof Map) {\n return equateMaps(subject, other)\n }\n if (subject instanceof Set && other instanceof Set) {\n return equateSets(subject, other)\n }\n if (isIndexable(subject) && isIndexable(other)) {\n return equateIndexables(subject, other)\n }\n\n return equateObjects(subject, other)\n}\n\nfunction isIndexable(value: unknown): value is ArrayIsh {\n return Array.isArray(value) || !GENERIC_ARRAY_TYPES.every(t => !(value instanceof t))\n}\n\nfunction isExactlyNaN(v: unknown) {\n return typeof v === 'number' && isNaN(v)\n}\n\nfunction tryEquateCustom(subject: unknown, other: unknown): boolean | undefined {\n if (!isAtomic(subject) && hasOwnProperty(subject, 'isEqualTo') && typeof subject.isEqualTo === 'function') {\n return subject.isEqualTo(other) as boolean\n }\n if (!isAtomic(other) && hasOwnProperty(other, 'isEqualTo') && typeof other.isEqualTo === 'function') {\n return other.isEqualTo(subject) as boolean\n }\n return undefined\n}\n\ntype Atomic = null | undefined | string | number | boolean\n\nfunction isAtomic(value: unknown): value is Atomic {\n return (\n value === null ||\n value === undefined ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n )\n}\n\nfunction equateMaps(subject: Map, other: Map) {\n if (subject.size !== other.size) {\n return false\n }\n for (const [k, v] of subject) {\n if (!other.has(k)) {\n return false\n }\n const otherV = other.get(k)\n if (!equate(v, otherV)) {\n return false\n }\n }\n return true\n}\n\nfunction equateSets(subject: Set, other: Set) {\n if (subject.size !== other.size) {\n return false\n }\n for (const k of subject) {\n if (!other.has(k)) {\n return false\n }\n }\n return true\n}\n\nfunction eqType(subject: unknown, other: unknown): boolean {\n return typeof subject === typeof other\n}\n\nfunction equateIndexables(subject: ArrayIsh, other: ArrayIsh) {\n if (subject.length !== other.length) {\n return false\n }\n for (let i = 0; i < subject.length; i++) {\n if (!equate(subject[i], other[i])) {\n return false\n }\n }\n return true\n}\n\nfunction objectKeys(obj: unknown) {\n const result = new Set()\n for (const k in obj as Record) {\n if (hasOwnProperty(obj, k)) {\n result.add(k)\n }\n }\n return result\n}\n\nfunction equateObjects(subject: unknown, other: unknown) {\n const keys = objectKeys(subject)\n if (!equateSets(keys, objectKeys(other))) {\n return false\n }\n\n for (const k of keys) {\n if (k === Symbol.iterator) {\n continue\n }\n if (!equate((subject as Record)[k as string], (other as Record)[k as string])) {\n return false\n }\n }\n\n const hasSubjectIter = hasOwnProperty(subject, Symbol.iterator)\n const hasOtherIter = hasOwnProperty(other, Symbol.iterator)\n if (hasSubjectIter !== hasOtherIter) {\n return false\n }\n if (hasSubjectIter && hasOtherIter) {\n if (!equateIterables(subject as Iterable, other as Iterable)) {\n return false\n }\n }\n\n return true\n}\n\nfunction equateIterables(subject: Iterable, other: Iterable) {\n const otherIter = other[Symbol.iterator]()\n for (const subjectItem of subject) {\n const otherItemDone = otherIter.next()\n if (otherItemDone.done || !equate(subjectItem, otherItemDone.value)) {\n return false\n }\n }\n return otherIter.next().done\n}\n", "import {Config} from './config'\n\nexport type CreateArrayWithLengthX = ACC['length'] extends LENGTH\n ? ACC\n : CreateArrayWithLengthX\n\nexport type NumericRange<\n START_ARR extends number[],\n END extends number,\n ACC extends number = never,\n> = START_ARR['length'] extends END ? ACC | END : NumericRange<[...START_ARR, 1], END, ACC | START_ARR['length']>\n\nexport type ResizeableSpan = NumericRange, typeof Config.MAX_QUBIT_COUNT>\n\nexport const isResizeableSpan = (arg: unknown): arg is ResizeableSpan =>\n typeof arg == 'number' && 1 <= arg && arg <= Config.MAX_QUBIT_COUNT\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Result} from 'neverthrow'\n\ntype ParseError = {message: string}\nconst toParseError = (): ParseError => ({message: 'Parse Error'})\n\nexport class Util {\n static need(expression: boolean, message: string, args?: unknown[]): asserts expression {\n if (expression !== true) {\n const argDesc = args === undefined ? '(not provided)' : `[${Array.prototype.slice.call(args).join(', ')}]`\n const msgDesc = message === undefined ? '(not provided)' : message\n const msg = `Precondition failed\\n\\nMessage: ${msgDesc}\\n\\nArgs: ${argDesc}`\n throw new Error(msg)\n }\n }\n\n static notNull(v: T): asserts v is NonNullable {\n Util.need(v !== null && v !== undefined, 'notNull')\n }\n\n // \u73FE\u5728\u306E URL \u3092\u30D1\u30FC\u30B9\u3057\u3001\u6700\u5F8C\u306E / \u4EE5\u964D\u3092\u30C7\u30B3\u30FC\u30C9\u3057\u305F\u3082\u306E\u3092\u8FD4\u3059\n static get urlJson(): string {\n const url = new URL(location.href, window.location.origin)\n const path = decodeURIComponent(url.pathname)\n const lastSlashIndex = path.lastIndexOf('/')\n\n return path.substring(lastSlashIndex + 1)\n }\n\n static safeJsonParse = Result.fromThrowable(JSON.parse, toParseError)\n}\n", "export const SerializedAntiControlGateType = '\u25E6'\n\nexport type SerializedAntiControlGate = {\n type: typeof SerializedAntiControlGateType\n targets: number[]\n}\n", "export const SerializedBlochDisplayType = 'Bloch'\n\nexport type SerializedBlochDisplay = {\n type: typeof SerializedBlochDisplayType\n targets: number[]\n}\n", "export const SerializedControlGateType = '\u2022'\n\nexport type SerializedControlGate = {\n type: typeof SerializedControlGateType\n targets: number[]\n}\n", "export const SerializedHGateType = 'H'\n\nexport type SerializedHGate = {\n type: typeof SerializedHGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedMeasurementGateType = 'Measure'\n\nexport type SerializedMeasurementGate = {\n type: typeof SerializedMeasurementGateType\n targets: number[]\n flag?: string\n}\n", "export const SerializedPhaseGateType = 'P'\n\nexport type SerializedPhaseGate = {\n type: typeof SerializedPhaseGateType\n angle?: string\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftDaggerGateType = 'QFT\u2020'\n\nexport type SerializedQftDaggerGate = {\n type: typeof SerializedQftDaggerGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftGateType = 'QFT'\n\nexport type SerializedQftGate = {\n type: typeof SerializedQftGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "export const SerializedRnotGateType = 'X^\u00BD'\n\nexport type SerializedRnotGate = {\n type: typeof SerializedRnotGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRxGateType = 'Rx'\n\nexport type SerializedRxGate = {\n type: typeof SerializedRxGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRyGateType = 'Ry'\n\nexport type SerializedRyGate = {\n type: typeof SerializedRyGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRzGateType = 'Rz'\n\nexport type SerializedRzGate = {\n type: typeof SerializedRzGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSDaggerGateType = 'S\u2020'\n\nexport type SerializedSDaggerGate = {\n type: typeof SerializedSDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSGateType = 'S'\n\nexport type SerializedSGate = {\n type: typeof SerializedSGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSpacerGateType = '\u2026'\n\nexport type SerializedSpacerGate = {\n type: typeof SerializedSpacerGateType\n targets: number[]\n}\n", "export const SerializedSwapGateType = 'Swap'\n\nexport type SerializedSwapGate = {\n type: typeof SerializedSwapGateType\n targets: [number, number]\n controls?: number[]\n}\n", "export const SerializedTDaggerGateType = 'T\u2020'\n\nexport type SerializedTDaggerGate = {\n type: typeof SerializedTDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedTGateType = 'T'\n\nexport type SerializedTGate = {\n type: typeof SerializedTGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedWrite0GateType = '|0>'\nexport const SerializedWrite1GateType = '|1>'\n\nexport type SerializedWriteGate = {\n type: typeof SerializedWrite0GateType | typeof SerializedWrite1GateType\n targets: number[]\n}\n", "export const SerializedXGateType = 'X'\n\nexport type SerializedXGate = {\n type: typeof SerializedXGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedYGateType = 'Y'\n\nexport type SerializedYGate = {\n type: typeof SerializedYGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedZGateType = 'Z'\n\nexport type SerializedZGate = {\n type: typeof SerializedZGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar defaultErrorConfig = {\r\n withStackTrace: false\r\n};\r\n// Custom error object\r\n// Context / discussion: https://github.com/supermacro/neverthrow/pull/215\r\nvar createNeverThrowError = function (message, result, config) {\r\n if (config === void 0) { config = defaultErrorConfig; }\r\n var data = result.isOk()\r\n ? { type: 'Ok', value: result.value }\r\n : { type: 'Err', value: result.error };\r\n var maybeStack = config.withStackTrace ? new Error().stack : undefined;\r\n return {\r\n data: data,\r\n message: message,\r\n stack: maybeStack\r\n };\r\n};\n\nvar ResultAsync = /** @class */ (function () {\r\n function ResultAsync(res) {\r\n this._promise = res;\r\n }\r\n ResultAsync.fromSafePromise = function (promise) {\r\n var newPromise = promise.then(function (value) { return new Ok(value); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.fromPromise = function (promise, errorFn) {\r\n var newPromise = promise\r\n .then(function (value) { return new Ok(value); })[\"catch\"](function (e) { return new Err(errorFn(e)); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.combine = function (asyncResultList) {\r\n return combineResultAsyncList(asyncResultList);\r\n };\r\n ResultAsync.combineWithAllErrors = function (asyncResultList) {\r\n return combineResultAsyncListWithAllErrors(asyncResultList);\r\n };\r\n ResultAsync.prototype.map = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isErr()) {\r\n return [2 /*return*/, new Err(res.error)];\r\n }\r\n _a = Ok.bind;\r\n return [4 /*yield*/, f(res.value)];\r\n case 1: return [2 /*return*/, new (_a.apply(Ok, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.mapErr = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isOk()) {\r\n return [2 /*return*/, new Ok(res.value)];\r\n }\r\n _a = Err.bind;\r\n return [4 /*yield*/, f(res.error)];\r\n case 1: return [2 /*return*/, new (_a.apply(Err, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.andThen = function (f) {\r\n return new ResultAsync(this._promise.then(function (res) {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n var newValue = f(res.value);\r\n return newValue instanceof ResultAsync ? newValue._promise : newValue;\r\n }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.orElse = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (res.isErr()) {\r\n return [2 /*return*/, f(res.error)];\r\n }\r\n return [2 /*return*/, new Ok(res.value)];\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.match = function (ok, _err) {\r\n return this._promise.then(function (res) { return res.match(ok, _err); });\r\n };\r\n ResultAsync.prototype.unwrapOr = function (t) {\r\n return this._promise.then(function (res) { return res.unwrapOr(t); });\r\n };\r\n // Makes ResultAsync implement PromiseLike\r\n ResultAsync.prototype.then = function (successCallback, failureCallback) {\r\n return this._promise.then(successCallback, failureCallback);\r\n };\r\n return ResultAsync;\r\n}());\r\nvar okAsync = function (value) {\r\n return new ResultAsync(Promise.resolve(new Ok(value)));\r\n};\r\nvar errAsync = function (err) {\r\n return new ResultAsync(Promise.resolve(new Err(err)));\r\n};\r\nvar fromPromise = ResultAsync.fromPromise;\r\nvar fromSafePromise = ResultAsync.fromSafePromise;\n\nvar appendValueToEndOfList = function (value) { return function (list) { return __spreadArray(__spreadArray([], __read(list), false), [value], false); }; };\r\n/**\r\n * Short circuits on the FIRST Err value that we find\r\n */\r\nvar combineResultList = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return acc.isOk()\r\n ? result.isErr()\r\n ? err(result.error)\r\n : acc.map(appendValueToEndOfList(result.value))\r\n : acc;\r\n }, ok([]));\r\n};\r\n/* This is the typesafe version of Promise.all\r\n *\r\n * Takes a list of ResultAsync and success if all inner results are Ok values\r\n * or fails if one (or more) of the inner results are Err values\r\n */\r\nvar combineResultAsyncList = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList);\r\n};\r\n/**\r\n * Give a list of all the errors we find\r\n */\r\nvar combineResultListWithAllErrors = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return result.isErr()\r\n ? acc.isErr()\r\n ? err(__spreadArray(__spreadArray([], __read(acc.error), false), [result.error], false))\r\n : err([result.error])\r\n : acc.isErr()\r\n ? acc\r\n : ok(__spreadArray(__spreadArray([], __read(acc.value), false), [result.value], false));\r\n }, ok([]));\r\n};\r\nvar combineResultAsyncListWithAllErrors = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors);\r\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nvar Result;\r\n(function (Result) {\r\n /**\r\n * Wraps a function with a try catch, creating a new function with the same\r\n * arguments but returning `Ok` if successful, `Err` if the function throws\r\n *\r\n * @param fn function to wrap with ok on success or err on failure\r\n * @param errorFn when an error is thrown, this will wrap the error result if provided\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function fromThrowable(fn, errorFn) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n try {\r\n var result = fn.apply(void 0, __spreadArray([], __read(args), false));\r\n return ok(result);\r\n }\r\n catch (e) {\r\n return err(errorFn ? errorFn(e) : e);\r\n }\r\n };\r\n }\r\n Result.fromThrowable = fromThrowable;\r\n function combine(resultList) {\r\n return combineResultList(resultList);\r\n }\r\n Result.combine = combine;\r\n function combineWithAllErrors(resultList) {\r\n return combineResultListWithAllErrors(resultList);\r\n }\r\n Result.combineWithAllErrors = combineWithAllErrors;\r\n})(Result || (Result = {}));\r\nvar ok = function (value) { return new Ok(value); };\r\nvar err = function (err) { return new Err(err); };\r\nvar Ok = /** @class */ (function () {\r\n function Ok(value) {\r\n this.value = value;\r\n }\r\n Ok.prototype.isOk = function () {\r\n return true;\r\n };\r\n Ok.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n Ok.prototype.map = function (f) {\r\n return ok(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.mapErr = function (_f) {\r\n return ok(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.andThen = function (f) {\r\n return f(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.orElse = function (_f) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype.asyncAndThen = function (f) {\r\n return f(this.value);\r\n };\r\n Ok.prototype.asyncMap = function (f) {\r\n return ResultAsync.fromSafePromise(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.unwrapOr = function (_v) {\r\n return this.value;\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.match = function (ok, _err) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype._unsafeUnwrap = function (_) {\r\n return this.value;\r\n };\r\n Ok.prototype._unsafeUnwrapErr = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrapErr` on an Ok', this, config);\r\n };\r\n return Ok;\r\n}());\r\nvar Err = /** @class */ (function () {\r\n function Err(error) {\r\n this.error = error;\r\n }\r\n Err.prototype.isOk = function () {\r\n return false;\r\n };\r\n Err.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.map = function (_f) {\r\n return err(this.error);\r\n };\r\n Err.prototype.mapErr = function (f) {\r\n return err(f(this.error));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.andThen = function (_f) {\r\n return err(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.orElse = function (f) {\r\n return f(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncAndThen = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncMap = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n Err.prototype.unwrapOr = function (v) {\r\n return v;\r\n };\r\n Err.prototype.match = function (_ok, err) {\r\n return err(this.error);\r\n };\r\n Err.prototype._unsafeUnwrap = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrap` on an Err', this, config);\r\n };\r\n Err.prototype._unsafeUnwrapErr = function (_) {\r\n return this.error;\r\n };\r\n return Err;\r\n}());\r\nvar fromThrowable = Result.fromThrowable;\r\n//#endregion\n\nexport { Err, Ok, Result, ResultAsync, err, errAsync, fromPromise, fromSafePromise, fromThrowable, ok, okAsync };\n", "import { Simulator } from '@qni/simulator'\nimport { Util } from '@qni/common'\n\nlet resultCache = {}\n\nfunction runSimulator(e) {\n const circuitJson = e.data.circuitJson\n const qubitCount = e.data.qubitCount\n const stepIndex = e.data.stepIndex\n const steps = e.data.steps\n const targets = e.data.targets\n const invalidateCaches = e.data.invalidateCaches\n const simulator = new Simulator('0'.repeat(qubitCount))\n\n Util.notNull(qubitCount)\n Util.notNull(stepIndex)\n Util.notNull(steps)\n Util.notNull(targets)\n\n // const s_time = new Date()\n\n if (resultCache[circuitJson] === undefined || invalidateCaches) {\n resultCache = {}\n resultCache[circuitJson] = {}\n }\n\n // let cacheHit = false\n\n for (const [i, operations] of steps.entries()) {\n let stepResult = {}\n\n if (resultCache[circuitJson][i] === undefined) {\n resultCache[circuitJson][i] = {}\n }\n const cachedStepResult = resultCache[circuitJson][i]\n\n if (\n cachedStepResult === undefined ||\n cachedStepResult.targets === undefined ||\n cachedStepResult.targets.length < targets.length\n ) {\n // cacheHit = false\n\n simulator.runStep(operations)\n\n const allAmplitudes = simulator.state.matrix.clone()\n const blochVectors = Object.assign({}, simulator.blochVectors)\n const measuredBits = Object.assign({}, simulator.measuredBits)\n const flags = Object.assign({}, simulator.flags)\n\n resultCache[circuitJson][i] = {\n type: 'step',\n step: i,\n amplitudes: allAmplitudes,\n targets,\n blochVectors,\n measuredBits,\n flags,\n }\n\n if (i === stepIndex) {\n const amplitudes = pickTargetAmplitudes(targets, allAmplitudes)\n\n stepResult = {\n type: 'step',\n step: i,\n amplitudes,\n blochVectors,\n measuredBits,\n flags,\n }\n } else {\n stepResult = {\n type: 'step',\n step: i,\n amplitudes: [],\n blochVectors,\n measuredBits,\n flags,\n }\n }\n } else {\n // cacheHit = true\n\n stepResult = {\n type: 'step',\n step: i,\n amplitudes: [],\n blochVectors: cachedStepResult.blochVectors,\n measuredBits: cachedStepResult.measuredBits,\n flags: cachedStepResult.flags,\n }\n\n if (i === stepIndex) {\n stepResult.amplitudes = pickTargetAmplitudes(targets, cachedStepResult.amplitudes)\n }\n }\n\n self.postMessage(stepResult)\n }\n\n // const e_time = new Date()\n // const diff = e_time.getTime() - s_time.getTime()\n // const cacheDesc = cacheHit ? \"\uD83C\uDFAF CACHE HIT\" : \"\uD83D\uDCA6 CACHE MISS\"\n // console.log(`\u23F1 simulation took ${diff} msec (${cacheDesc})`)\n\n self.postMessage({ type: 'finish' })\n}\n\nconst pickTargetAmplitudes = (targets, amplitudes) => {\n return targets.reduce((map, each) => {\n if (each >= amplitudes.height) {\n map[each] = [0, 0]\n } else {\n const c = amplitudes.cell(0, each)\n map[each] = [c.real, c.imag]\n }\n return map\n }, {})\n}\n\nself.addEventListener('message', runSimulator)\n"], - "mappings": "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", + "sourcesContent": ["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Field = exports.MonoidProduct = exports.MonoidSum = exports.SemigroupProduct = exports.SemigroupSum = exports.MagmaSub = exports.Show = exports.Bounded = exports.Ord = exports.Eq = exports.isNumber = void 0;\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * @category refinements\n * @since 2.11.0\n */\nvar isNumber = function (u) { return typeof u === 'number'; };\nexports.isNumber = isNumber;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Eq = {\n equals: function (first, second) { return first === second; }\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Ord = {\n equals: exports.Eq.equals,\n compare: function (first, second) { return (first < second ? -1 : first > second ? 1 : 0); }\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Bounded = {\n equals: exports.Eq.equals,\n compare: exports.Ord.compare,\n top: Infinity,\n bottom: -Infinity\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Show = {\n show: function (n) { return JSON.stringify(n); }\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.MagmaSub = {\n concat: function (first, second) { return first - second; }\n};\n/**\n * `number` semigroup under addition.\n *\n * @example\n * import { SemigroupSum } from 'fp-ts/number'\n *\n * assert.deepStrictEqual(SemigroupSum.concat(2, 3), 5)\n *\n * @category instances\n * @since 2.10.0\n */\nexports.SemigroupSum = {\n concat: function (first, second) { return first + second; }\n};\n/**\n * `number` semigroup under multiplication.\n *\n * @example\n * import { SemigroupProduct } from 'fp-ts/number'\n *\n * assert.deepStrictEqual(SemigroupProduct.concat(2, 3), 6)\n *\n * @category instances\n * @since 2.10.0\n */\nexports.SemigroupProduct = {\n concat: function (first, second) { return first * second; }\n};\n/**\n * `number` monoid under addition.\n *\n * The `empty` value is `0`.\n *\n * @example\n * import { MonoidSum } from 'fp-ts/number'\n *\n * assert.deepStrictEqual(MonoidSum.concat(2, MonoidSum.empty), 2)\n *\n * @category instances\n * @since 2.10.0\n */\nexports.MonoidSum = {\n concat: exports.SemigroupSum.concat,\n empty: 0\n};\n/**\n * `number` monoid under multiplication.\n *\n * The `empty` value is `1`.\n *\n * @example\n * import { MonoidProduct } from 'fp-ts/number'\n *\n * assert.deepStrictEqual(MonoidProduct.concat(2, MonoidProduct.empty), 2)\n *\n * @category instances\n * @since 2.10.0\n */\nexports.MonoidProduct = {\n concat: exports.SemigroupProduct.concat,\n empty: 1\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Field = {\n add: exports.SemigroupSum.concat,\n zero: 0,\n mul: exports.SemigroupProduct.concat,\n one: 1,\n sub: exports.MagmaSub.concat,\n degree: function (_) { return 1; },\n div: function (first, second) { return first / second; },\n mod: function (first, second) { return first % second; }\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndomorphismMonoid = exports.not = exports.SK = exports.hole = exports.pipe = exports.untupled = exports.tupled = exports.absurd = exports.decrement = exports.increment = exports.tuple = exports.flow = exports.flip = exports.constVoid = exports.constUndefined = exports.constNull = exports.constFalse = exports.constTrue = exports.constant = exports.unsafeCoerce = exports.identity = exports.apply = exports.getRing = exports.getSemiring = exports.getMonoid = exports.getSemigroup = exports.getBooleanAlgebra = void 0;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.10.0\n */\nvar getBooleanAlgebra = function (B) { return function () { return ({\n meet: function (x, y) { return function (a) { return B.meet(x(a), y(a)); }; },\n join: function (x, y) { return function (a) { return B.join(x(a), y(a)); }; },\n zero: function () { return B.zero; },\n one: function () { return B.one; },\n implies: function (x, y) { return function (a) { return B.implies(x(a), y(a)); }; },\n not: function (x) { return function (a) { return B.not(x(a)); }; }\n}); }; };\nexports.getBooleanAlgebra = getBooleanAlgebra;\n/**\n * Unary functions form a semigroup as long as you can provide a semigroup for the codomain.\n *\n * @example\n * import { Predicate, getSemigroup } from 'fp-ts/function'\n * import * as B from 'fp-ts/boolean'\n *\n * const f: Predicate = (n) => n <= 2\n * const g: Predicate = (n) => n >= 0\n *\n * const S1 = getSemigroup(B.SemigroupAll)()\n *\n * assert.deepStrictEqual(S1.concat(f, g)(1), true)\n * assert.deepStrictEqual(S1.concat(f, g)(3), false)\n *\n * const S2 = getSemigroup(B.SemigroupAny)()\n *\n * assert.deepStrictEqual(S2.concat(f, g)(1), true)\n * assert.deepStrictEqual(S2.concat(f, g)(3), true)\n *\n * @category instances\n * @since 2.10.0\n */\nvar getSemigroup = function (S) { return function () { return ({\n concat: function (f, g) { return function (a) { return S.concat(f(a), g(a)); }; }\n}); }; };\nexports.getSemigroup = getSemigroup;\n/**\n * Unary functions form a monoid as long as you can provide a monoid for the codomain.\n *\n * @example\n * import { Predicate } from 'fp-ts/Predicate'\n * import { getMonoid } from 'fp-ts/function'\n * import * as B from 'fp-ts/boolean'\n *\n * const f: Predicate = (n) => n <= 2\n * const g: Predicate = (n) => n >= 0\n *\n * const M1 = getMonoid(B.MonoidAll)()\n *\n * assert.deepStrictEqual(M1.concat(f, g)(1), true)\n * assert.deepStrictEqual(M1.concat(f, g)(3), false)\n *\n * const M2 = getMonoid(B.MonoidAny)()\n *\n * assert.deepStrictEqual(M2.concat(f, g)(1), true)\n * assert.deepStrictEqual(M2.concat(f, g)(3), true)\n *\n * @category instances\n * @since 2.10.0\n */\nvar getMonoid = function (M) {\n var getSemigroupM = exports.getSemigroup(M);\n return function () { return ({\n concat: getSemigroupM().concat,\n empty: function () { return M.empty; }\n }); };\n};\nexports.getMonoid = getMonoid;\n/**\n * @category instances\n * @since 2.10.0\n */\nvar getSemiring = function (S) { return ({\n add: function (f, g) { return function (x) { return S.add(f(x), g(x)); }; },\n zero: function () { return S.zero; },\n mul: function (f, g) { return function (x) { return S.mul(f(x), g(x)); }; },\n one: function () { return S.one; }\n}); };\nexports.getSemiring = getSemiring;\n/**\n * @category instances\n * @since 2.10.0\n */\nvar getRing = function (R) {\n var S = exports.getSemiring(R);\n return {\n add: S.add,\n mul: S.mul,\n one: S.one,\n zero: S.zero,\n sub: function (f, g) { return function (x) { return R.sub(f(x), g(x)); }; }\n };\n};\nexports.getRing = getRing;\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.11.0\n */\nvar apply = function (a) { return function (f) { return f(a); }; };\nexports.apply = apply;\n/**\n * @since 2.0.0\n */\nfunction identity(a) {\n return a;\n}\nexports.identity = identity;\n/**\n * @since 2.0.0\n */\nexports.unsafeCoerce = identity;\n/**\n * @since 2.0.0\n */\nfunction constant(a) {\n return function () { return a; };\n}\nexports.constant = constant;\n/**\n * A thunk that returns always `true`.\n *\n * @since 2.0.0\n */\nexports.constTrue = \n/*#__PURE__*/\nconstant(true);\n/**\n * A thunk that returns always `false`.\n *\n * @since 2.0.0\n */\nexports.constFalse = \n/*#__PURE__*/\nconstant(false);\n/**\n * A thunk that returns always `null`.\n *\n * @since 2.0.0\n */\nexports.constNull = \n/*#__PURE__*/\nconstant(null);\n/**\n * A thunk that returns always `undefined`.\n *\n * @since 2.0.0\n */\nexports.constUndefined = \n/*#__PURE__*/\nconstant(undefined);\n/**\n * A thunk that returns always `void`.\n *\n * @since 2.0.0\n */\nexports.constVoid = exports.constUndefined;\n/**\n * Flips the order of the arguments of a function of two arguments.\n *\n * @since 2.0.0\n */\nfunction flip(f) {\n return function (b, a) { return f(a, b); };\n}\nexports.flip = flip;\nfunction flow(ab, bc, cd, de, ef, fg, gh, hi, ij) {\n switch (arguments.length) {\n case 1:\n return ab;\n case 2:\n return function () {\n return bc(ab.apply(this, arguments));\n };\n case 3:\n return function () {\n return cd(bc(ab.apply(this, arguments)));\n };\n case 4:\n return function () {\n return de(cd(bc(ab.apply(this, arguments))));\n };\n case 5:\n return function () {\n return ef(de(cd(bc(ab.apply(this, arguments)))));\n };\n case 6:\n return function () {\n return fg(ef(de(cd(bc(ab.apply(this, arguments))))));\n };\n case 7:\n return function () {\n return gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))));\n };\n case 8:\n return function () {\n return hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments))))))));\n };\n case 9:\n return function () {\n return ij(hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))))));\n };\n }\n return;\n}\nexports.flow = flow;\n/**\n * @since 2.0.0\n */\nfunction tuple() {\n var t = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n t[_i] = arguments[_i];\n }\n return t;\n}\nexports.tuple = tuple;\n/**\n * @since 2.0.0\n */\nfunction increment(n) {\n return n + 1;\n}\nexports.increment = increment;\n/**\n * @since 2.0.0\n */\nfunction decrement(n) {\n return n - 1;\n}\nexports.decrement = decrement;\n/**\n * @since 2.0.0\n */\nfunction absurd(_) {\n throw new Error('Called `absurd` function which should be uncallable');\n}\nexports.absurd = absurd;\n/**\n * Creates a tupled version of this function: instead of `n` arguments, it accepts a single tuple argument.\n *\n * @example\n * import { tupled } from 'fp-ts/function'\n *\n * const add = tupled((x: number, y: number): number => x + y)\n *\n * assert.strictEqual(add([1, 2]), 3)\n *\n * @since 2.4.0\n */\nfunction tupled(f) {\n return function (a) { return f.apply(void 0, a); };\n}\nexports.tupled = tupled;\n/**\n * Inverse function of `tupled`\n *\n * @since 2.4.0\n */\nfunction untupled(f) {\n return function () {\n var a = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n return f(a);\n };\n}\nexports.untupled = untupled;\nfunction pipe(a, ab, bc, cd, de, ef, fg, gh, hi) {\n switch (arguments.length) {\n case 1:\n return a;\n case 2:\n return ab(a);\n case 3:\n return bc(ab(a));\n case 4:\n return cd(bc(ab(a)));\n case 5:\n return de(cd(bc(ab(a))));\n case 6:\n return ef(de(cd(bc(ab(a)))));\n case 7:\n return fg(ef(de(cd(bc(ab(a))))));\n case 8:\n return gh(fg(ef(de(cd(bc(ab(a)))))));\n case 9:\n return hi(gh(fg(ef(de(cd(bc(ab(a))))))));\n default:\n var ret = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n ret = arguments[i](ret);\n }\n return ret;\n }\n}\nexports.pipe = pipe;\n/**\n * Type hole simulation\n *\n * @since 2.7.0\n */\nexports.hole = absurd;\n/**\n * @since 2.11.0\n */\nvar SK = function (_, b) { return b; };\nexports.SK = SK;\n/**\n * Use `Predicate` module instead.\n *\n * @since 2.0.0\n * @deprecated\n */\nfunction not(predicate) {\n return function (a) { return !predicate(a); };\n}\nexports.not = not;\n/**\n * Use `Endomorphism` module instead.\n *\n * @category instances\n * @since 2.10.0\n * @deprecated\n */\nvar getEndomorphismMonoid = function () { return ({\n concat: function (first, second) { return flow(first, second); },\n empty: identity\n}); };\nexports.getEndomorphismMonoid = getEndomorphismMonoid;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sequenceS = exports.sequenceT = exports.getApplySemigroup = exports.apS = exports.apSecond = exports.apFirst = exports.ap = void 0;\nvar function_1 = require(\"./function\");\nfunction ap(F, G) {\n return function (fa) { return function (fab) {\n return F.ap(F.map(fab, function (gab) { return function (ga) { return G.ap(gab, ga); }; }), fa);\n }; };\n}\nexports.ap = ap;\nfunction apFirst(A) {\n return function (second) { return function (first) {\n return A.ap(A.map(first, function (a) { return function () { return a; }; }), second);\n }; };\n}\nexports.apFirst = apFirst;\nfunction apSecond(A) {\n return function (second) { return function (first) {\n return A.ap(A.map(first, function () { return function (b) { return b; }; }), second);\n }; };\n}\nexports.apSecond = apSecond;\nfunction apS(F) {\n return function (name, fb) { return function (fa) {\n return F.ap(F.map(fa, function (a) { return function (b) {\n var _a;\n return Object.assign({}, a, (_a = {}, _a[name] = b, _a));\n }; }), fb);\n }; };\n}\nexports.apS = apS;\nfunction getApplySemigroup(F) {\n return function (S) { return ({\n concat: function (first, second) {\n return F.ap(F.map(first, function (x) { return function (y) { return S.concat(x, y); }; }), second);\n }\n }); };\n}\nexports.getApplySemigroup = getApplySemigroup;\nfunction curried(f, n, acc) {\n return function (x) {\n var combined = Array(acc.length + 1);\n for (var i = 0; i < acc.length; i++) {\n combined[i] = acc[i];\n }\n combined[acc.length] = x;\n return n === 0 ? f.apply(null, combined) : curried(f, n - 1, combined);\n };\n}\nvar tupleConstructors = {\n 1: function (a) { return [a]; },\n 2: function (a) { return function (b) { return [a, b]; }; },\n 3: function (a) { return function (b) { return function (c) { return [a, b, c]; }; }; },\n 4: function (a) { return function (b) { return function (c) { return function (d) { return [a, b, c, d]; }; }; }; },\n 5: function (a) { return function (b) { return function (c) { return function (d) { return function (e) { return [a, b, c, d, e]; }; }; }; }; }\n};\nfunction getTupleConstructor(len) {\n if (!tupleConstructors.hasOwnProperty(len)) {\n tupleConstructors[len] = curried(function_1.tuple, len - 1, []);\n }\n return tupleConstructors[len];\n}\nfunction sequenceT(F) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var len = args.length;\n var f = getTupleConstructor(len);\n var fas = F.map(args[0], f);\n for (var i = 1; i < len; i++) {\n fas = F.ap(fas, args[i]);\n }\n return fas;\n };\n}\nexports.sequenceT = sequenceT;\nfunction getRecordConstructor(keys) {\n var len = keys.length;\n switch (len) {\n case 1:\n return function (a) {\n var _a;\n return (_a = {}, _a[keys[0]] = a, _a);\n };\n case 2:\n return function (a) { return function (b) {\n var _a;\n return (_a = {}, _a[keys[0]] = a, _a[keys[1]] = b, _a);\n }; };\n case 3:\n return function (a) { return function (b) { return function (c) {\n var _a;\n return (_a = {}, _a[keys[0]] = a, _a[keys[1]] = b, _a[keys[2]] = c, _a);\n }; }; };\n case 4:\n return function (a) { return function (b) { return function (c) { return function (d) {\n var _a;\n return (_a = {},\n _a[keys[0]] = a,\n _a[keys[1]] = b,\n _a[keys[2]] = c,\n _a[keys[3]] = d,\n _a);\n }; }; }; };\n case 5:\n return function (a) { return function (b) { return function (c) { return function (d) { return function (e) {\n var _a;\n return (_a = {},\n _a[keys[0]] = a,\n _a[keys[1]] = b,\n _a[keys[2]] = c,\n _a[keys[3]] = d,\n _a[keys[4]] = e,\n _a);\n }; }; }; }; };\n default:\n return curried(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var r = {};\n for (var i = 0; i < len; i++) {\n r[keys[i]] = args[i];\n }\n return r;\n }, len - 1, []);\n }\n}\nfunction sequenceS(F) {\n return function (r) {\n var keys = Object.keys(r);\n var len = keys.length;\n var f = getRecordConstructor(keys);\n var fr = F.map(r[keys[0]], f);\n for (var i = 1; i < len; i++) {\n fr = F.ap(fr, r[keys[i]]);\n }\n return fr;\n };\n}\nexports.sequenceS = sequenceS;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bind = exports.chainFirst = void 0;\nfunction chainFirst(M) {\n return function (f) { return function (first) { return M.chain(first, function (a) { return M.map(f(a), function () { return a; }); }); }; };\n}\nexports.chainFirst = chainFirst;\nfunction bind(M) {\n return function (name, f) { return function (ma) { return M.chain(ma, function (a) { return M.map(f(a), function (b) {\n var _a;\n return Object.assign({}, a, (_a = {}, _a[name] = b, _a));\n }); }); }; };\n}\nexports.bind = bind;\n", "\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromReadonlyNonEmptyArray = exports.has = exports.emptyRecord = exports.emptyReadonlyArray = exports.tail = exports.head = exports.isNonEmpty = exports.singleton = exports.right = exports.left = exports.isRight = exports.isLeft = exports.some = exports.none = exports.isSome = exports.isNone = void 0;\n// -------------------------------------------------------------------------------------\n// Option\n// -------------------------------------------------------------------------------------\n/** @internal */\nvar isNone = function (fa) { return fa._tag === 'None'; };\nexports.isNone = isNone;\n/** @internal */\nvar isSome = function (fa) { return fa._tag === 'Some'; };\nexports.isSome = isSome;\n/** @internal */\nexports.none = { _tag: 'None' };\n/** @internal */\nvar some = function (a) { return ({ _tag: 'Some', value: a }); };\nexports.some = some;\n// -------------------------------------------------------------------------------------\n// Either\n// -------------------------------------------------------------------------------------\n/** @internal */\nvar isLeft = function (ma) { return ma._tag === 'Left'; };\nexports.isLeft = isLeft;\n/** @internal */\nvar isRight = function (ma) { return ma._tag === 'Right'; };\nexports.isRight = isRight;\n/** @internal */\nvar left = function (e) { return ({ _tag: 'Left', left: e }); };\nexports.left = left;\n/** @internal */\nvar right = function (a) { return ({ _tag: 'Right', right: a }); };\nexports.right = right;\n// -------------------------------------------------------------------------------------\n// ReadonlyNonEmptyArray\n// -------------------------------------------------------------------------------------\n/** @internal */\nvar singleton = function (a) { return [a]; };\nexports.singleton = singleton;\n/** @internal */\nvar isNonEmpty = function (as) { return as.length > 0; };\nexports.isNonEmpty = isNonEmpty;\n/** @internal */\nvar head = function (as) { return as[0]; };\nexports.head = head;\n/** @internal */\nvar tail = function (as) { return as.slice(1); };\nexports.tail = tail;\n// -------------------------------------------------------------------------------------\n// empty\n// -------------------------------------------------------------------------------------\n/** @internal */\nexports.emptyReadonlyArray = [];\n/** @internal */\nexports.emptyRecord = {};\n// -------------------------------------------------------------------------------------\n// Record\n// -------------------------------------------------------------------------------------\n/** @internal */\nexports.has = Object.prototype.hasOwnProperty;\n// -------------------------------------------------------------------------------------\n// NonEmptyArray\n// -------------------------------------------------------------------------------------\n/** @internal */\nvar fromReadonlyNonEmptyArray = function (as) { return __spreadArray([as[0]], as.slice(1)); };\nexports.fromReadonlyNonEmptyArray = fromReadonlyNonEmptyArray;\n", "\"use strict\";\n/**\n * The `FromEither` type class represents those data types which support errors.\n *\n * @since 2.10.0\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filterOrElse = exports.chainEitherK = exports.fromEitherK = exports.chainOptionK = exports.fromOptionK = exports.fromPredicate = exports.fromOption = void 0;\nvar function_1 = require(\"./function\");\nvar _ = __importStar(require(\"./internal\"));\nfunction fromOption(F) {\n return function (onNone) { return function (ma) { return F.fromEither(_.isNone(ma) ? _.left(onNone()) : _.right(ma.value)); }; };\n}\nexports.fromOption = fromOption;\nfunction fromPredicate(F) {\n return function (predicate, onFalse) { return function (a) {\n return F.fromEither(predicate(a) ? _.right(a) : _.left(onFalse(a)));\n }; };\n}\nexports.fromPredicate = fromPredicate;\nfunction fromOptionK(F) {\n var fromOptionF = fromOption(F);\n return function (onNone) {\n var from = fromOptionF(onNone);\n return function (f) { return function_1.flow(f, from); };\n };\n}\nexports.fromOptionK = fromOptionK;\nfunction chainOptionK(F, M) {\n var fromOptionKF = fromOptionK(F);\n return function (onNone) {\n var from = fromOptionKF(onNone);\n return function (f) { return function (ma) { return M.chain(ma, from(f)); }; };\n };\n}\nexports.chainOptionK = chainOptionK;\nfunction fromEitherK(F) {\n return function (f) { return function_1.flow(f, F.fromEither); };\n}\nexports.fromEitherK = fromEitherK;\nfunction chainEitherK(F, M) {\n var fromEitherKF = fromEitherK(F);\n return function (f) { return function (ma) { return M.chain(ma, fromEitherKF(f)); }; };\n}\nexports.chainEitherK = chainEitherK;\nfunction filterOrElse(F, M) {\n return function (predicate, onFalse) { return function (ma) {\n return M.chain(ma, function (a) { return F.fromEither(predicate(a) ? _.right(a) : _.left(onFalse(a))); });\n }; };\n}\nexports.filterOrElse = filterOrElse;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFunctorComposition = exports.bindTo = exports.flap = exports.map = void 0;\n/**\n * A `Functor` is a type constructor which supports a mapping operation `map`.\n *\n * `map` can be used to turn functions `a -> b` into functions `f a -> f b` whose argument and return types use the type\n * constructor `f` to represent some computational context.\n *\n * Instances must satisfy the following laws:\n *\n * 1. Identity: `F.map(fa, a => a) <-> fa`\n * 2. Composition: `F.map(fa, a => bc(ab(a))) <-> F.map(F.map(fa, ab), bc)`\n *\n * @since 2.0.0\n */\nvar function_1 = require(\"./function\");\nfunction map(F, G) {\n return function (f) { return function (fa) { return F.map(fa, function (ga) { return G.map(ga, f); }); }; };\n}\nexports.map = map;\nfunction flap(F) {\n return function (a) { return function (fab) { return F.map(fab, function (f) { return f(a); }); }; };\n}\nexports.flap = flap;\nfunction bindTo(F) {\n return function (name) { return function (fa) { return F.map(fa, function (a) {\n var _a;\n return (_a = {}, _a[name] = a, _a);\n }); }; };\n}\nexports.bindTo = bindTo;\n/** @deprecated */\nfunction getFunctorComposition(F, G) {\n var _map = map(F, G);\n return {\n map: function (fga, f) { return function_1.pipe(fga, _map(f)); }\n };\n}\nexports.getFunctorComposition = getFunctorComposition;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.eqDate = exports.eqNumber = exports.eqString = exports.eqBoolean = exports.eq = exports.strictEqual = exports.getStructEq = exports.getTupleEq = exports.Contravariant = exports.getMonoid = exports.getSemigroup = exports.eqStrict = exports.URI = exports.contramap = exports.tuple = exports.struct = exports.fromEquals = void 0;\nvar function_1 = require(\"./function\");\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.0.0\n */\nvar fromEquals = function (equals) { return ({\n equals: function (x, y) { return x === y || equals(x, y); }\n}); };\nexports.fromEquals = fromEquals;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @category combinators\n * @since 2.10.0\n */\nvar struct = function (eqs) {\n return exports.fromEquals(function (first, second) {\n for (var key in eqs) {\n if (!eqs[key].equals(first[key], second[key])) {\n return false;\n }\n }\n return true;\n });\n};\nexports.struct = struct;\n/**\n * Given a tuple of `Eq`s returns a `Eq` for the tuple\n *\n * @example\n * import { tuple } from 'fp-ts/Eq'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import * as B from 'fp-ts/boolean'\n *\n * const E = tuple(S.Eq, N.Eq, B.Eq)\n * assert.strictEqual(E.equals(['a', 1, true], ['a', 1, true]), true)\n * assert.strictEqual(E.equals(['a', 1, true], ['b', 1, true]), false)\n * assert.strictEqual(E.equals(['a', 1, true], ['a', 2, true]), false)\n * assert.strictEqual(E.equals(['a', 1, true], ['a', 1, false]), false)\n *\n * @category combinators\n * @since 2.10.0\n */\nvar tuple = function () {\n var eqs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n eqs[_i] = arguments[_i];\n }\n return exports.fromEquals(function (first, second) { return eqs.every(function (E, i) { return E.equals(first[i], second[i]); }); });\n};\nexports.tuple = tuple;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\n/* istanbul ignore next */\nvar contramap_ = function (fa, f) { return function_1.pipe(fa, exports.contramap(f)); };\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * @category Contravariant\n * @since 2.0.0\n */\nvar contramap = function (f) { return function (fa) {\n return exports.fromEquals(function (x, y) { return fa.equals(f(x), f(y)); });\n}; };\nexports.contramap = contramap;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.0.0\n */\nexports.URI = 'Eq';\n/**\n * @category instances\n * @since 2.5.0\n */\nexports.eqStrict = {\n equals: function (a, b) { return a === b; }\n};\nvar empty = {\n equals: function () { return true; }\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nvar getSemigroup = function () { return ({\n concat: function (x, y) { return exports.fromEquals(function (a, b) { return x.equals(a, b) && y.equals(a, b); }); }\n}); };\nexports.getSemigroup = getSemigroup;\n/**\n * @category instances\n * @since 2.6.0\n */\nvar getMonoid = function () { return ({\n concat: exports.getSemigroup().concat,\n empty: empty\n}); };\nexports.getMonoid = getMonoid;\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Contravariant = {\n URI: exports.URI,\n contramap: contramap_\n};\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use [`tuple`](#tuple) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getTupleEq = exports.tuple;\n/**\n * Use [`struct`](#struct) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getStructEq = exports.struct;\n/**\n * Use [`eqStrict`](#eqstrict) instead\n *\n * @since 2.0.0\n * @deprecated\n */\nexports.strictEqual = exports.eqStrict.equals;\n/**\n * Use small, specific instances instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.eq = exports.Contravariant;\n/**\n * Use [`Eq`](./boolean.ts.html#eq) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.eqBoolean = exports.eqStrict;\n/**\n * Use [`Eq`](./string.ts.html#eq) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.eqString = exports.eqStrict;\n/**\n * Use [`Eq`](./number.ts.html#eq) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.eqNumber = exports.eqStrict;\n/**\n * Use [`Eq`](./Date.ts.html#eq) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.eqDate = {\n equals: function (first, second) { return first.valueOf() === second.valueOf(); }\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ordDate = exports.ordNumber = exports.ordString = exports.ordBoolean = exports.ord = exports.getDualOrd = exports.getTupleOrd = exports.between = exports.clamp = exports.max = exports.min = exports.geq = exports.leq = exports.gt = exports.lt = exports.equals = exports.trivial = exports.Contravariant = exports.getMonoid = exports.getSemigroup = exports.URI = exports.contramap = exports.reverse = exports.tuple = exports.fromCompare = exports.equalsDefault = void 0;\nvar Eq_1 = require(\"./Eq\");\nvar function_1 = require(\"./function\");\n// -------------------------------------------------------------------------------------\n// defaults\n// -------------------------------------------------------------------------------------\n/**\n * @category defaults\n * @since 2.10.0\n */\nvar equalsDefault = function (compare) { return function (first, second) {\n return first === second || compare(first, second) === 0;\n}; };\nexports.equalsDefault = equalsDefault;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.0.0\n */\nvar fromCompare = function (compare) { return ({\n equals: exports.equalsDefault(compare),\n compare: function (first, second) { return (first === second ? 0 : compare(first, second)); }\n}); };\nexports.fromCompare = fromCompare;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * Given a tuple of `Ord`s returns an `Ord` for the tuple.\n *\n * @example\n * import { tuple } from 'fp-ts/Ord'\n * import * as B from 'fp-ts/boolean'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n *\n * const O = tuple(S.Ord, N.Ord, B.Ord)\n * assert.strictEqual(O.compare(['a', 1, true], ['b', 2, true]), -1)\n * assert.strictEqual(O.compare(['a', 1, true], ['a', 2, true]), -1)\n * assert.strictEqual(O.compare(['a', 1, true], ['a', 1, false]), 1)\n *\n * @category combinators\n * @since 2.10.0\n */\nvar tuple = function () {\n var ords = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n ords[_i] = arguments[_i];\n }\n return exports.fromCompare(function (first, second) {\n var i = 0;\n for (; i < ords.length - 1; i++) {\n var r = ords[i].compare(first[i], second[i]);\n if (r !== 0) {\n return r;\n }\n }\n return ords[i].compare(first[i], second[i]);\n });\n};\nexports.tuple = tuple;\n/**\n * @category combinators\n * @since 2.10.0\n */\nvar reverse = function (O) { return exports.fromCompare(function (first, second) { return O.compare(second, first); }); };\nexports.reverse = reverse;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\n/* istanbul ignore next */\nvar contramap_ = function (fa, f) { return function_1.pipe(fa, exports.contramap(f)); };\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * @category Contravariant\n * @since 2.0.0\n */\nvar contramap = function (f) { return function (fa) {\n return exports.fromCompare(function (first, second) { return fa.compare(f(first), f(second)); });\n}; };\nexports.contramap = contramap;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.0.0\n */\nexports.URI = 'Ord';\n/**\n * @category instances\n * @since 2.0.0\n */\nvar getSemigroup = function () { return ({\n concat: function (first, second) {\n return exports.fromCompare(function (a, b) {\n var ox = first.compare(a, b);\n return ox !== 0 ? ox : second.compare(a, b);\n });\n }\n}); };\nexports.getSemigroup = getSemigroup;\n/**\n * Returns a `Monoid` such that:\n *\n * - its `concat(ord1, ord2)` operation will order first by `ord1`, and then by `ord2`\n * - its `empty` value is an `Ord` that always considers compared elements equal\n *\n * @example\n * import { sort } from 'fp-ts/Array'\n * import { contramap, reverse, getMonoid } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as B from 'fp-ts/boolean'\n * import { pipe } from 'fp-ts/function'\n * import { concatAll } from 'fp-ts/Monoid'\n * import * as N from 'fp-ts/number'\n *\n * interface User {\n * readonly id: number\n * readonly name: string\n * readonly age: number\n * readonly rememberMe: boolean\n * }\n *\n * const byName = pipe(\n * S.Ord,\n * contramap((p: User) => p.name)\n * )\n *\n * const byAge = pipe(\n * N.Ord,\n * contramap((p: User) => p.age)\n * )\n *\n * const byRememberMe = pipe(\n * B.Ord,\n * contramap((p: User) => p.rememberMe)\n * )\n *\n * const M = getMonoid()\n *\n * const users: Array = [\n * { id: 1, name: 'Guido', age: 47, rememberMe: false },\n * { id: 2, name: 'Guido', age: 46, rememberMe: true },\n * { id: 3, name: 'Giulio', age: 44, rememberMe: false },\n * { id: 4, name: 'Giulio', age: 44, rememberMe: true }\n * ]\n *\n * // sort by name, then by age, then by `rememberMe`\n * const O1 = concatAll(M)([byName, byAge, byRememberMe])\n * assert.deepStrictEqual(sort(O1)(users), [\n * { id: 3, name: 'Giulio', age: 44, rememberMe: false },\n * { id: 4, name: 'Giulio', age: 44, rememberMe: true },\n * { id: 2, name: 'Guido', age: 46, rememberMe: true },\n * { id: 1, name: 'Guido', age: 47, rememberMe: false }\n * ])\n *\n * // now `rememberMe = true` first, then by name, then by age\n * const O2 = concatAll(M)([reverse(byRememberMe), byName, byAge])\n * assert.deepStrictEqual(sort(O2)(users), [\n * { id: 4, name: 'Giulio', age: 44, rememberMe: true },\n * { id: 2, name: 'Guido', age: 46, rememberMe: true },\n * { id: 3, name: 'Giulio', age: 44, rememberMe: false },\n * { id: 1, name: 'Guido', age: 47, rememberMe: false }\n * ])\n *\n * @category instances\n * @since 2.4.0\n */\nvar getMonoid = function () { return ({\n concat: exports.getSemigroup().concat,\n empty: exports.fromCompare(function () { return 0; })\n}); };\nexports.getMonoid = getMonoid;\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Contravariant = {\n URI: exports.URI,\n contramap: contramap_\n};\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.11.0\n */\nexports.trivial = {\n equals: function_1.constTrue,\n compare: \n /*#__PURE__*/\n function_1.constant(0)\n};\n/**\n * @since 2.11.0\n */\nvar equals = function (O) { return function (second) { return function (first) {\n return first === second || O.compare(first, second) === 0;\n}; }; };\nexports.equals = equals;\n// TODO: curry in v3\n/**\n * Test whether one value is _strictly less than_ another\n *\n * @since 2.0.0\n */\nvar lt = function (O) { return function (first, second) { return O.compare(first, second) === -1; }; };\nexports.lt = lt;\n// TODO: curry in v3\n/**\n * Test whether one value is _strictly greater than_ another\n *\n * @since 2.0.0\n */\nvar gt = function (O) { return function (first, second) { return O.compare(first, second) === 1; }; };\nexports.gt = gt;\n// TODO: curry in v3\n/**\n * Test whether one value is _non-strictly less than_ another\n *\n * @since 2.0.0\n */\nvar leq = function (O) { return function (first, second) { return O.compare(first, second) !== 1; }; };\nexports.leq = leq;\n// TODO: curry in v3\n/**\n * Test whether one value is _non-strictly greater than_ another\n *\n * @since 2.0.0\n */\nvar geq = function (O) { return function (first, second) { return O.compare(first, second) !== -1; }; };\nexports.geq = geq;\n// TODO: curry in v3\n/**\n * Take the minimum of two values. If they are considered equal, the first argument is chosen\n *\n * @since 2.0.0\n */\nvar min = function (O) { return function (first, second) {\n return first === second || O.compare(first, second) < 1 ? first : second;\n}; };\nexports.min = min;\n// TODO: curry in v3\n/**\n * Take the maximum of two values. If they are considered equal, the first argument is chosen\n *\n * @since 2.0.0\n */\nvar max = function (O) { return function (first, second) {\n return first === second || O.compare(first, second) > -1 ? first : second;\n}; };\nexports.max = max;\n/**\n * Clamp a value between a minimum and a maximum\n *\n * @since 2.0.0\n */\nvar clamp = function (O) {\n var minO = exports.min(O);\n var maxO = exports.max(O);\n return function (low, hi) { return function (a) { return maxO(minO(a, hi), low); }; };\n};\nexports.clamp = clamp;\n/**\n * Test whether a value is between a minimum and a maximum (inclusive)\n *\n * @since 2.0.0\n */\nvar between = function (O) {\n var ltO = exports.lt(O);\n var gtO = exports.gt(O);\n return function (low, hi) { return function (a) { return (ltO(a, low) || gtO(a, hi) ? false : true); }; };\n};\nexports.between = between;\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n// tslint:disable: deprecation\n/**\n * Use [`tuple`](#tuple) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getTupleOrd = exports.tuple;\n/**\n * Use [`reverse`](#reverse) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getDualOrd = exports.reverse;\n/**\n * Use [`Contravariant`](#contravariant) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.ord = exports.Contravariant;\n// default compare for primitive types\nfunction compare(first, second) {\n return first < second ? -1 : first > second ? 1 : 0;\n}\nvar strictOrd = {\n equals: Eq_1.eqStrict.equals,\n compare: compare\n};\n/**\n * Use [`Ord`](./boolean.ts.html#ord) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.ordBoolean = strictOrd;\n/**\n * Use [`Ord`](./string.ts.html#ord) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.ordString = strictOrd;\n/**\n * Use [`Ord`](./number.ts.html#ord) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.ordNumber = strictOrd;\n/**\n * Use [`Ord`](./Date.ts.html#ord) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.ordDate = \n/*#__PURE__*/\nfunction_1.pipe(exports.ordNumber, \n/*#__PURE__*/\nexports.contramap(function (date) { return date.valueOf(); }));\n", "\"use strict\";\n/**\n * A `Magma` is a pair `(A, concat)` in which `A` is a non-empty set and `concat` is a binary operation on `A`\n *\n * See [Semigroup](https://gcanti.github.io/fp-ts/modules/Semigroup.ts.html) for some instances.\n *\n * @since 2.0.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatAll = exports.endo = exports.filterSecond = exports.filterFirst = exports.reverse = void 0;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * The dual of a `Magma`, obtained by swapping the arguments of `concat`.\n *\n * @example\n * import { reverse, concatAll } from 'fp-ts/Magma'\n * import * as N from 'fp-ts/number'\n *\n * const subAll = concatAll(reverse(N.MagmaSub))(0)\n *\n * assert.deepStrictEqual(subAll([1, 2, 3]), 2)\n *\n * @category combinators\n * @since 2.11.0\n */\nvar reverse = function (M) { return ({\n concat: function (first, second) { return M.concat(second, first); }\n}); };\nexports.reverse = reverse;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar filterFirst = function (predicate) { return function (M) { return ({\n concat: function (first, second) { return (predicate(first) ? M.concat(first, second) : second); }\n}); }; };\nexports.filterFirst = filterFirst;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar filterSecond = function (predicate) { return function (M) { return ({\n concat: function (first, second) { return (predicate(second) ? M.concat(first, second) : first); }\n}); }; };\nexports.filterSecond = filterSecond;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar endo = function (f) { return function (M) { return ({\n concat: function (first, second) { return M.concat(f(first), f(second)); }\n}); }; };\nexports.endo = endo;\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * Given a sequence of `as`, concat them and return the total.\n *\n * If `as` is empty, return the provided `startWith` value.\n *\n * @example\n * import { concatAll } from 'fp-ts/Magma'\n * import * as N from 'fp-ts/number'\n *\n * const subAll = concatAll(N.MagmaSub)(0)\n *\n * assert.deepStrictEqual(subAll([1, 2, 3]), -6)\n *\n * @since 2.11.0\n */\nvar concatAll = function (M) { return function (startWith) { return function (as) {\n return as.reduce(function (a, acc) { return M.concat(a, acc); }, startWith);\n}; }; };\nexports.concatAll = concatAll;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semigroupProduct = exports.semigroupSum = exports.semigroupString = exports.getFunctionSemigroup = exports.semigroupAny = exports.semigroupAll = exports.fold = exports.getIntercalateSemigroup = exports.getMeetSemigroup = exports.getJoinSemigroup = exports.getDualSemigroup = exports.getStructSemigroup = exports.getTupleSemigroup = exports.getFirstSemigroup = exports.getLastSemigroup = exports.getObjectSemigroup = exports.semigroupVoid = exports.concatAll = exports.last = exports.first = exports.intercalate = exports.tuple = exports.struct = exports.reverse = exports.constant = exports.max = exports.min = void 0;\n/**\n * If a type `A` can form a `Semigroup` it has an **associative** binary operation.\n *\n * ```ts\n * interface Semigroup {\n * readonly concat: (x: A, y: A) => A\n * }\n * ```\n *\n * Associativity means the following equality must hold for any choice of `x`, `y`, and `z`.\n *\n * ```ts\n * concat(x, concat(y, z)) = concat(concat(x, y), z)\n * ```\n *\n * A common example of a semigroup is the type `string` with the operation `+`.\n *\n * ```ts\n * import { Semigroup } from 'fp-ts/Semigroup'\n *\n * const semigroupString: Semigroup = {\n * concat: (x, y) => x + y\n * }\n *\n * const x = 'x'\n * const y = 'y'\n * const z = 'z'\n *\n * semigroupString.concat(x, y) // 'xy'\n *\n * semigroupString.concat(x, semigroupString.concat(y, z)) // 'xyz'\n *\n * semigroupString.concat(semigroupString.concat(x, y), z) // 'xyz'\n * ```\n *\n * *Adapted from https://typelevel.org/cats*\n *\n * @since 2.0.0\n */\nvar function_1 = require(\"./function\");\nvar _ = __importStar(require(\"./internal\"));\nvar M = __importStar(require(\"./Magma\"));\nvar Or = __importStar(require(\"./Ord\"));\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Get a semigroup where `concat` will return the minimum, based on the provided order.\n *\n * @example\n * import * as N from 'fp-ts/number'\n * import * as S from 'fp-ts/Semigroup'\n *\n * const S1 = S.min(N.Ord)\n *\n * assert.deepStrictEqual(S1.concat(1, 2), 1)\n *\n * @category constructors\n * @since 2.10.0\n */\nvar min = function (O) { return ({\n concat: Or.min(O)\n}); };\nexports.min = min;\n/**\n * Get a semigroup where `concat` will return the maximum, based on the provided order.\n *\n * @example\n * import * as N from 'fp-ts/number'\n * import * as S from 'fp-ts/Semigroup'\n *\n * const S1 = S.max(N.Ord)\n *\n * assert.deepStrictEqual(S1.concat(1, 2), 2)\n *\n * @category constructors\n * @since 2.10.0\n */\nvar max = function (O) { return ({\n concat: Or.max(O)\n}); };\nexports.max = max;\n/**\n * @category constructors\n * @since 2.10.0\n */\nvar constant = function (a) { return ({\n concat: function () { return a; }\n}); };\nexports.constant = constant;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * The dual of a `Semigroup`, obtained by swapping the arguments of `concat`.\n *\n * @example\n * import { reverse } from 'fp-ts/Semigroup'\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(reverse(S.Semigroup).concat('a', 'b'), 'ba')\n *\n * @category combinators\n * @since 2.10.0\n */\nexports.reverse = M.reverse;\n/**\n * Given a struct of semigroups returns a semigroup for the struct.\n *\n * @example\n * import { struct } from 'fp-ts/Semigroup'\n * import * as N from 'fp-ts/number'\n *\n * interface Point {\n * readonly x: number\n * readonly y: number\n * }\n *\n * const S = struct({\n * x: N.SemigroupSum,\n * y: N.SemigroupSum\n * })\n *\n * assert.deepStrictEqual(S.concat({ x: 1, y: 2 }, { x: 3, y: 4 }), { x: 4, y: 6 })\n *\n * @category combinators\n * @since 2.10.0\n */\nvar struct = function (semigroups) { return ({\n concat: function (first, second) {\n var r = {};\n for (var k in semigroups) {\n if (_.has.call(semigroups, k)) {\n r[k] = semigroups[k].concat(first[k], second[k]);\n }\n }\n return r;\n }\n}); };\nexports.struct = struct;\n/**\n * Given a tuple of semigroups returns a semigroup for the tuple.\n *\n * @example\n * import { tuple } from 'fp-ts/Semigroup'\n * import * as B from 'fp-ts/boolean'\n * import * as N from 'fp-ts/number'\n * import * as S from 'fp-ts/string'\n *\n * const S1 = tuple(S.Semigroup, N.SemigroupSum)\n * assert.deepStrictEqual(S1.concat(['a', 1], ['b', 2]), ['ab', 3])\n *\n * const S2 = tuple(S.Semigroup, N.SemigroupSum, B.SemigroupAll)\n * assert.deepStrictEqual(S2.concat(['a', 1, true], ['b', 2, false]), ['ab', 3, false])\n *\n * @category combinators\n * @since 2.10.0\n */\nvar tuple = function () {\n var semigroups = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n semigroups[_i] = arguments[_i];\n }\n return ({\n concat: function (first, second) { return semigroups.map(function (s, i) { return s.concat(first[i], second[i]); }); }\n });\n};\nexports.tuple = tuple;\n/**\n * Between each pair of elements insert `middle`.\n *\n * @example\n * import { intercalate } from 'fp-ts/Semigroup'\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * const S1 = pipe(S.Semigroup, intercalate(' + '))\n *\n * assert.strictEqual(S1.concat('a', 'b'), 'a + b')\n *\n * @category combinators\n * @since 2.10.0\n */\nvar intercalate = function (middle) { return function (S) { return ({\n concat: function (x, y) { return S.concat(x, S.concat(middle, y)); }\n}); }; };\nexports.intercalate = intercalate;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * Always return the first argument.\n *\n * @example\n * import * as S from 'fp-ts/Semigroup'\n *\n * assert.deepStrictEqual(S.first().concat(1, 2), 1)\n *\n * @category instances\n * @since 2.10.0\n */\nvar first = function () { return ({ concat: function_1.identity }); };\nexports.first = first;\n/**\n * Always return the last argument.\n *\n * @example\n * import * as S from 'fp-ts/Semigroup'\n *\n * assert.deepStrictEqual(S.last().concat(1, 2), 2)\n *\n * @category instances\n * @since 2.10.0\n */\nvar last = function () { return ({ concat: function (_, y) { return y; } }); };\nexports.last = last;\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * Given a sequence of `as`, concat them and return the total.\n *\n * If `as` is empty, return the provided `startWith` value.\n *\n * @example\n * import { concatAll } from 'fp-ts/Semigroup'\n * import * as N from 'fp-ts/number'\n *\n * const sum = concatAll(N.SemigroupSum)(0)\n *\n * assert.deepStrictEqual(sum([1, 2, 3]), 6)\n * assert.deepStrictEqual(sum([]), 0)\n *\n * @since 2.10.0\n */\nexports.concatAll = M.concatAll;\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use `void` module instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.semigroupVoid = exports.constant(undefined);\n/**\n * Use [`getAssignSemigroup`](./struct.ts.html#getAssignSemigroup) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nvar getObjectSemigroup = function () { return ({\n concat: function (first, second) { return Object.assign({}, first, second); }\n}); };\nexports.getObjectSemigroup = getObjectSemigroup;\n/**\n * Use [`last`](#last) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.getLastSemigroup = exports.last;\n/**\n * Use [`first`](#first) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.getFirstSemigroup = exports.first;\n/**\n * Use [`tuple`](#tuple) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getTupleSemigroup = exports.tuple;\n/**\n * Use [`struct`](#struct) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getStructSemigroup = exports.struct;\n/**\n * Use [`reverse`](#reverse) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexports.getDualSemigroup = exports.reverse;\n/**\n * Use [`max`](#max) instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nexports.getJoinSemigroup = exports.max;\n/**\n * Use [`min`](#min) instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nexports.getMeetSemigroup = exports.min;\n/**\n * Use [`intercalate`](#intercalate) instead.\n *\n * @category combinators\n * @since 2.5.0\n * @deprecated\n */\nexports.getIntercalateSemigroup = exports.intercalate;\nfunction fold(S) {\n var concatAllS = exports.concatAll(S);\n return function (startWith, as) { return (as === undefined ? concatAllS(startWith) : concatAllS(startWith)(as)); };\n}\nexports.fold = fold;\n/**\n * Use [`SemigroupAll`](./boolean.ts.html#SemigroupAll) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.semigroupAll = {\n concat: function (x, y) { return x && y; }\n};\n/**\n * Use [`SemigroupAny`](./boolean.ts.html#SemigroupAny) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.semigroupAny = {\n concat: function (x, y) { return x || y; }\n};\n/**\n * Use [`getSemigroup`](./function.ts.html#getSemigroup) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.getFunctionSemigroup = function_1.getSemigroup;\n/**\n * Use [`Semigroup`](./string.ts.html#Semigroup) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.semigroupString = {\n concat: function (x, y) { return x + y; }\n};\n/**\n * Use [`SemigroupSum`](./number.ts.html#SemigroupSum) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.semigroupSum = {\n concat: function (x, y) { return x + y; }\n};\n/**\n * Use [`SemigroupProduct`](./number.ts.html#SemigroupProduct) instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.semigroupProduct = {\n concat: function (x, y) { return x * y; }\n};\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reduceRight = exports.foldMap = exports.reduce = exports.mapWithIndex = exports.map = exports.flatten = exports.duplicate = exports.extend = exports.chain = exports.ap = exports.alt = exports.altW = exports.of = exports.chunksOf = exports.splitAt = exports.chop = exports.chainWithIndex = exports.intersperse = exports.prependAll = exports.unzip = exports.zip = exports.zipWith = exports.modifyAt = exports.updateAt = exports.sort = exports.groupBy = exports.group = exports.reverse = exports.concat = exports.concatW = exports.fromArray = exports.unappend = exports.unprepend = exports.range = exports.replicate = exports.makeBy = exports.fromReadonlyArray = exports.rotate = exports.union = exports.sortBy = exports.uniq = exports.unsafeUpdateAt = exports.unsafeInsertAt = exports.append = exports.appendW = exports.prepend = exports.prependW = exports.isOutOfBound = exports.isNonEmpty = exports.empty = void 0;\nexports.uncons = exports.filterWithIndex = exports.filter = exports.groupSort = exports.updateLast = exports.modifyLast = exports.updateHead = exports.modifyHead = exports.matchRight = exports.matchLeft = exports.concatAll = exports.max = exports.min = exports.init = exports.last = exports.tail = exports.head = exports.apS = exports.bind = exports.bindTo = exports.Do = exports.Comonad = exports.Alt = exports.TraversableWithIndex = exports.Traversable = exports.FoldableWithIndex = exports.Foldable = exports.Monad = exports.chainFirst = exports.Chain = exports.Applicative = exports.apSecond = exports.apFirst = exports.Apply = exports.FunctorWithIndex = exports.Pointed = exports.flap = exports.Functor = exports.getUnionSemigroup = exports.getEq = exports.getSemigroup = exports.getShow = exports.URI = exports.extract = exports.traverseWithIndex = exports.sequence = exports.traverse = exports.reduceRightWithIndex = exports.foldMapWithIndex = exports.reduceWithIndex = void 0;\nexports.readonlyNonEmptyArray = exports.fold = exports.prependToAll = exports.insertAt = exports.snoc = exports.cons = exports.unsnoc = void 0;\nvar Apply_1 = require(\"./Apply\");\nvar Chain_1 = require(\"./Chain\");\nvar Eq_1 = require(\"./Eq\");\nvar function_1 = require(\"./function\");\nvar Functor_1 = require(\"./Functor\");\nvar _ = __importStar(require(\"./internal\"));\nvar Ord_1 = require(\"./Ord\");\nvar Se = __importStar(require(\"./Semigroup\"));\n// -------------------------------------------------------------------------------------\n// internal\n// -------------------------------------------------------------------------------------\n/**\n * @internal\n */\nexports.empty = _.emptyReadonlyArray;\n/**\n * @internal\n */\nexports.isNonEmpty = _.isNonEmpty;\n/**\n * @internal\n */\nvar isOutOfBound = function (i, as) { return i < 0 || i >= as.length; };\nexports.isOutOfBound = isOutOfBound;\n/**\n * @internal\n */\nvar prependW = function (head) { return function (tail) { return __spreadArray([head], tail); }; };\nexports.prependW = prependW;\n/**\n * @internal\n */\nexports.prepend = exports.prependW;\n/**\n * @internal\n */\nvar appendW = function (end) { return function (init) { return __spreadArray(__spreadArray([], init), [end]); }; };\nexports.appendW = appendW;\n/**\n * @internal\n */\nexports.append = exports.appendW;\n/**\n * @internal\n */\nvar unsafeInsertAt = function (i, a, as) {\n if (exports.isNonEmpty(as)) {\n var xs = _.fromReadonlyNonEmptyArray(as);\n xs.splice(i, 0, a);\n return xs;\n }\n return [a];\n};\nexports.unsafeInsertAt = unsafeInsertAt;\n/**\n * @internal\n */\nvar unsafeUpdateAt = function (i, a, as) {\n if (as[i] === a) {\n return as;\n }\n else {\n var xs = _.fromReadonlyNonEmptyArray(as);\n xs[i] = a;\n return xs;\n }\n};\nexports.unsafeUpdateAt = unsafeUpdateAt;\n/**\n * Remove duplicates from a `ReadonlyNonEmptyArray`, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/ReadonlyNonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @category combinators\n * @since 2.11.0\n */\nvar uniq = function (E) { return function (as) {\n if (as.length === 1) {\n return as;\n }\n var out = [exports.head(as)];\n var rest = exports.tail(as);\n var _loop_1 = function (a) {\n if (out.every(function (o) { return !E.equals(o, a); })) {\n out.push(a);\n }\n };\n for (var _i = 0, rest_1 = rest; _i < rest_1.length; _i++) {\n var a = rest_1[_i];\n _loop_1(a);\n }\n return out;\n}; };\nexports.uniq = uniq;\n/**\n * Sort the elements of a `ReadonlyNonEmptyArray` in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import * as RNEA from 'fp-ts/ReadonlyNonEmptyArray'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n * name: string\n * age: number\n * }\n *\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n *\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = RNEA.sortBy([byName, byAge])\n *\n * const persons: RNEA.ReadonlyNonEmptyArray = [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 },\n * { name: 'b', age: 2 }\n * ]\n *\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 2 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 }\n * ])\n *\n * @category combinators\n * @since 2.11.0\n */\nvar sortBy = function (ords) {\n if (exports.isNonEmpty(ords)) {\n var M = Ord_1.getMonoid();\n return exports.sort(ords.reduce(M.concat, M.empty));\n }\n return function_1.identity;\n};\nexports.sortBy = sortBy;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar union = function (E) {\n var uniqE = exports.uniq(E);\n return function (second) { return function (first) { return uniqE(function_1.pipe(first, concat(second))); }; };\n};\nexports.union = union;\n/**\n * Rotate a `ReadonlyNonEmptyArray` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n * assert.deepStrictEqual(rotate(-2)([1, 2, 3, 4, 5]), [3, 4, 5, 1, 2])\n *\n * @category combinators\n * @since 2.11.0\n */\nvar rotate = function (n) { return function (as) {\n var len = as.length;\n var m = Math.round(n) % len;\n if (exports.isOutOfBound(Math.abs(m), as) || m === 0) {\n return as;\n }\n if (m < 0) {\n var _a = exports.splitAt(-m)(as), f = _a[0], s = _a[1];\n return function_1.pipe(s, concat(f));\n }\n else {\n return exports.rotate(m - len)(as);\n }\n}; };\nexports.rotate = rotate;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Return a `ReadonlyNonEmptyArray` from a `ReadonlyArray` returning `none` if the input is empty.\n *\n * @category constructors\n * @since 2.5.0\n */\nvar fromReadonlyArray = function (as) {\n return exports.isNonEmpty(as) ? _.some(as) : _.none;\n};\nexports.fromReadonlyArray = fromReadonlyArray;\n/**\n * Return a `ReadonlyNonEmptyArray` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { makeBy } from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(pipe(5, makeBy(double)), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.11.0\n */\nvar makeBy = function (f) { return function (n) {\n var j = Math.max(0, Math.floor(n));\n var out = [f(0)];\n for (var i = 1; i < j; i++) {\n out.push(f(i));\n }\n return out;\n}; };\nexports.makeBy = makeBy;\n/**\n * Create a `ReadonlyNonEmptyArray` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { replicate } from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(3, replicate('a')), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.11.0\n */\nvar replicate = function (a) { return exports.makeBy(function () { return a; }); };\nexports.replicate = replicate;\n/**\n * Create a `ReadonlyNonEmptyArray` containing a range of integers, including both endpoints.\n *\n * @example\n * import { range } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(range(1, 5), [1, 2, 3, 4, 5])\n *\n * @category constructors\n * @since 2.11.0\n */\nvar range = function (start, end) {\n return start <= end ? exports.makeBy(function (i) { return start + i; })(end - start + 1) : [start];\n};\nexports.range = range;\n// -------------------------------------------------------------------------------------\n// destructors\n// -------------------------------------------------------------------------------------\n/**\n * Return the tuple of the `head` and the `tail`.\n *\n * @example\n * import { unprepend } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(unprepend([1, 2, 3, 4]), [1, [2, 3, 4]])\n *\n * @category destructors\n * @since 2.9.0\n */\nvar unprepend = function (as) { return [exports.head(as), exports.tail(as)]; };\nexports.unprepend = unprepend;\n/**\n * Return the tuple of the `init` and the `last`.\n *\n * @example\n * import { unappend } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(unappend([1, 2, 3, 4]), [[1, 2, 3], 4])\n *\n * @category destructors\n * @since 2.9.0\n */\nvar unappend = function (as) { return [exports.init(as), exports.last(as)]; };\nexports.unappend = unappend;\n// -------------------------------------------------------------------------------------\n// interop\n// -------------------------------------------------------------------------------------\n/**\n * @category interop\n * @since 2.5.0\n */\nvar fromArray = function (as) { return exports.fromReadonlyArray(as.slice()); };\nexports.fromArray = fromArray;\nfunction concatW(second) {\n return function (first) { return first.concat(second); };\n}\nexports.concatW = concatW;\nfunction concat(x, y) {\n return y ? x.concat(y) : function (y) { return y.concat(x); };\n}\nexports.concat = concat;\n/**\n * @category combinators\n * @since 2.5.0\n */\nvar reverse = function (as) {\n return as.length === 1 ? as : __spreadArray([exports.last(as)], as.slice(0, -1).reverse());\n};\nexports.reverse = reverse;\nfunction group(E) {\n return function (as) {\n var len = as.length;\n if (len === 0) {\n return exports.empty;\n }\n var out = [];\n var head = as[0];\n var nea = [head];\n for (var i = 1; i < len; i++) {\n var a = as[i];\n if (E.equals(a, head)) {\n nea.push(a);\n }\n else {\n out.push(nea);\n head = a;\n nea = [head];\n }\n }\n out.push(nea);\n return out;\n };\n}\nexports.group = group;\n/**\n * Splits an array into sub-non-empty-arrays stored in an object, based on the result of calling a `string`-returning\n * function on each element, and grouping the results according to values returned\n *\n * @example\n * import { groupBy } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(groupBy((s: string) => String(s.length))(['a', 'b', 'ab']), {\n * '1': ['a', 'b'],\n * '2': ['ab']\n * })\n *\n * @category combinators\n * @since 2.5.0\n */\nvar groupBy = function (f) { return function (as) {\n var out = {};\n for (var _i = 0, as_1 = as; _i < as_1.length; _i++) {\n var a = as_1[_i];\n var k = f(a);\n if (out.hasOwnProperty(k)) {\n out[k].push(a);\n }\n else {\n out[k] = [a];\n }\n }\n return out;\n}; };\nexports.groupBy = groupBy;\n/**\n * @category combinators\n * @since 2.5.0\n */\nvar sort = function (O) { return function (as) {\n return as.length === 1 ? as : as.slice().sort(O.compare);\n}; };\nexports.sort = sort;\n/**\n * @category combinators\n * @since 2.5.0\n */\nvar updateAt = function (i, a) {\n return exports.modifyAt(i, function () { return a; });\n};\nexports.updateAt = updateAt;\n/**\n * @category combinators\n * @since 2.5.0\n */\nvar modifyAt = function (i, f) { return function (as) { return (exports.isOutOfBound(i, as) ? _.none : _.some(exports.unsafeUpdateAt(i, f(as[i]), as))); }; };\nexports.modifyAt = modifyAt;\n/**\n * @category combinators\n * @since 2.5.1\n */\nvar zipWith = function (as, bs, f) {\n var cs = [f(as[0], bs[0])];\n var len = Math.min(as.length, bs.length);\n for (var i = 1; i < len; i++) {\n cs[i] = f(as[i], bs[i]);\n }\n return cs;\n};\nexports.zipWith = zipWith;\nfunction zip(as, bs) {\n if (bs === undefined) {\n return function (bs) { return zip(bs, as); };\n }\n return exports.zipWith(as, bs, function (a, b) { return [a, b]; });\n}\nexports.zip = zip;\n/**\n * @category combinators\n * @since 2.5.1\n */\nvar unzip = function (abs) {\n var fa = [abs[0][0]];\n var fb = [abs[0][1]];\n for (var i = 1; i < abs.length; i++) {\n fa[i] = abs[i][0];\n fb[i] = abs[i][1];\n }\n return [fa, fb];\n};\nexports.unzip = unzip;\n/**\n * Prepend an element to every member of a `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { prependAll } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.10.0\n */\nvar prependAll = function (middle) { return function (as) {\n var out = [middle, as[0]];\n for (var i = 1; i < as.length; i++) {\n out.push(middle, as[i]);\n }\n return out;\n}; };\nexports.prependAll = prependAll;\n/**\n * Places an element in between members of a `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { intersperse } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\nvar intersperse = function (middle) { return function (as) {\n var rest = exports.tail(as);\n return exports.isNonEmpty(rest) ? function_1.pipe(rest, exports.prependAll(middle), exports.prepend(exports.head(as))) : as;\n}; };\nexports.intersperse = intersperse;\n/**\n * @category combinators\n * @since 2.10.0\n */\nvar chainWithIndex = function (f) { return function (as) {\n var out = _.fromReadonlyNonEmptyArray(f(0, exports.head(as)));\n for (var i = 1; i < as.length; i++) {\n out.push.apply(out, f(i, as[i]));\n }\n return out;\n}; };\nexports.chainWithIndex = chainWithIndex;\n/**\n * A useful recursion pattern for processing a `ReadonlyNonEmptyArray` to produce a new `ReadonlyNonEmptyArray`, often used for \"chopping\" up the input\n * `ReadonlyNonEmptyArray`. Typically `chop` is called with some function that will consume an initial prefix of the `ReadonlyNonEmptyArray` and produce a\n * value and the tail of the `ReadonlyNonEmptyArray`.\n *\n * @category combinators\n * @since 2.10.0\n */\nvar chop = function (f) { return function (as) {\n var _a = f(as), b = _a[0], rest = _a[1];\n var out = [b];\n var next = rest;\n while (exports.isNonEmpty(next)) {\n var _b = f(next), b_1 = _b[0], rest_2 = _b[1];\n out.push(b_1);\n next = rest_2;\n }\n return out;\n}; };\nexports.chop = chop;\n/**\n * Splits a `ReadonlyNonEmptyArray` into two pieces, the first piece has max `n` elements.\n *\n * @category combinators\n * @since 2.10.0\n */\nvar splitAt = function (n) { return function (as) {\n var m = Math.max(1, n);\n return m >= as.length ? [as, exports.empty] : [function_1.pipe(as.slice(1, m), exports.prepend(exports.head(as))), as.slice(m)];\n}; };\nexports.splitAt = splitAt;\n/**\n * Splits a `ReadonlyNonEmptyArray` into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of\n * the `ReadonlyNonEmptyArray`.\n *\n * @category combinators\n * @since 2.10.0\n */\nvar chunksOf = function (n) { return exports.chop(exports.splitAt(n)); };\nexports.chunksOf = chunksOf;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\nvar _map = function (fa, f) { return function_1.pipe(fa, exports.map(f)); };\n/* istanbul ignore next */\nvar _mapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.mapWithIndex(f)); };\nvar _ap = function (fab, fa) { return function_1.pipe(fab, exports.ap(fa)); };\nvar _chain = function (ma, f) { return function_1.pipe(ma, exports.chain(f)); };\n/* istanbul ignore next */\nvar _extend = function (wa, f) { return function_1.pipe(wa, exports.extend(f)); };\n/* istanbul ignore next */\nvar _reduce = function (fa, b, f) { return function_1.pipe(fa, exports.reduce(b, f)); };\n/* istanbul ignore next */\nvar _foldMap = function (M) {\n var foldMapM = exports.foldMap(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRight = function (fa, b, f) { return function_1.pipe(fa, exports.reduceRight(b, f)); };\n/* istanbul ignore next */\nvar _traverse = function (F) {\n var traverseF = exports.traverse(F);\n return function (ta, f) { return function_1.pipe(ta, traverseF(f)); };\n};\n/* istanbul ignore next */\nvar _alt = function (fa, that) { return function_1.pipe(fa, exports.alt(that)); };\n/* istanbul ignore next */\nvar _reduceWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _foldMapWithIndex = function (M) {\n var foldMapWithIndexM = exports.foldMapWithIndex(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapWithIndexM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRightWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceRightWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _traverseWithIndex = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (ta, f) { return function_1.pipe(ta, traverseWithIndexF(f)); };\n};\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * @category Pointed\n * @since 2.5.0\n */\nexports.of = _.singleton;\n/**\n * Less strict version of [`alt`](#alt).\n *\n * @category Alt\n * @since 2.9.0\n */\nvar altW = function (that) { return function (as) { return function_1.pipe(as, concatW(that())); }; };\nexports.altW = altW;\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * @category Alt\n * @since 2.6.2\n */\nexports.alt = exports.altW;\n/**\n * @category Apply\n * @since 2.5.0\n */\nvar ap = function (as) { return exports.chain(function (f) { return function_1.pipe(as, exports.map(f)); }); };\nexports.ap = ap;\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation.\n *\n * @category Monad\n * @since 2.5.0\n */\nvar chain = function (f) { return exports.chainWithIndex(function (_, a) { return f(a); }); };\nexports.chain = chain;\n/**\n * @category Extend\n * @since 2.5.0\n */\nvar extend = function (f) { return function (as) {\n var next = exports.tail(as);\n var out = [f(as)];\n while (exports.isNonEmpty(next)) {\n out.push(f(next));\n next = exports.tail(next);\n }\n return out;\n}; };\nexports.extend = extend;\n/**\n * Derivable from `Extend`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.duplicate = \n/*#__PURE__*/\nexports.extend(function_1.identity);\n/**\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.flatten = \n/*#__PURE__*/\nexports.chain(function_1.identity);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category Functor\n * @since 2.5.0\n */\nvar map = function (f) {\n return exports.mapWithIndex(function (_, a) { return f(a); });\n};\nexports.map = map;\n/**\n * @category FunctorWithIndex\n * @since 2.5.0\n */\nvar mapWithIndex = function (f) { return function (as) {\n var out = [f(0, exports.head(as))];\n for (var i = 1; i < as.length; i++) {\n out.push(f(i, as[i]));\n }\n return out;\n}; };\nexports.mapWithIndex = mapWithIndex;\n/**\n * @category Foldable\n * @since 2.5.0\n */\nvar reduce = function (b, f) {\n return exports.reduceWithIndex(b, function (_, b, a) { return f(b, a); });\n};\nexports.reduce = reduce;\n/**\n * **Note**. The constraint is relaxed: a `Semigroup` instead of a `Monoid`.\n *\n * @category Foldable\n * @since 2.5.0\n */\nvar foldMap = function (S) { return function (f) { return function (as) {\n return as.slice(1).reduce(function (s, a) { return S.concat(s, f(a)); }, f(as[0]));\n}; }; };\nexports.foldMap = foldMap;\n/**\n * @category Foldable\n * @since 2.5.0\n */\nvar reduceRight = function (b, f) {\n return exports.reduceRightWithIndex(b, function (_, b, a) { return f(b, a); });\n};\nexports.reduceRight = reduceRight;\n/**\n * @category FoldableWithIndex\n * @since 2.5.0\n */\nvar reduceWithIndex = function (b, f) { return function (as) {\n return as.reduce(function (b, a, i) { return f(i, b, a); }, b);\n}; };\nexports.reduceWithIndex = reduceWithIndex;\n/**\n * **Note**. The constraint is relaxed: a `Semigroup` instead of a `Monoid`.\n *\n * @category FoldableWithIndex\n * @since 2.5.0\n */\nvar foldMapWithIndex = function (S) { return function (f) { return function (as) { return as.slice(1).reduce(function (s, a, i) { return S.concat(s, f(i + 1, a)); }, f(0, as[0])); }; }; };\nexports.foldMapWithIndex = foldMapWithIndex;\n/**\n * @category FoldableWithIndex\n * @since 2.5.0\n */\nvar reduceRightWithIndex = function (b, f) { return function (as) { return as.reduceRight(function (b, a, i) { return f(i, a, b); }, b); }; };\nexports.reduceRightWithIndex = reduceRightWithIndex;\n/**\n * @category Traversable\n * @since 2.6.3\n */\nvar traverse = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (f) { return traverseWithIndexF(function (_, a) { return f(a); }); };\n};\nexports.traverse = traverse;\n/**\n * @category Traversable\n * @since 2.6.3\n */\nvar sequence = function (F) { return exports.traverseWithIndex(F)(function_1.SK); };\nexports.sequence = sequence;\n/**\n * @category TraversableWithIndex\n * @since 2.6.3\n */\nvar traverseWithIndex = function (F) { return function (f) { return function (as) {\n var out = F.map(f(0, exports.head(as)), exports.of);\n for (var i = 1; i < as.length; i++) {\n out = F.ap(F.map(out, function (bs) { return function (b) { return function_1.pipe(bs, exports.append(b)); }; }), f(i, as[i]));\n }\n return out;\n}; }; };\nexports.traverseWithIndex = traverseWithIndex;\n/**\n * @category Comonad\n * @since 2.6.3\n */\nexports.extract = _.head;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.5.0\n */\nexports.URI = 'ReadonlyNonEmptyArray';\n/**\n * @category instances\n * @since 2.5.0\n */\nvar getShow = function (S) { return ({\n show: function (as) { return \"[\" + as.map(S.show).join(', ') + \"]\"; }\n}); };\nexports.getShow = getShow;\n/**\n * Builds a `Semigroup` instance for `ReadonlyNonEmptyArray`\n *\n * @category instances\n * @since 2.5.0\n */\nvar getSemigroup = function () { return ({\n concat: concat\n}); };\nexports.getSemigroup = getSemigroup;\n/**\n * @example\n * import { getEq } from 'fp-ts/ReadonlyNonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * const E = getEq(N.Eq)\n * assert.strictEqual(E.equals([1, 2], [1, 2]), true)\n * assert.strictEqual(E.equals([1, 2], [1, 3]), false)\n *\n * @category instances\n * @since 2.5.0\n */\nvar getEq = function (E) {\n return Eq_1.fromEquals(function (xs, ys) { return xs.length === ys.length && xs.every(function (x, i) { return E.equals(x, ys[i]); }); });\n};\nexports.getEq = getEq;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar getUnionSemigroup = function (E) {\n var unionE = exports.union(E);\n return {\n concat: function (first, second) { return unionE(second)(first); }\n };\n};\nexports.getUnionSemigroup = getUnionSemigroup;\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Functor = {\n URI: exports.URI,\n map: _map\n};\n/**\n * Derivable from `Functor`.\n *\n * @category combinators\n * @since 2.10.0\n */\nexports.flap = \n/*#__PURE__*/\nFunctor_1.flap(exports.Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Pointed = {\n URI: exports.URI,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FunctorWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Apply = {\n URI: exports.URI,\n map: _map,\n ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apFirst = \n/*#__PURE__*/\nApply_1.apFirst(exports.Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apSecond = \n/*#__PURE__*/\nApply_1.apSecond(exports.Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Applicative = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Chain = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.chainFirst = \n/*#__PURE__*/\nChain_1.chainFirst(exports.Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Monad = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of,\n chain: _chain\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Foldable = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FoldableWithIndex = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Traversable = {\n URI: exports.URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.TraversableWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Alt = {\n URI: exports.URI,\n map: _map,\n alt: _alt\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Comonad = {\n URI: exports.URI,\n map: _map,\n extend: _extend,\n extract: exports.extract\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.9.0\n */\nexports.Do = \n/*#__PURE__*/\nexports.of(_.emptyRecord);\n/**\n * @since 2.8.0\n */\nexports.bindTo = \n/*#__PURE__*/\nFunctor_1.bindTo(exports.Functor);\n/**\n * @since 2.8.0\n */\nexports.bind = \n/*#__PURE__*/\nChain_1.bind(exports.Chain);\n// -------------------------------------------------------------------------------------\n// pipeable sequence S\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.8.0\n */\nexports.apS = \n/*#__PURE__*/\nApply_1.apS(exports.Apply);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.5.0\n */\nexports.head = exports.extract;\n/**\n * @since 2.5.0\n */\nexports.tail = _.tail;\n/**\n * @since 2.5.0\n */\nvar last = function (as) { return as[as.length - 1]; };\nexports.last = last;\n/**\n * Get all but the last element of a non empty array, creating a new array.\n *\n * @example\n * import { init } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), [1, 2])\n * assert.deepStrictEqual(init([1]), [])\n *\n * @since 2.5.0\n */\nvar init = function (as) { return as.slice(0, -1); };\nexports.init = init;\n/**\n * @since 2.5.0\n */\nvar min = function (O) {\n var S = Se.min(O);\n return function (as) { return as.reduce(S.concat); };\n};\nexports.min = min;\n/**\n * @since 2.5.0\n */\nvar max = function (O) {\n var S = Se.max(O);\n return function (as) { return as.reduce(S.concat); };\n};\nexports.max = max;\n/**\n * @since 2.10.0\n */\nvar concatAll = function (S) { return function (as) { return as.reduce(S.concat); }; };\nexports.concatAll = concatAll;\n/**\n * Break a `ReadonlyArray` into its first element and remaining elements.\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchLeft = function (f) { return function (as) {\n return f(exports.head(as), exports.tail(as));\n}; };\nexports.matchLeft = matchLeft;\n/**\n * Break a `ReadonlyArray` into its initial elements and the last element.\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchRight = function (f) { return function (as) {\n return f(exports.init(as), exports.last(as));\n}; };\nexports.matchRight = matchRight;\n/**\n * Apply a function to the head, creating a new `ReadonlyNonEmptyArray`.\n *\n * @since 2.11.0\n */\nvar modifyHead = function (f) { return function (as) { return __spreadArray([\n f(exports.head(as))\n], exports.tail(as)); }; };\nexports.modifyHead = modifyHead;\n/**\n * Change the head, creating a new `ReadonlyNonEmptyArray`.\n *\n * @category combinators\n * @since 2.11.0\n */\nvar updateHead = function (a) { return exports.modifyHead(function () { return a; }); };\nexports.updateHead = updateHead;\n/**\n * Apply a function to the last element, creating a new `ReadonlyNonEmptyArray`.\n *\n * @since 2.11.0\n */\nvar modifyLast = function (f) { return function (as) {\n return function_1.pipe(exports.init(as), exports.append(f(exports.last(as))));\n}; };\nexports.modifyLast = modifyLast;\n/**\n * Change the last element, creating a new `ReadonlyNonEmptyArray`.\n *\n * @category combinators\n * @since 2.11.0\n */\nvar updateLast = function (a) { return exports.modifyLast(function () { return a; }); };\nexports.updateLast = updateLast;\nfunction groupSort(O) {\n var sortO = exports.sort(O);\n var groupO = group(O);\n return function (as) { return (exports.isNonEmpty(as) ? groupO(sortO(as)) : exports.empty); };\n}\nexports.groupSort = groupSort;\nfunction filter(predicate) {\n return exports.filterWithIndex(function (_, a) { return predicate(a); });\n}\nexports.filter = filter;\n/**\n * Use [`filterWithIndex`](./ReadonlyArray.ts.html#filterwithindex) instead.\n *\n * @category combinators\n * @since 2.5.0\n * @deprecated\n */\nvar filterWithIndex = function (predicate) { return function (as) { return exports.fromReadonlyArray(as.filter(function (a, i) { return predicate(i, a); })); }; };\nexports.filterWithIndex = filterWithIndex;\n/**\n * Use [`unprepend`](#unprepend) instead.\n *\n * @category destructors\n * @since 2.10.0\n * @deprecated\n */\nexports.uncons = exports.unprepend;\n/**\n * Use [`unappend`](#unappend) instead.\n *\n * @category destructors\n * @since 2.10.0\n * @deprecated\n */\nexports.unsnoc = exports.unappend;\nfunction cons(head, tail) {\n return tail === undefined ? exports.prepend(head) : function_1.pipe(tail, exports.prepend(head));\n}\nexports.cons = cons;\n/**\n * Use [`append`](./ReadonlyArray.ts.html#append) instead.\n *\n * @category constructors\n * @since 2.5.0\n * @deprecated\n */\nvar snoc = function (init, end) { return function_1.pipe(init, concat([end])); };\nexports.snoc = snoc;\n/**\n * Use [`insertAt`](./ReadonlyArray.ts.html#insertat) instead.\n *\n * @category combinators\n * @since 2.5.0\n * @deprecated\n */\nvar insertAt = function (i, a) { return function (as) {\n return i < 0 || i > as.length ? _.none : _.some(exports.unsafeInsertAt(i, a, as));\n}; };\nexports.insertAt = insertAt;\n/**\n * Use [`prependAll`](#prependall) instead.\n *\n * @category combinators\n * @since 2.9.0\n * @deprecated\n */\nexports.prependToAll = exports.prependAll;\n/**\n * Use [`concatAll`](#concatall) instead.\n *\n * @since 2.5.0\n * @deprecated\n */\nexports.fold = exports.concatAll;\n/**\n * Use small, specific instances instead.\n *\n * @category instances\n * @since 2.5.0\n * @deprecated\n */\nexports.readonlyNonEmptyArray = {\n URI: exports.URI,\n of: exports.of,\n map: _map,\n mapWithIndex: _mapWithIndex,\n ap: _ap,\n chain: _chain,\n extend: _extend,\n extract: exports.extract,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex,\n alt: _alt\n};\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapWithIndex = exports.map = exports.flatten = exports.duplicate = exports.extend = exports.chain = exports.ap = exports.alt = exports.altW = exports.chunksOf = exports.splitAt = exports.chop = exports.chainWithIndex = exports.foldMap = exports.foldMapWithIndex = exports.intersperse = exports.prependAll = exports.unzip = exports.zip = exports.zipWith = exports.of = exports.copy = exports.modifyAt = exports.updateAt = exports.insertAt = exports.sort = exports.groupBy = exports.group = exports.reverse = exports.concat = exports.concatW = exports.unappend = exports.unprepend = exports.range = exports.replicate = exports.makeBy = exports.fromArray = exports.fromReadonlyNonEmptyArray = exports.rotate = exports.union = exports.sortBy = exports.uniq = exports.unsafeUpdateAt = exports.unsafeInsertAt = exports.append = exports.appendW = exports.prepend = exports.prependW = exports.isOutOfBound = exports.isNonEmpty = void 0;\nexports.filterWithIndex = exports.filter = exports.groupSort = exports.updateLast = exports.modifyLast = exports.updateHead = exports.modifyHead = exports.matchRight = exports.matchLeft = exports.concatAll = exports.max = exports.min = exports.init = exports.last = exports.tail = exports.head = exports.apS = exports.bind = exports.bindTo = exports.Do = exports.Comonad = exports.Alt = exports.TraversableWithIndex = exports.Traversable = exports.FoldableWithIndex = exports.Foldable = exports.Monad = exports.chainFirst = exports.Chain = exports.Applicative = exports.apSecond = exports.apFirst = exports.Apply = exports.FunctorWithIndex = exports.Pointed = exports.flap = exports.Functor = exports.getUnionSemigroup = exports.getEq = exports.getSemigroup = exports.getShow = exports.URI = exports.extract = exports.traverseWithIndex = exports.sequence = exports.traverse = exports.reduceRightWithIndex = exports.reduceRight = exports.reduceWithIndex = exports.reduce = void 0;\nexports.nonEmptyArray = exports.fold = exports.prependToAll = exports.snoc = exports.cons = exports.unsnoc = exports.uncons = void 0;\nvar Apply_1 = require(\"./Apply\");\nvar Chain_1 = require(\"./Chain\");\nvar function_1 = require(\"./function\");\nvar Functor_1 = require(\"./Functor\");\nvar _ = __importStar(require(\"./internal\"));\nvar Ord_1 = require(\"./Ord\");\nvar RNEA = __importStar(require(\"./ReadonlyNonEmptyArray\"));\n// -------------------------------------------------------------------------------------\n// internal\n// -------------------------------------------------------------------------------------\n/**\n * @internal\n */\nvar isNonEmpty = function (as) { return as.length > 0; };\nexports.isNonEmpty = isNonEmpty;\n/**\n * @internal\n */\nvar isOutOfBound = function (i, as) { return i < 0 || i >= as.length; };\nexports.isOutOfBound = isOutOfBound;\n/**\n * @internal\n */\nvar prependW = function (head) { return function (tail) { return __spreadArray([head], tail); }; };\nexports.prependW = prependW;\n/**\n * @internal\n */\nexports.prepend = exports.prependW;\n/**\n * @internal\n */\nvar appendW = function (end) { return function (init) { return __spreadArray(__spreadArray([], init), [end]); }; };\nexports.appendW = appendW;\n/**\n * @internal\n */\nexports.append = exports.appendW;\n/**\n * @internal\n */\nvar unsafeInsertAt = function (i, a, as) {\n if (exports.isNonEmpty(as)) {\n var xs = exports.fromReadonlyNonEmptyArray(as);\n xs.splice(i, 0, a);\n return xs;\n }\n return [a];\n};\nexports.unsafeInsertAt = unsafeInsertAt;\n/**\n * @internal\n */\nvar unsafeUpdateAt = function (i, a, as) {\n var xs = exports.fromReadonlyNonEmptyArray(as);\n xs[i] = a;\n return xs;\n};\nexports.unsafeUpdateAt = unsafeUpdateAt;\n/**\n * Remove duplicates from a `NonEmptyArray`, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/NonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @category combinators\n * @since 2.11.0\n */\nvar uniq = function (E) { return function (as) {\n if (as.length === 1) {\n return exports.copy(as);\n }\n var out = [exports.head(as)];\n var rest = exports.tail(as);\n var _loop_1 = function (a) {\n if (out.every(function (o) { return !E.equals(o, a); })) {\n out.push(a);\n }\n };\n for (var _i = 0, rest_1 = rest; _i < rest_1.length; _i++) {\n var a = rest_1[_i];\n _loop_1(a);\n }\n return out;\n}; };\nexports.uniq = uniq;\n/**\n * Sort the elements of a `NonEmptyArray` in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import * as NEA from 'fp-ts/NonEmptyArray'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n * name: string\n * age: number\n * }\n *\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n *\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = NEA.sortBy([byName, byAge])\n *\n * const persons: NEA.NonEmptyArray = [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 },\n * { name: 'b', age: 2 }\n * ]\n *\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 2 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 }\n * ])\n *\n * @category combinators\n * @since 2.11.0\n */\nvar sortBy = function (ords) {\n if (exports.isNonEmpty(ords)) {\n var M = Ord_1.getMonoid();\n return exports.sort(ords.reduce(M.concat, M.empty));\n }\n return exports.copy;\n};\nexports.sortBy = sortBy;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar union = function (E) {\n var uniqE = exports.uniq(E);\n return function (second) { return function (first) { return uniqE(function_1.pipe(first, concat(second))); }; };\n};\nexports.union = union;\n/**\n * Rotate a `NonEmptyArray` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n * assert.deepStrictEqual(rotate(-2)([1, 2, 3, 4, 5]), [3, 4, 5, 1, 2])\n *\n * @category combinators\n * @since 2.11.0\n */\nvar rotate = function (n) { return function (as) {\n var len = as.length;\n var m = Math.round(n) % len;\n if (exports.isOutOfBound(Math.abs(m), as) || m === 0) {\n return exports.copy(as);\n }\n if (m < 0) {\n var _a = exports.splitAt(-m)(as), f = _a[0], s = _a[1];\n return function_1.pipe(s, concat(f));\n }\n else {\n return exports.rotate(m - len)(as);\n }\n}; };\nexports.rotate = rotate;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.10.0\n */\nexports.fromReadonlyNonEmptyArray = _.fromReadonlyNonEmptyArray;\n/**\n * Builds a `NonEmptyArray` from an `Array` returning `none` if `as` is an empty array\n *\n * @category constructors\n * @since 2.0.0\n */\nvar fromArray = function (as) { return (exports.isNonEmpty(as) ? _.some(as) : _.none); };\nexports.fromArray = fromArray;\n/**\n * Return a `NonEmptyArray` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { makeBy } from 'fp-ts/NonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(pipe(5, makeBy(double)), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.11.0\n */\nvar makeBy = function (f) { return function (n) {\n var j = Math.max(0, Math.floor(n));\n var out = [f(0)];\n for (var i = 1; i < j; i++) {\n out.push(f(i));\n }\n return out;\n}; };\nexports.makeBy = makeBy;\n/**\n * Create a `NonEmptyArray` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { replicate } from 'fp-ts/NonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(3, replicate('a')), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.11.0\n */\nvar replicate = function (a) { return exports.makeBy(function () { return a; }); };\nexports.replicate = replicate;\n/**\n * Create a `NonEmptyArray` containing a range of integers, including both endpoints.\n *\n * @example\n * import { range } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(range(1, 5), [1, 2, 3, 4, 5])\n *\n * @category constructors\n * @since 2.11.0\n */\nvar range = function (start, end) {\n return start <= end ? exports.makeBy(function (i) { return start + i; })(end - start + 1) : [start];\n};\nexports.range = range;\n// -------------------------------------------------------------------------------------\n// destructors\n// -------------------------------------------------------------------------------------\n/**\n * Return the tuple of the `head` and the `tail`.\n *\n * @example\n * import { unprepend } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(unprepend([1, 2, 3]), [1, [2, 3]])\n *\n * @category destructors\n * @since 2.9.0\n */\nvar unprepend = function (as) { return [exports.head(as), exports.tail(as)]; };\nexports.unprepend = unprepend;\n/**\n * Return the tuple of the `init` and the `last`.\n *\n * @example\n * import { unappend } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(unappend([1, 2, 3, 4]), [[1, 2, 3], 4])\n *\n * @category destructors\n * @since 2.9.0\n */\nvar unappend = function (as) { return [exports.init(as), exports.last(as)]; };\nexports.unappend = unappend;\nfunction concatW(second) {\n return function (first) { return first.concat(second); };\n}\nexports.concatW = concatW;\nfunction concat(x, y) {\n return y ? x.concat(y) : function (y) { return y.concat(x); };\n}\nexports.concat = concat;\n/**\n * @category combinators\n * @since 2.0.0\n */\nvar reverse = function (as) { return __spreadArray([exports.last(as)], as.slice(0, -1).reverse()); };\nexports.reverse = reverse;\nfunction group(E) {\n return function (as) {\n var len = as.length;\n if (len === 0) {\n return [];\n }\n var out = [];\n var head = as[0];\n var nea = [head];\n for (var i = 1; i < len; i++) {\n var a = as[i];\n if (E.equals(a, head)) {\n nea.push(a);\n }\n else {\n out.push(nea);\n head = a;\n nea = [head];\n }\n }\n out.push(nea);\n return out;\n };\n}\nexports.group = group;\n/**\n * Splits an array into sub-non-empty-arrays stored in an object, based on the result of calling a `string`-returning\n * function on each element, and grouping the results according to values returned\n *\n * @example\n * import { groupBy } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(groupBy((s: string) => String(s.length))(['a', 'b', 'ab']), {\n * '1': ['a', 'b'],\n * '2': ['ab']\n * })\n *\n * @category combinators\n * @since 2.0.0\n */\nvar groupBy = function (f) { return function (as) {\n var out = {};\n for (var _i = 0, as_1 = as; _i < as_1.length; _i++) {\n var a = as_1[_i];\n var k = f(a);\n if (out.hasOwnProperty(k)) {\n out[k].push(a);\n }\n else {\n out[k] = [a];\n }\n }\n return out;\n}; };\nexports.groupBy = groupBy;\n/**\n * @category combinators\n * @since 2.0.0\n */\nvar sort = function (O) { return function (as) {\n return as.slice().sort(O.compare);\n}; };\nexports.sort = sort;\n/**\n * @category combinators\n * @since 2.0.0\n */\nvar insertAt = function (i, a) { return function (as) {\n return i < 0 || i > as.length ? _.none : _.some(exports.unsafeInsertAt(i, a, as));\n}; };\nexports.insertAt = insertAt;\n/**\n * @category combinators\n * @since 2.0.0\n */\nvar updateAt = function (i, a) {\n return exports.modifyAt(i, function () { return a; });\n};\nexports.updateAt = updateAt;\n/**\n * @category combinators\n * @since 2.0.0\n */\nvar modifyAt = function (i, f) { return function (as) {\n return exports.isOutOfBound(i, as) ? _.none : _.some(exports.unsafeUpdateAt(i, f(as[i]), as));\n}; };\nexports.modifyAt = modifyAt;\n/**\n * @category combinators\n * @since 2.0.0\n */\nexports.copy = exports.fromReadonlyNonEmptyArray;\n/**\n * @category Pointed\n * @since 2.0.0\n */\nvar of = function (a) { return [a]; };\nexports.of = of;\n/**\n * @category combinators\n * @since 2.5.1\n */\nvar zipWith = function (as, bs, f) {\n var cs = [f(as[0], bs[0])];\n var len = Math.min(as.length, bs.length);\n for (var i = 1; i < len; i++) {\n cs[i] = f(as[i], bs[i]);\n }\n return cs;\n};\nexports.zipWith = zipWith;\nfunction zip(as, bs) {\n if (bs === undefined) {\n return function (bs) { return zip(bs, as); };\n }\n return exports.zipWith(as, bs, function (a, b) { return [a, b]; });\n}\nexports.zip = zip;\n/**\n * @category combinators\n * @since 2.5.1\n */\nvar unzip = function (abs) {\n var fa = [abs[0][0]];\n var fb = [abs[0][1]];\n for (var i = 1; i < abs.length; i++) {\n fa[i] = abs[i][0];\n fb[i] = abs[i][1];\n }\n return [fa, fb];\n};\nexports.unzip = unzip;\n/**\n * Prepend an element to every member of an array\n *\n * @example\n * import { prependAll } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.10.0\n */\nvar prependAll = function (middle) { return function (as) {\n var out = [middle, as[0]];\n for (var i = 1; i < as.length; i++) {\n out.push(middle, as[i]);\n }\n return out;\n}; };\nexports.prependAll = prependAll;\n/**\n * Places an element in between members of an array\n *\n * @example\n * import { intersperse } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\nvar intersperse = function (middle) { return function (as) {\n var rest = exports.tail(as);\n return exports.isNonEmpty(rest) ? function_1.pipe(rest, exports.prependAll(middle), exports.prepend(exports.head(as))) : exports.copy(as);\n}; };\nexports.intersperse = intersperse;\n/**\n * @category combinators\n * @since 2.0.0\n */\nexports.foldMapWithIndex = RNEA.foldMapWithIndex;\n/**\n * @category combinators\n * @since 2.0.0\n */\nexports.foldMap = RNEA.foldMap;\n/**\n * @category combinators\n * @since 2.10.0\n */\nvar chainWithIndex = function (f) { return function (as) {\n var out = exports.fromReadonlyNonEmptyArray(f(0, exports.head(as)));\n for (var i = 1; i < as.length; i++) {\n out.push.apply(out, f(i, as[i]));\n }\n return out;\n}; };\nexports.chainWithIndex = chainWithIndex;\n/**\n * @category combinators\n * @since 2.10.0\n */\nvar chop = function (f) { return function (as) {\n var _a = f(as), b = _a[0], rest = _a[1];\n var out = [b];\n var next = rest;\n while (exports.isNonEmpty(next)) {\n var _b = f(next), b_1 = _b[0], rest_2 = _b[1];\n out.push(b_1);\n next = rest_2;\n }\n return out;\n}; };\nexports.chop = chop;\n/**\n * Splits a `NonEmptyArray` into two pieces, the first piece has max `n` elements.\n *\n * @category combinators\n * @since 2.10.0\n */\nvar splitAt = function (n) { return function (as) {\n var m = Math.max(1, n);\n return m >= as.length ? [exports.copy(as), []] : [function_1.pipe(as.slice(1, m), exports.prepend(exports.head(as))), as.slice(m)];\n}; };\nexports.splitAt = splitAt;\n/**\n * @category combinators\n * @since 2.10.0\n */\nvar chunksOf = function (n) { return exports.chop(exports.splitAt(n)); };\nexports.chunksOf = chunksOf;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\n/* istanbul ignore next */\nvar _map = function (fa, f) { return function_1.pipe(fa, exports.map(f)); };\n/* istanbul ignore next */\nvar _mapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.mapWithIndex(f)); };\n/* istanbul ignore next */\nvar _ap = function (fab, fa) { return function_1.pipe(fab, exports.ap(fa)); };\n/* istanbul ignore next */\nvar _chain = function (ma, f) { return function_1.pipe(ma, exports.chain(f)); };\n/* istanbul ignore next */\nvar _extend = function (wa, f) { return function_1.pipe(wa, exports.extend(f)); };\n/* istanbul ignore next */\nvar _reduce = function (fa, b, f) { return function_1.pipe(fa, exports.reduce(b, f)); };\n/* istanbul ignore next */\nvar _foldMap = function (M) {\n var foldMapM = exports.foldMap(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRight = function (fa, b, f) { return function_1.pipe(fa, exports.reduceRight(b, f)); };\n/* istanbul ignore next */\nvar _traverse = function (F) {\n var traverseF = exports.traverse(F);\n return function (ta, f) { return function_1.pipe(ta, traverseF(f)); };\n};\n/* istanbul ignore next */\nvar _alt = function (fa, that) { return function_1.pipe(fa, exports.alt(that)); };\n/* istanbul ignore next */\nvar _reduceWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _foldMapWithIndex = function (M) {\n var foldMapWithIndexM = exports.foldMapWithIndex(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapWithIndexM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRightWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceRightWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _traverseWithIndex = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (ta, f) { return function_1.pipe(ta, traverseWithIndexF(f)); };\n};\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * Less strict version of [`alt`](#alt).\n *\n * @category Alt\n * @since 2.9.0\n */\nvar altW = function (that) { return function (as) {\n return function_1.pipe(as, concatW(that()));\n}; };\nexports.altW = altW;\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * @category Alt\n * @since 2.6.2\n */\nexports.alt = exports.altW;\n/**\n * Apply a function to an argument under a type constructor.\n *\n * @category Apply\n * @since 2.0.0\n */\nvar ap = function (as) {\n return exports.chain(function (f) { return function_1.pipe(as, exports.map(f)); });\n};\nexports.ap = ap;\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation.\n *\n * @category Monad\n * @since 2.0.0\n */\nvar chain = function (f) {\n return exports.chainWithIndex(function (_, a) { return f(a); });\n};\nexports.chain = chain;\n/**\n * @category Extend\n * @since 2.0.0\n */\nvar extend = function (f) { return function (as) {\n var next = exports.tail(as);\n var out = [f(as)];\n while (exports.isNonEmpty(next)) {\n out.push(f(next));\n next = exports.tail(next);\n }\n return out;\n}; };\nexports.extend = extend;\n/**\n * Derivable from `Extend`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.duplicate = \n/*#__PURE__*/\nexports.extend(function_1.identity);\n/**\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.flatten = \n/*#__PURE__*/\nexports.chain(function_1.identity);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category Functor\n * @since 2.0.0\n */\nvar map = function (f) { return exports.mapWithIndex(function (_, a) { return f(a); }); };\nexports.map = map;\n/**\n * @category FunctorWithIndex\n * @since 2.0.0\n */\nvar mapWithIndex = function (f) { return function (as) {\n var out = [f(0, exports.head(as))];\n for (var i = 1; i < as.length; i++) {\n out.push(f(i, as[i]));\n }\n return out;\n}; };\nexports.mapWithIndex = mapWithIndex;\n/**\n * @category Foldable\n * @since 2.0.0\n */\nexports.reduce = RNEA.reduce;\n/**\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexports.reduceWithIndex = RNEA.reduceWithIndex;\n/**\n * @category Foldable\n * @since 2.0.0\n */\nexports.reduceRight = RNEA.reduceRight;\n/**\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexports.reduceRightWithIndex = RNEA.reduceRightWithIndex;\n/**\n * @since 2.6.3\n */\nvar traverse = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (f) { return traverseWithIndexF(function (_, a) { return f(a); }); };\n};\nexports.traverse = traverse;\n/**\n * @since 2.6.3\n */\nvar sequence = function (F) { return exports.traverseWithIndex(F)(function (_, a) { return a; }); };\nexports.sequence = sequence;\n/**\n * @since 2.6.3\n */\nvar traverseWithIndex = function (F) { return function (f) { return function (as) {\n var out = F.map(f(0, exports.head(as)), exports.of);\n for (var i = 1; i < as.length; i++) {\n out = F.ap(F.map(out, function (bs) { return function (b) { return function_1.pipe(bs, exports.append(b)); }; }), f(i, as[i]));\n }\n return out;\n}; }; };\nexports.traverseWithIndex = traverseWithIndex;\n/**\n * @since 2.7.0\n */\nexports.extract = RNEA.head;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.0.0\n */\nexports.URI = 'NonEmptyArray';\n/**\n * @category instances\n * @since 2.0.0\n */\nexports.getShow = RNEA.getShow;\n/**\n * Builds a `Semigroup` instance for `NonEmptyArray`\n *\n * @category instances\n * @since 2.0.0\n */\nvar getSemigroup = function () { return ({\n concat: concat\n}); };\nexports.getSemigroup = getSemigroup;\n/**\n * @example\n * import { getEq } from 'fp-ts/NonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * const E = getEq(N.Eq)\n * assert.strictEqual(E.equals([1, 2], [1, 2]), true)\n * assert.strictEqual(E.equals([1, 2], [1, 3]), false)\n *\n * @category instances\n * @since 2.0.0\n */\nexports.getEq = RNEA.getEq;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar getUnionSemigroup = function (E) {\n var unionE = exports.union(E);\n return {\n concat: function (first, second) { return unionE(second)(first); }\n };\n};\nexports.getUnionSemigroup = getUnionSemigroup;\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Functor = {\n URI: exports.URI,\n map: _map\n};\n/**\n * Derivable from `Functor`.\n *\n * @category combinators\n * @since 2.10.0\n */\nexports.flap = \n/*#__PURE__*/\nFunctor_1.flap(exports.Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Pointed = {\n URI: exports.URI,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FunctorWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Apply = {\n URI: exports.URI,\n map: _map,\n ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apFirst = \n/*#__PURE__*/\nApply_1.apFirst(exports.Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apSecond = \n/*#__PURE__*/\nApply_1.apSecond(exports.Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Applicative = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Chain = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.chainFirst = \n/*#__PURE__*/\nChain_1.chainFirst(exports.Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Monad = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of,\n chain: _chain\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Foldable = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FoldableWithIndex = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Traversable = {\n URI: exports.URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.TraversableWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Alt = {\n URI: exports.URI,\n map: _map,\n alt: _alt\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Comonad = {\n URI: exports.URI,\n map: _map,\n extend: _extend,\n extract: exports.extract\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.9.0\n */\nexports.Do = \n/*#__PURE__*/\nexports.of(_.emptyRecord);\n/**\n * @since 2.8.0\n */\nexports.bindTo = \n/*#__PURE__*/\nFunctor_1.bindTo(exports.Functor);\n/**\n * @since 2.8.0\n */\nexports.bind = \n/*#__PURE__*/\nChain_1.bind(exports.Chain);\n// -------------------------------------------------------------------------------------\n// pipeable sequence S\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.8.0\n */\nexports.apS = \n/*#__PURE__*/\nApply_1.apS(exports.Apply);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.0.0\n */\nexports.head = RNEA.head;\n/**\n * @since 2.0.0\n */\nvar tail = function (as) { return as.slice(1); };\nexports.tail = tail;\n/**\n * @since 2.0.0\n */\nexports.last = RNEA.last;\n/**\n * Get all but the last element of a non empty array, creating a new array.\n *\n * @example\n * import { init } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), [1, 2])\n * assert.deepStrictEqual(init([1]), [])\n *\n * @since 2.2.0\n */\nvar init = function (as) { return as.slice(0, -1); };\nexports.init = init;\n/**\n * @since 2.0.0\n */\nexports.min = RNEA.min;\n/**\n * @since 2.0.0\n */\nexports.max = RNEA.max;\n/**\n * @since 2.10.0\n */\nvar concatAll = function (S) { return function (as) { return as.reduce(S.concat); }; };\nexports.concatAll = concatAll;\n/**\n * Break an `Array` into its first element and remaining elements.\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchLeft = function (f) { return function (as) { return f(exports.head(as), exports.tail(as)); }; };\nexports.matchLeft = matchLeft;\n/**\n * Break an `Array` into its initial elements and the last element.\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchRight = function (f) { return function (as) {\n return f(exports.init(as), exports.last(as));\n}; };\nexports.matchRight = matchRight;\n/**\n * Apply a function to the head, creating a new `NonEmptyArray`.\n *\n * @since 2.11.0\n */\nvar modifyHead = function (f) { return function (as) { return __spreadArray([\n f(exports.head(as))\n], exports.tail(as)); }; };\nexports.modifyHead = modifyHead;\n/**\n * Change the head, creating a new `NonEmptyArray`.\n *\n * @category combinators\n * @since 2.11.0\n */\nvar updateHead = function (a) { return exports.modifyHead(function () { return a; }); };\nexports.updateHead = updateHead;\n/**\n * Apply a function to the last element, creating a new `NonEmptyArray`.\n *\n * @since 2.11.0\n */\nvar modifyLast = function (f) { return function (as) {\n return function_1.pipe(exports.init(as), exports.append(f(exports.last(as))));\n}; };\nexports.modifyLast = modifyLast;\n/**\n * Change the last element, creating a new `NonEmptyArray`.\n *\n * @category combinators\n * @since 2.11.0\n */\nvar updateLast = function (a) { return exports.modifyLast(function () { return a; }); };\nexports.updateLast = updateLast;\nfunction groupSort(O) {\n var sortO = exports.sort(O);\n var groupO = group(O);\n return function (as) { return (exports.isNonEmpty(as) ? groupO(sortO(as)) : []); };\n}\nexports.groupSort = groupSort;\nfunction filter(predicate) {\n return exports.filterWithIndex(function (_, a) { return predicate(a); });\n}\nexports.filter = filter;\n/**\n * Use [`filterWithIndex`](./Array.ts.html#filterwithindex) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nvar filterWithIndex = function (predicate) { return function (as) { return exports.fromArray(as.filter(function (a, i) { return predicate(i, a); })); }; };\nexports.filterWithIndex = filterWithIndex;\n/**\n * Use [`unprepend`](#unprepend) instead.\n *\n * @category destructors\n * @since 2.9.0\n * @deprecated\n */\nexports.uncons = exports.unprepend;\n/**\n * Use [`unappend`](#unappend) instead.\n *\n * @category destructors\n * @since 2.9.0\n * @deprecated\n */\nexports.unsnoc = exports.unappend;\nfunction cons(head, tail) {\n return tail === undefined ? exports.prepend(head) : function_1.pipe(tail, exports.prepend(head));\n}\nexports.cons = cons;\n/**\n * Use [`append`](./Array.ts.html#append) instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nvar snoc = function (init, end) { return function_1.pipe(init, exports.append(end)); };\nexports.snoc = snoc;\n/**\n * Use [`prependAll`](#prependall) instead.\n *\n * @category combinators\n * @since 2.9.0\n * @deprecated\n */\nexports.prependToAll = exports.prependAll;\n/**\n * Use [`concatAll`](#concatall) instead.\n *\n * @since 2.5.0\n * @deprecated\n */\nexports.fold = RNEA.concatAll;\n/**\n * Use small, specific instances instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.nonEmptyArray = {\n URI: exports.URI,\n of: exports.of,\n map: _map,\n mapWithIndex: _mapWithIndex,\n ap: _ap,\n chain: _chain,\n extend: _extend,\n extract: exports.extract,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex,\n alt: _alt\n};\n", "\"use strict\";\n/**\n * ```ts\n * interface Separated {\n * readonly left: E\n * readonly right: A\n * }\n * ```\n *\n * Represents a result of separating a whole into two parts.\n *\n * @since 2.10.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.right = exports.left = exports.flap = exports.Functor = exports.Bifunctor = exports.URI = exports.bimap = exports.mapLeft = exports.map = exports.separated = void 0;\nvar function_1 = require(\"./function\");\nvar Functor_1 = require(\"./Functor\");\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.10.0\n */\nvar separated = function (left, right) { return ({ left: left, right: right }); };\nexports.separated = separated;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\nvar _map = function (fa, f) { return function_1.pipe(fa, exports.map(f)); };\nvar _mapLeft = function (fa, f) { return function_1.pipe(fa, exports.mapLeft(f)); };\nvar _bimap = function (fa, g, f) { return function_1.pipe(fa, exports.bimap(g, f)); };\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category Functor\n * @since 2.10.0\n */\nvar map = function (f) { return function (fa) {\n return exports.separated(exports.left(fa), f(exports.right(fa)));\n}; };\nexports.map = map;\n/**\n * Map a function over the first type argument of a bifunctor.\n *\n * @category Bifunctor\n * @since 2.10.0\n */\nvar mapLeft = function (f) { return function (fa) {\n return exports.separated(f(exports.left(fa)), exports.right(fa));\n}; };\nexports.mapLeft = mapLeft;\n/**\n * Map a pair of functions over the two type arguments of the bifunctor.\n *\n * @category Bifunctor\n * @since 2.10.0\n */\nvar bimap = function (f, g) { return function (fa) {\n return exports.separated(f(exports.left(fa)), g(exports.right(fa)));\n}; };\nexports.bimap = bimap;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.URI = 'Separated';\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Bifunctor = {\n URI: exports.URI,\n mapLeft: _mapLeft,\n bimap: _bimap\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Functor = {\n URI: exports.URI,\n map: _map\n};\n/**\n * Derivable from `Functor`.\n *\n * @category combinators\n * @since 2.10.0\n */\nexports.flap = \n/*#__PURE__*/\nFunctor_1.flap(exports.Functor);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.10.0\n */\nvar left = function (s) { return s.left; };\nexports.left = left;\n/**\n * @since 2.10.0\n */\nvar right = function (s) { return s.right; };\nexports.right = right;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filterE = exports.witherDefault = exports.wiltDefault = void 0;\nvar _ = __importStar(require(\"./internal\"));\nfunction wiltDefault(T, C) {\n return function (F) {\n var traverseF = T.traverse(F);\n return function (wa, f) { return F.map(traverseF(wa, f), C.separate); };\n };\n}\nexports.wiltDefault = wiltDefault;\nfunction witherDefault(T, C) {\n return function (F) {\n var traverseF = T.traverse(F);\n return function (wa, f) { return F.map(traverseF(wa, f), C.compact); };\n };\n}\nexports.witherDefault = witherDefault;\nfunction filterE(W) {\n return function (F) {\n var witherF = W.wither(F);\n return function (predicate) { return function (ga) { return witherF(ga, function (a) { return F.map(predicate(a), function (b) { return (b ? _.some(a) : _.none); }); }); }; };\n };\n}\nexports.filterE = filterE;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.guard = void 0;\nfunction guard(F, P) {\n return function (b) { return (b ? P.of(undefined) : F.zero()); };\n}\nexports.guard = guard;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sort = exports.lefts = exports.rights = exports.reverse = exports.modifyAt = exports.deleteAt = exports.updateAt = exports.insertAt = exports.findLastIndex = exports.findLastMap = exports.findLast = exports.findFirstMap = exports.findFirst = exports.findIndex = exports.dropLeftWhile = exports.dropRight = exports.dropLeft = exports.spanLeft = exports.takeLeftWhile = exports.takeRight = exports.takeLeft = exports.init = exports.tail = exports.last = exports.head = exports.lookup = exports.isOutOfBound = exports.size = exports.scanRight = exports.scanLeft = exports.chainWithIndex = exports.foldRight = exports.matchRight = exports.matchRightW = exports.foldLeft = exports.matchLeft = exports.matchLeftW = exports.match = exports.matchW = exports.fromEither = exports.fromOption = exports.fromPredicate = exports.replicate = exports.makeBy = exports.appendW = exports.append = exports.prependW = exports.prepend = exports.isNonEmpty = exports.isEmpty = void 0;\nexports.sequence = exports.traverse = exports.reduceRightWithIndex = exports.reduceRight = exports.reduceWithIndex = exports.foldMap = exports.reduce = exports.foldMapWithIndex = exports.duplicate = exports.extend = exports.filterWithIndex = exports.partitionMapWithIndex = exports.partitionMap = exports.partitionWithIndex = exports.partition = exports.compact = exports.filterMap = exports.filterMapWithIndex = exports.filter = exports.separate = exports.mapWithIndex = exports.map = exports.flatten = exports.chain = exports.ap = exports.alt = exports.altW = exports.zero = exports.of = exports._chainRecBreadthFirst = exports._chainRecDepthFirst = exports.difference = exports.intersection = exports.union = exports.concat = exports.concatW = exports.comprehension = exports.fromOptionK = exports.chunksOf = exports.splitAt = exports.chop = exports.sortBy = exports.uniq = exports.elem = exports.rotate = exports.intersperse = exports.prependAll = exports.unzip = exports.zip = exports.zipWith = void 0;\nexports.toArray = exports.unsafeDeleteAt = exports.unsafeUpdateAt = exports.unsafeInsertAt = exports.fromEitherK = exports.FromEither = exports.filterE = exports.Witherable = exports.ChainRecBreadthFirst = exports.chainRecBreadthFirst = exports.ChainRecDepthFirst = exports.chainRecDepthFirst = exports.TraversableWithIndex = exports.Traversable = exports.FoldableWithIndex = exports.Foldable = exports.FilterableWithIndex = exports.Filterable = exports.Compactable = exports.Extend = exports.Alternative = exports.guard = exports.Zero = exports.Alt = exports.Unfoldable = exports.chainFirst = exports.Monad = exports.Chain = exports.Applicative = exports.apSecond = exports.apFirst = exports.Apply = exports.FunctorWithIndex = exports.Pointed = exports.flap = exports.Functor = exports.getDifferenceMagma = exports.getIntersectionSemigroup = exports.getUnionMonoid = exports.getUnionSemigroup = exports.getOrd = exports.getEq = exports.getMonoid = exports.getSemigroup = exports.getShow = exports.URI = exports.unfold = exports.wilt = exports.wither = exports.traverseWithIndex = void 0;\nexports.readonlyArray = exports.prependToAll = exports.snoc = exports.cons = exports.range = exports.apS = exports.bind = exports.bindTo = exports.Do = exports.exists = exports.some = exports.every = exports.empty = exports.fromArray = void 0;\nvar Apply_1 = require(\"./Apply\");\nvar Chain_1 = require(\"./Chain\");\nvar Eq_1 = require(\"./Eq\");\nvar FromEither_1 = require(\"./FromEither\");\nvar function_1 = require(\"./function\");\nvar Functor_1 = require(\"./Functor\");\nvar _ = __importStar(require(\"./internal\"));\nvar N = __importStar(require(\"./number\"));\nvar Ord_1 = require(\"./Ord\");\nvar RNEA = __importStar(require(\"./ReadonlyNonEmptyArray\"));\nvar Separated_1 = require(\"./Separated\");\nvar Witherable_1 = require(\"./Witherable\");\nvar Zero_1 = require(\"./Zero\");\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * Test whether a `ReadonlyArray` is empty.\n *\n * @example\n * import { isEmpty } from 'fp-ts/ReadonlyArray'\n *\n * assert.strictEqual(isEmpty([]), true)\n *\n * @category refinements\n * @since 2.5.0\n */\nvar isEmpty = function (as) { return as.length === 0; };\nexports.isEmpty = isEmpty;\n/**\n * Test whether a `ReadonlyArray` is non empty.\n *\n * @category refinements\n * @since 2.5.0\n */\nexports.isNonEmpty = RNEA.isNonEmpty;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Prepend an element to the front of a `ReadonlyArray`, creating a new `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { prepend } from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([2, 3, 4], prepend(1)), [1, 2, 3, 4])\n *\n * @category constructors\n * @since 2.10.0\n */\nexports.prepend = RNEA.prepend;\n/**\n * Less strict version of [`prepend`](#prepend).\n *\n * @category constructors\n * @since 2.11.0\n */\nexports.prependW = RNEA.prependW;\n/**\n * Append an element to the end of a `ReadonlyArray`, creating a new `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { append } from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], append(4)), [1, 2, 3, 4])\n *\n * @category constructors\n * @since 2.10.0\n */\nexports.append = RNEA.append;\n/**\n * Less strict version of [`append`](#append).\n *\n * @category constructors\n * @since 2.11.0\n */\nexports.appendW = RNEA.appendW;\n/**\n * Return a `ReadonlyArray` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { makeBy } from 'fp-ts/ReadonlyArray'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(makeBy(5, double), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.5.0\n */\nvar makeBy = function (n, f) { return (n <= 0 ? exports.empty : RNEA.makeBy(f)(n)); };\nexports.makeBy = makeBy;\n/**\n * Create a `ReadonlyArray` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { replicate } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(replicate(3, 'a'), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.5.0\n */\nvar replicate = function (n, a) { return exports.makeBy(n, function () { return a; }); };\nexports.replicate = replicate;\nfunction fromPredicate(predicate) {\n return function (a) { return (predicate(a) ? [a] : exports.empty); };\n}\nexports.fromPredicate = fromPredicate;\n// -------------------------------------------------------------------------------------\n// natural transformations\n// -------------------------------------------------------------------------------------\n/**\n * @category natural transformations\n * @since 2.11.0\n */\nvar fromOption = function (ma) { return (_.isNone(ma) ? exports.empty : [ma.value]); };\nexports.fromOption = fromOption;\n/**\n * Transforms an `Either` to a `ReadonlyArray`.\n *\n * @category natural transformations\n * @since 2.11.0\n */\nvar fromEither = function (e) { return (_.isLeft(e) ? exports.empty : [e.right]); };\nexports.fromEither = fromEither;\n// -------------------------------------------------------------------------------------\n// destructors\n// -------------------------------------------------------------------------------------\n/**\n * Less strict version of [`match`](#match).\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchW = function (onEmpty, onNonEmpty) { return function (as) { return (exports.isNonEmpty(as) ? onNonEmpty(as) : onEmpty()); }; };\nexports.matchW = matchW;\n/**\n * @category destructors\n * @since 2.11.0\n */\nexports.match = exports.matchW;\n/**\n * Less strict version of [`matchLeft`](#matchleft).\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchLeftW = function (onEmpty, onNonEmpty) { return function (as) { return (exports.isNonEmpty(as) ? onNonEmpty(RNEA.head(as), RNEA.tail(as)) : onEmpty()); }; };\nexports.matchLeftW = matchLeftW;\n/**\n * Break a `ReadonlyArray` into its first element and remaining elements.\n *\n * @example\n * import { matchLeft } from 'fp-ts/ReadonlyArray'\n *\n * const len: (as: ReadonlyArray) => number = matchLeft(() => 0, (_, tail) => 1 + len(tail))\n * assert.strictEqual(len([1, 2, 3]), 3)\n *\n * @category destructors\n * @since 2.10.0\n */\nexports.matchLeft = exports.matchLeftW;\n/**\n * Alias of [`matchLeft`](#matchleft).\n *\n * @category destructors\n * @since 2.5.0\n */\nexports.foldLeft = exports.matchLeft;\n/**\n * Less strict version of [`matchRight`](#matchright).\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchRightW = function (onEmpty, onNonEmpty) { return function (as) { return (exports.isNonEmpty(as) ? onNonEmpty(RNEA.init(as), RNEA.last(as)) : onEmpty()); }; };\nexports.matchRightW = matchRightW;\n/**\n * Break a `ReadonlyArray` into its initial elements and the last element.\n *\n * @category destructors\n * @since 2.10.0\n */\nexports.matchRight = exports.matchRightW;\n/**\n * Alias of [`matchRight`](#matchright).\n *\n * @category destructors\n * @since 2.5.0\n */\nexports.foldRight = exports.matchRight;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @category combinators\n * @since 2.7.0\n */\nvar chainWithIndex = function (f) { return function (as) {\n if (exports.isEmpty(as)) {\n return exports.empty;\n }\n var out = [];\n for (var i = 0; i < as.length; i++) {\n out.push.apply(out, f(i, as[i]));\n }\n return out;\n}; };\nexports.chainWithIndex = chainWithIndex;\n/**\n * Same as `reduce` but it carries over the intermediate steps.\n *\n * @example\n * import { scanLeft } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(scanLeft(10, (b, a: number) => b - a)([1, 2, 3]), [10, 9, 7, 4])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar scanLeft = function (b, f) { return function (as) {\n var len = as.length;\n var out = new Array(len + 1);\n out[0] = b;\n for (var i = 0; i < len; i++) {\n out[i + 1] = f(out[i], as[i]);\n }\n return out;\n}; };\nexports.scanLeft = scanLeft;\n/**\n * Fold an array from the right, keeping all intermediate results instead of only the final result\n *\n * @example\n * import { scanRight } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(scanRight(10, (a: number, b) => b - a)([1, 2, 3]), [4, 5, 7, 10])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar scanRight = function (b, f) { return function (as) {\n var len = as.length;\n var out = new Array(len + 1);\n out[len] = b;\n for (var i = len - 1; i >= 0; i--) {\n out[i] = f(as[i], out[i + 1]);\n }\n return out;\n}; };\nexports.scanRight = scanRight;\n/**\n * Calculate the number of elements in a `ReadonlyArray`.\n *\n * @since 2.10.0\n */\nvar size = function (as) { return as.length; };\nexports.size = size;\n/**\n * Test whether an array contains a particular index\n *\n * @since 2.5.0\n */\nexports.isOutOfBound = RNEA.isOutOfBound;\nfunction lookup(i, as) {\n return as === undefined ? function (as) { return lookup(i, as); } : exports.isOutOfBound(i, as) ? _.none : _.some(as[i]);\n}\nexports.lookup = lookup;\n/**\n * Get the first element in an array, or `None` if the array is empty\n *\n * @example\n * import { head } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(head([1, 2, 3]), some(1))\n * assert.deepStrictEqual(head([]), none)\n *\n * @since 2.5.0\n */\nvar head = function (as) { return (exports.isNonEmpty(as) ? _.some(RNEA.head(as)) : _.none); };\nexports.head = head;\n/**\n * Get the last element in an array, or `None` if the array is empty\n *\n * @example\n * import { last } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(last([1, 2, 3]), some(3))\n * assert.deepStrictEqual(last([]), none)\n *\n * @since 2.5.0\n */\nvar last = function (as) { return (exports.isNonEmpty(as) ? _.some(RNEA.last(as)) : _.none); };\nexports.last = last;\n/**\n * Get all but the first element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { tail } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(tail([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(tail([]), none)\n *\n * @since 2.5.0\n */\nvar tail = function (as) {\n return exports.isNonEmpty(as) ? _.some(RNEA.tail(as)) : _.none;\n};\nexports.tail = tail;\n/**\n * Get all but the last element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { init } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), some([1, 2]))\n * assert.deepStrictEqual(init([]), none)\n *\n * @since 2.5.0\n */\nvar init = function (as) {\n return exports.isNonEmpty(as) ? _.some(RNEA.init(as)) : _.none;\n};\nexports.init = init;\n/**\n * Keep only a max number of elements from the start of an `ReadonlyArray`, creating a new `ReadonlyArray`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const input: ReadonlyArray = [1, 2, 3]\n * assert.deepStrictEqual(pipe(input, RA.takeLeft(2)), [1, 2])\n *\n * // out of bounds\n * assert.strictEqual(pipe(input, RA.takeLeft(4)), input)\n * assert.strictEqual(pipe(input, RA.takeLeft(-1)), input)\n *\n * @category combinators\n * @since 2.5.0\n */\nvar takeLeft = function (n) { return function (as) {\n return exports.isOutOfBound(n, as) ? as : n === 0 ? exports.empty : as.slice(0, n);\n}; };\nexports.takeLeft = takeLeft;\n/**\n * Keep only a max number of elements from the end of an `ReadonlyArray`, creating a new `ReadonlyArray`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const input: ReadonlyArray = [1, 2, 3]\n * assert.deepStrictEqual(pipe(input, RA.takeRight(2)), [2, 3])\n *\n * // out of bounds\n * assert.strictEqual(pipe(input, RA.takeRight(4)), input)\n * assert.strictEqual(pipe(input, RA.takeRight(-1)), input)\n *\n * @category combinators\n * @since 2.5.0\n */\nvar takeRight = function (n) { return function (as) {\n return exports.isOutOfBound(n, as) ? as : n === 0 ? exports.empty : as.slice(-n);\n}; };\nexports.takeRight = takeRight;\nfunction takeLeftWhile(predicate) {\n return function (as) {\n var out = [];\n for (var _i = 0, as_1 = as; _i < as_1.length; _i++) {\n var a = as_1[_i];\n if (!predicate(a)) {\n break;\n }\n out.push(a);\n }\n var len = out.length;\n return len === as.length ? as : len === 0 ? exports.empty : out;\n };\n}\nexports.takeLeftWhile = takeLeftWhile;\nvar spanLeftIndex = function (as, predicate) {\n var l = as.length;\n var i = 0;\n for (; i < l; i++) {\n if (!predicate(as[i])) {\n break;\n }\n }\n return i;\n};\nfunction spanLeft(predicate) {\n return function (as) {\n var _a = exports.splitAt(spanLeftIndex(as, predicate))(as), init = _a[0], rest = _a[1];\n return { init: init, rest: rest };\n };\n}\nexports.spanLeft = spanLeft;\n/**\n * Drop a max number of elements from the start of an `ReadonlyArray`, creating a new `ReadonlyArray`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const input: ReadonlyArray = [1, 2, 3]\n * assert.deepStrictEqual(pipe(input, RA.dropLeft(2)), [3])\n * assert.strictEqual(pipe(input, RA.dropLeft(0)), input)\n * assert.strictEqual(pipe(input, RA.dropLeft(-1)), input)\n *\n * @category combinators\n * @since 2.5.0\n */\nvar dropLeft = function (n) { return function (as) {\n return n <= 0 || exports.isEmpty(as) ? as : n >= as.length ? exports.empty : as.slice(n, as.length);\n}; };\nexports.dropLeft = dropLeft;\n/**\n * Drop a max number of elements from the end of an `ReadonlyArray`, creating a new `ReadonlyArray`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const input: ReadonlyArray = [1, 2, 3]\n * assert.deepStrictEqual(pipe(input, RA.dropRight(2)), [1])\n * assert.strictEqual(pipe(input, RA.dropRight(0)), input)\n * assert.strictEqual(pipe(input, RA.dropRight(-1)), input)\n *\n * @category combinators\n * @since 2.5.0\n */\nvar dropRight = function (n) { return function (as) {\n return n <= 0 || exports.isEmpty(as) ? as : n >= as.length ? exports.empty : as.slice(0, as.length - n);\n}; };\nexports.dropRight = dropRight;\nfunction dropLeftWhile(predicate) {\n return function (as) {\n var i = spanLeftIndex(as, predicate);\n return i === 0 ? as : i === as.length ? exports.empty : as.slice(i);\n };\n}\nexports.dropLeftWhile = dropLeftWhile;\n/**\n * Find the first index for which a predicate holds\n *\n * @example\n * import { findIndex } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([1, 2, 3]), some(1))\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([]), none)\n *\n * @since 2.5.0\n */\nvar findIndex = function (predicate) { return function (as) {\n for (var i = 0; i < as.length; i++) {\n if (predicate(as[i])) {\n return _.some(i);\n }\n }\n return _.none;\n}; };\nexports.findIndex = findIndex;\nfunction findFirst(predicate) {\n return function (as) {\n for (var i = 0; i < as.length; i++) {\n if (predicate(as[i])) {\n return _.some(as[i]);\n }\n }\n return _.none;\n };\n}\nexports.findFirst = findFirst;\n/**\n * Find the first element returned by an option based selector function\n *\n * @example\n * import { findFirstMap } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n * readonly name: string\n * readonly age?: number\n * }\n *\n * const persons: ReadonlyArray = [{ name: 'John' }, { name: 'Mary', age: 45 }, { name: 'Joey', age: 28 }]\n *\n * // returns the name of the first person that has an age\n * assert.deepStrictEqual(findFirstMap((p: Person) => (p.age === undefined ? none : some(p.name)))(persons), some('Mary'))\n *\n * @since 2.5.0\n */\nvar findFirstMap = function (f) { return function (as) {\n for (var i = 0; i < as.length; i++) {\n var out = f(as[i]);\n if (_.isSome(out)) {\n return out;\n }\n }\n return _.none;\n}; };\nexports.findFirstMap = findFirstMap;\nfunction findLast(predicate) {\n return function (as) {\n for (var i = as.length - 1; i >= 0; i--) {\n if (predicate(as[i])) {\n return _.some(as[i]);\n }\n }\n return _.none;\n };\n}\nexports.findLast = findLast;\n/**\n * Find the last element returned by an option based selector function\n *\n * @example\n * import { findLastMap } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n * readonly name: string\n * readonly age?: number\n * }\n *\n * const persons: ReadonlyArray = [{ name: 'John' }, { name: 'Mary', age: 45 }, { name: 'Joey', age: 28 }]\n *\n * // returns the name of the last person that has an age\n * assert.deepStrictEqual(findLastMap((p: Person) => (p.age === undefined ? none : some(p.name)))(persons), some('Joey'))\n *\n * @since 2.5.0\n */\nvar findLastMap = function (f) { return function (as) {\n for (var i = as.length - 1; i >= 0; i--) {\n var out = f(as[i]);\n if (_.isSome(out)) {\n return out;\n }\n }\n return _.none;\n}; };\nexports.findLastMap = findLastMap;\n/**\n * Returns the index of the last element of the list which matches the predicate\n *\n * @example\n * import { findLastIndex } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface X {\n * readonly a: number\n * readonly b: number\n * }\n * const xs: ReadonlyArray = [{ a: 1, b: 0 }, { a: 1, b: 1 }]\n * assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 1)(xs), some(1))\n * assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 4)(xs), none)\n *\n *\n * @since 2.5.0\n */\nvar findLastIndex = function (predicate) { return function (as) {\n for (var i = as.length - 1; i >= 0; i--) {\n if (predicate(as[i])) {\n return _.some(i);\n }\n }\n return _.none;\n}; };\nexports.findLastIndex = findLastIndex;\n/**\n * Insert an element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { insertAt } from 'fp-ts/ReadonlyArray'\n * import { some } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(insertAt(2, 5)([1, 2, 3, 4]), some([1, 2, 5, 3, 4]))\n *\n * @since 2.5.0\n */\nvar insertAt = function (i, a) { return function (as) {\n return i < 0 || i > as.length ? _.none : _.some(RNEA.unsafeInsertAt(i, a, as));\n}; };\nexports.insertAt = insertAt;\n/**\n * Change the element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { updateAt } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(updateAt(1, 1)([1, 2, 3]), some([1, 1, 3]))\n * assert.deepStrictEqual(updateAt(1, 1)([]), none)\n *\n * @since 2.5.0\n */\nvar updateAt = function (i, a) {\n return exports.modifyAt(i, function () { return a; });\n};\nexports.updateAt = updateAt;\n/**\n * Delete the element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { deleteAt } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(deleteAt(0)([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(deleteAt(1)([]), none)\n *\n * @since 2.5.0\n */\nvar deleteAt = function (i) { return function (as) {\n return exports.isOutOfBound(i, as) ? _.none : _.some(exports.unsafeDeleteAt(i, as));\n}; };\nexports.deleteAt = deleteAt;\n/**\n * Apply a function to the element at the specified index, creating a new array, or returning `None` if the index is out\n * of bounds\n *\n * @example\n * import { modifyAt } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * const double = (x: number): number => x * 2\n * assert.deepStrictEqual(modifyAt(1, double)([1, 2, 3]), some([1, 4, 3]))\n * assert.deepStrictEqual(modifyAt(1, double)([]), none)\n *\n * @since 2.5.0\n */\nvar modifyAt = function (i, f) { return function (as) {\n return exports.isOutOfBound(i, as) ? _.none : _.some(exports.unsafeUpdateAt(i, f(as[i]), as));\n}; };\nexports.modifyAt = modifyAt;\n/**\n * Reverse an array, creating a new array\n *\n * @example\n * import { reverse } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(reverse([1, 2, 3]), [3, 2, 1])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar reverse = function (as) { return (as.length <= 1 ? as : as.slice().reverse()); };\nexports.reverse = reverse;\n/**\n * Extracts from an array of `Either` all the `Right` elements. All the `Right` elements are extracted in order\n *\n * @example\n * import { rights } from 'fp-ts/ReadonlyArray'\n * import { right, left } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(rights([right(1), left('foo'), right(2)]), [1, 2])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar rights = function (as) {\n var r = [];\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n if (a._tag === 'Right') {\n r.push(a.right);\n }\n }\n return r;\n};\nexports.rights = rights;\n/**\n * Extracts from an array of `Either` all the `Left` elements. All the `Left` elements are extracted in order\n *\n * @example\n * import { lefts } from 'fp-ts/ReadonlyArray'\n * import { left, right } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(lefts([right(1), left('foo'), right(2)]), ['foo'])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar lefts = function (as) {\n var r = [];\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n if (a._tag === 'Left') {\n r.push(a.left);\n }\n }\n return r;\n};\nexports.lefts = lefts;\n/**\n * Sort the elements of an array in increasing order, creating a new array\n *\n * @example\n * import { sort } from 'fp-ts/ReadonlyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(sort(N.Ord)([3, 2, 1]), [1, 2, 3])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar sort = function (O) { return function (as) {\n return as.length <= 1 ? as : as.slice().sort(O.compare);\n}; };\nexports.sort = sort;\n// TODO: curry and make data-last in v3\n/**\n * Apply a function to pairs of elements at the same index in two arrays, collecting the results in a new array. If one\n * input array is short, excess elements of the longer array are discarded.\n *\n * @example\n * import { zipWith } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(zipWith([1, 2, 3], ['a', 'b', 'c', 'd'], (n, s) => s + n), ['a1', 'b2', 'c3'])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar zipWith = function (fa, fb, f) {\n var fc = [];\n var len = Math.min(fa.length, fb.length);\n for (var i = 0; i < len; i++) {\n fc[i] = f(fa[i], fb[i]);\n }\n return fc;\n};\nexports.zipWith = zipWith;\nfunction zip(as, bs) {\n if (bs === undefined) {\n return function (bs) { return zip(bs, as); };\n }\n return exports.zipWith(as, bs, function (a, b) { return [a, b]; });\n}\nexports.zip = zip;\n/**\n * The function is reverse of `zip`. Takes an array of pairs and return two corresponding arrays\n *\n * @example\n * import { unzip } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(unzip([[1, 'a'], [2, 'b'], [3, 'c']]), [[1, 2, 3], ['a', 'b', 'c']])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar unzip = function (as) {\n var fa = [];\n var fb = [];\n for (var i = 0; i < as.length; i++) {\n fa[i] = as[i][0];\n fb[i] = as[i][1];\n }\n return [fa, fb];\n};\nexports.unzip = unzip;\n/**\n * Prepend an element to every member of an array\n *\n * @example\n * import { prependAll } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.10.0\n */\nvar prependAll = function (middle) {\n var f = RNEA.prependAll(middle);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : as); };\n};\nexports.prependAll = prependAll;\n/**\n * Places an element in between members of an array\n *\n * @example\n * import { intersperse } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\nvar intersperse = function (middle) {\n var f = RNEA.intersperse(middle);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : as); };\n};\nexports.intersperse = intersperse;\n/**\n * Rotate a `ReadonlyArray` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar rotate = function (n) {\n var f = RNEA.rotate(n);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : as); };\n};\nexports.rotate = rotate;\nfunction elem(E) {\n return function (a, as) {\n if (as === undefined) {\n var elemE_1 = elem(E);\n return function (as) { return elemE_1(a, as); };\n }\n var predicate = function (element) { return E.equals(element, a); };\n var i = 0;\n for (; i < as.length; i++) {\n if (predicate(as[i])) {\n return true;\n }\n }\n return false;\n };\n}\nexports.elem = elem;\n/**\n * Remove duplicates from an array, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/ReadonlyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar uniq = function (E) {\n var f = RNEA.uniq(E);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : as); };\n};\nexports.uniq = uniq;\n/**\n * Sort the elements of an array in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import { sortBy } from 'fp-ts/ReadonlyArray'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n * readonly name: string\n * readonly age: number\n * }\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = sortBy([byName, byAge])\n *\n * const persons = [{ name: 'a', age: 1 }, { name: 'b', age: 3 }, { name: 'c', age: 2 }, { name: 'b', age: 2 }]\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 2 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 }\n * ])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar sortBy = function (ords) {\n var f = RNEA.sortBy(ords);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : as); };\n};\nexports.sortBy = sortBy;\n/**\n * A useful recursion pattern for processing a `ReadonlyArray` to produce a new `ReadonlyArray`, often used for \"chopping\" up the input\n * `ReadonlyArray`. Typically `chop` is called with some function that will consume an initial prefix of the `ReadonlyArray` and produce a\n * value and the tail of the `ReadonlyArray`.\n *\n * @example\n * import { Eq } from 'fp-ts/Eq'\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * const group = (S: Eq): ((as: ReadonlyArray) => ReadonlyArray>) => {\n * return RA.chop(as => {\n * const { init, rest } = pipe(as, RA.spanLeft((a: A) => S.equals(a, as[0])))\n * return [init, rest]\n * })\n * }\n * assert.deepStrictEqual(group(N.Eq)([1, 1, 2, 3, 3, 4]), [[1, 1], [2], [3, 3], [4]])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar chop = function (f) {\n var g = RNEA.chop(f);\n return function (as) { return (exports.isNonEmpty(as) ? g(as) : exports.empty); };\n};\nexports.chop = chop;\n/**\n * Splits a `ReadonlyArray` into two pieces, the first piece has max `n` elements.\n *\n * @example\n * import { splitAt } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(splitAt(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4, 5]])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar splitAt = function (n) { return function (as) {\n return n >= 1 && exports.isNonEmpty(as) ? RNEA.splitAt(n)(as) : exports.isEmpty(as) ? [as, exports.empty] : [exports.empty, as];\n}; };\nexports.splitAt = splitAt;\n/**\n * Splits a `ReadonlyArray` into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of\n * the `ReadonlyArray`. Note that `chunksOf(n)([])` is `[]`, not `[[]]`. This is intentional, and is consistent with a recursive\n * definition of `chunksOf`; it satisfies the property that:\n *\n * ```ts\n * chunksOf(n)(xs).concat(chunksOf(n)(ys)) == chunksOf(n)(xs.concat(ys)))\n * ```\n *\n * whenever `n` evenly divides the length of `as`.\n *\n * @example\n * import { chunksOf } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(chunksOf(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4], [5]])\n *\n * @category combinators\n * @since 2.5.0\n */\nvar chunksOf = function (n) {\n var f = RNEA.chunksOf(n);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : exports.empty); };\n};\nexports.chunksOf = chunksOf;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar fromOptionK = function (f) { return function () {\n var a = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n return exports.fromOption(f.apply(void 0, a));\n}; };\nexports.fromOptionK = fromOptionK;\nfunction comprehension(input, f, g) {\n if (g === void 0) { g = function () { return true; }; }\n var go = function (scope, input) {\n return exports.isNonEmpty(input)\n ? function_1.pipe(RNEA.head(input), exports.chain(function (x) { return go(function_1.pipe(scope, exports.append(x)), RNEA.tail(input)); }))\n : g.apply(void 0, scope) ? [f.apply(void 0, scope)]\n : exports.empty;\n };\n return go(exports.empty, input);\n}\nexports.comprehension = comprehension;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar concatW = function (second) { return function (first) {\n return exports.isEmpty(first) ? second : exports.isEmpty(second) ? first : first.concat(second);\n}; };\nexports.concatW = concatW;\n/**\n * @category combinators\n * @since 2.11.0\n */\nexports.concat = exports.concatW;\nfunction union(E) {\n var unionE = RNEA.union(E);\n return function (first, second) {\n if (second === undefined) {\n var unionE_1 = union(E);\n return function (second) { return unionE_1(second, first); };\n }\n return exports.isNonEmpty(first) && exports.isNonEmpty(second) ? unionE(second)(first) : exports.isNonEmpty(first) ? first : second;\n };\n}\nexports.union = union;\nfunction intersection(E) {\n var elemE = elem(E);\n return function (xs, ys) {\n if (ys === undefined) {\n var intersectionE_1 = intersection(E);\n return function (ys) { return intersectionE_1(ys, xs); };\n }\n return xs.filter(function (a) { return elemE(a, ys); });\n };\n}\nexports.intersection = intersection;\nfunction difference(E) {\n var elemE = elem(E);\n return function (xs, ys) {\n if (ys === undefined) {\n var differenceE_1 = difference(E);\n return function (ys) { return differenceE_1(ys, xs); };\n }\n return xs.filter(function (a) { return !elemE(a, ys); });\n };\n}\nexports.difference = difference;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\nvar _map = function (fa, f) { return function_1.pipe(fa, exports.map(f)); };\nvar _mapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.mapWithIndex(f)); };\nvar _ap = function (fab, fa) { return function_1.pipe(fab, exports.ap(fa)); };\nvar _chain = function (ma, f) { return function_1.pipe(ma, exports.chain(f)); };\nvar _filter = function (fa, predicate) {\n return function_1.pipe(fa, exports.filter(predicate));\n};\nvar _filterMap = function (fa, f) { return function_1.pipe(fa, exports.filterMap(f)); };\nvar _partition = function (fa, predicate) {\n return function_1.pipe(fa, exports.partition(predicate));\n};\nvar _partitionMap = function (fa, f) { return function_1.pipe(fa, exports.partitionMap(f)); };\nvar _partitionWithIndex = function (fa, predicateWithIndex) { return function_1.pipe(fa, exports.partitionWithIndex(predicateWithIndex)); };\nvar _partitionMapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.partitionMapWithIndex(f)); };\nvar _alt = function (fa, that) { return function_1.pipe(fa, exports.alt(that)); };\nvar _reduce = function (fa, b, f) { return function_1.pipe(fa, exports.reduce(b, f)); };\nvar _foldMap = function (M) {\n var foldMapM = exports.foldMap(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapM(f)); };\n};\nvar _reduceRight = function (fa, b, f) { return function_1.pipe(fa, exports.reduceRight(b, f)); };\nvar _reduceWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceWithIndex(b, f));\n};\nvar _foldMapWithIndex = function (M) {\n var foldMapWithIndexM = exports.foldMapWithIndex(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapWithIndexM(f)); };\n};\nvar _reduceRightWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceRightWithIndex(b, f));\n};\nvar _filterMapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.filterMapWithIndex(f)); };\nvar _filterWithIndex = function (fa, predicateWithIndex) { return function_1.pipe(fa, exports.filterWithIndex(predicateWithIndex)); };\nvar _extend = function (fa, f) { return function_1.pipe(fa, exports.extend(f)); };\nvar _traverse = function (F) {\n var traverseF = exports.traverse(F);\n return function (ta, f) { return function_1.pipe(ta, traverseF(f)); };\n};\n/* istanbul ignore next */\nvar _traverseWithIndex = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (ta, f) { return function_1.pipe(ta, traverseWithIndexF(f)); };\n};\n/** @internal */\nvar _chainRecDepthFirst = function (a, f) { return function_1.pipe(a, exports.chainRecDepthFirst(f)); };\nexports._chainRecDepthFirst = _chainRecDepthFirst;\n/** @internal */\nvar _chainRecBreadthFirst = function (a, f) { return function_1.pipe(a, exports.chainRecBreadthFirst(f)); };\nexports._chainRecBreadthFirst = _chainRecBreadthFirst;\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * @category Pointed\n * @since 2.5.0\n */\nexports.of = RNEA.of;\n/**\n * @category Zero\n * @since 2.7.0\n */\nvar zero = function () { return exports.empty; };\nexports.zero = zero;\n/**\n * Less strict version of [`alt`](#alt).\n *\n * @category Alt\n * @since 2.9.0\n */\nvar altW = function (that) { return function (fa) {\n return fa.concat(that());\n}; };\nexports.altW = altW;\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * @category Alt\n * @since 2.5.0\n */\nexports.alt = exports.altW;\n/**\n * Apply a function to an argument under a type constructor.\n *\n * @category Apply\n * @since 2.5.0\n */\nvar ap = function (fa) {\n return exports.chain(function (f) { return function_1.pipe(fa, exports.map(f)); });\n};\nexports.ap = ap;\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation.\n *\n * @category Monad\n * @since 2.5.0\n */\nvar chain = function (f) { return function (ma) {\n return function_1.pipe(ma, exports.chainWithIndex(function (_, a) { return f(a); }));\n}; };\nexports.chain = chain;\n/**\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.flatten = \n/*#__PURE__*/\nexports.chain(function_1.identity);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category Functor\n * @since 2.5.0\n */\nvar map = function (f) { return function (fa) {\n return fa.map(function (a) { return f(a); });\n}; };\nexports.map = map;\n/**\n * @category FunctorWithIndex\n * @since 2.5.0\n */\nvar mapWithIndex = function (f) { return function (fa) { return fa.map(function (a, i) { return f(i, a); }); }; };\nexports.mapWithIndex = mapWithIndex;\n/**\n * @category Compactable\n * @since 2.5.0\n */\nvar separate = function (fa) {\n var left = [];\n var right = [];\n for (var _i = 0, fa_1 = fa; _i < fa_1.length; _i++) {\n var e = fa_1[_i];\n if (e._tag === 'Left') {\n left.push(e.left);\n }\n else {\n right.push(e.right);\n }\n }\n return Separated_1.separated(left, right);\n};\nexports.separate = separate;\n/**\n * @category Filterable\n * @since 2.5.0\n */\nvar filter = function (predicate) { return function (as) { return as.filter(predicate); }; };\nexports.filter = filter;\n/**\n * @category FilterableWithIndex\n * @since 2.5.0\n */\nvar filterMapWithIndex = function (f) { return function (fa) {\n var out = [];\n for (var i = 0; i < fa.length; i++) {\n var optionB = f(i, fa[i]);\n if (_.isSome(optionB)) {\n out.push(optionB.value);\n }\n }\n return out;\n}; };\nexports.filterMapWithIndex = filterMapWithIndex;\n/**\n * @category Filterable\n * @since 2.5.0\n */\nvar filterMap = function (f) {\n return exports.filterMapWithIndex(function (_, a) { return f(a); });\n};\nexports.filterMap = filterMap;\n/**\n * @category Compactable\n * @since 2.5.0\n */\nexports.compact = \n/*#__PURE__*/\nexports.filterMap(function_1.identity);\n/**\n * @category Filterable\n * @since 2.5.0\n */\nvar partition = function (predicate) {\n return exports.partitionWithIndex(function (_, a) { return predicate(a); });\n};\nexports.partition = partition;\n/**\n * @category FilterableWithIndex\n * @since 2.5.0\n */\nvar partitionWithIndex = function (predicateWithIndex) { return function (as) {\n var left = [];\n var right = [];\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n if (predicateWithIndex(i, a)) {\n right.push(a);\n }\n else {\n left.push(a);\n }\n }\n return Separated_1.separated(left, right);\n}; };\nexports.partitionWithIndex = partitionWithIndex;\n/**\n * @category Filterable\n * @since 2.5.0\n */\nvar partitionMap = function (f) {\n return exports.partitionMapWithIndex(function (_, a) { return f(a); });\n};\nexports.partitionMap = partitionMap;\n/**\n * @category FilterableWithIndex\n * @since 2.5.0\n */\nvar partitionMapWithIndex = function (f) { return function (fa) {\n var left = [];\n var right = [];\n for (var i = 0; i < fa.length; i++) {\n var e = f(i, fa[i]);\n if (e._tag === 'Left') {\n left.push(e.left);\n }\n else {\n right.push(e.right);\n }\n }\n return Separated_1.separated(left, right);\n}; };\nexports.partitionMapWithIndex = partitionMapWithIndex;\n/**\n * @category FilterableWithIndex\n * @since 2.5.0\n */\nvar filterWithIndex = function (predicateWithIndex) { return function (as) {\n return as.filter(function (a, i) { return predicateWithIndex(i, a); });\n}; };\nexports.filterWithIndex = filterWithIndex;\n/**\n * @category Extend\n * @since 2.5.0\n */\nvar extend = function (f) { return function (wa) { return wa.map(function (_, i) { return f(wa.slice(i)); }); }; };\nexports.extend = extend;\n/**\n * Derivable from `Extend`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.duplicate = \n/*#__PURE__*/\nexports.extend(function_1.identity);\n/**\n * @category FoldableWithIndex\n * @since 2.5.0\n */\nvar foldMapWithIndex = function (M) { return function (f) { return function (fa) {\n return fa.reduce(function (b, a, i) { return M.concat(b, f(i, a)); }, M.empty);\n}; }; };\nexports.foldMapWithIndex = foldMapWithIndex;\n/**\n * @category Foldable\n * @since 2.5.0\n */\nvar reduce = function (b, f) {\n return exports.reduceWithIndex(b, function (_, b, a) { return f(b, a); });\n};\nexports.reduce = reduce;\n/**\n * @category Foldable\n * @since 2.5.0\n */\nvar foldMap = function (M) {\n var foldMapWithIndexM = exports.foldMapWithIndex(M);\n return function (f) { return foldMapWithIndexM(function (_, a) { return f(a); }); };\n};\nexports.foldMap = foldMap;\n/**\n * @category FoldableWithIndex\n * @since 2.5.0\n */\nvar reduceWithIndex = function (b, f) { return function (fa) {\n var len = fa.length;\n var out = b;\n for (var i = 0; i < len; i++) {\n out = f(i, out, fa[i]);\n }\n return out;\n}; };\nexports.reduceWithIndex = reduceWithIndex;\n/**\n * @category Foldable\n * @since 2.5.0\n */\nvar reduceRight = function (b, f) {\n return exports.reduceRightWithIndex(b, function (_, a, b) { return f(a, b); });\n};\nexports.reduceRight = reduceRight;\n/**\n * @category FoldableWithIndex\n * @since 2.5.0\n */\nvar reduceRightWithIndex = function (b, f) { return function (fa) { return fa.reduceRight(function (b, a, i) { return f(i, a, b); }, b); }; };\nexports.reduceRightWithIndex = reduceRightWithIndex;\n/**\n * @category Traversable\n * @since 2.6.3\n */\nvar traverse = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (f) { return traverseWithIndexF(function (_, a) { return f(a); }); };\n};\nexports.traverse = traverse;\n/**\n * @category Traversable\n * @since 2.6.3\n */\nvar sequence = function (F) { return function (ta) {\n return _reduce(ta, F.of(exports.zero()), function (fas, fa) {\n return F.ap(F.map(fas, function (as) { return function (a) { return function_1.pipe(as, exports.append(a)); }; }), fa);\n });\n}; };\nexports.sequence = sequence;\n/**\n * @category TraversableWithIndex\n * @since 2.6.3\n */\nvar traverseWithIndex = function (F) { return function (f) {\n return exports.reduceWithIndex(F.of(exports.zero()), function (i, fbs, a) {\n return F.ap(F.map(fbs, function (bs) { return function (b) { return function_1.pipe(bs, exports.append(b)); }; }), f(i, a));\n });\n}; };\nexports.traverseWithIndex = traverseWithIndex;\n/**\n * @category Witherable\n * @since 2.6.5\n */\nvar wither = function (F) {\n var _witherF = _wither(F);\n return function (f) { return function (fa) { return _witherF(fa, f); }; };\n};\nexports.wither = wither;\n/**\n * @category Witherable\n * @since 2.6.5\n */\nvar wilt = function (F) {\n var _wiltF = _wilt(F);\n return function (f) { return function (fa) { return _wiltF(fa, f); }; };\n};\nexports.wilt = wilt;\n/**\n * @category Unfoldable\n * @since 2.6.6\n */\nvar unfold = function (b, f) {\n var out = [];\n var bb = b;\n while (true) {\n var mt = f(bb);\n if (_.isSome(mt)) {\n var _a = mt.value, a = _a[0], b_1 = _a[1];\n out.push(a);\n bb = b_1;\n }\n else {\n break;\n }\n }\n return out;\n};\nexports.unfold = unfold;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.5.0\n */\nexports.URI = 'ReadonlyArray';\n/**\n * @category instances\n * @since 2.5.0\n */\nvar getShow = function (S) { return ({\n show: function (as) { return \"[\" + as.map(S.show).join(', ') + \"]\"; }\n}); };\nexports.getShow = getShow;\n/**\n * @category instances\n * @since 2.5.0\n */\nvar getSemigroup = function () { return ({\n concat: function (first, second) { return (exports.isEmpty(first) ? second : exports.isEmpty(second) ? first : first.concat(second)); }\n}); };\nexports.getSemigroup = getSemigroup;\n/**\n * Returns a `Monoid` for `ReadonlyArray`.\n *\n * @example\n * import { getMonoid } from 'fp-ts/ReadonlyArray'\n *\n * const M = getMonoid()\n * assert.deepStrictEqual(M.concat([1, 2], [3, 4]), [1, 2, 3, 4])\n *\n * @category instances\n * @since 2.5.0\n */\nvar getMonoid = function () { return ({\n concat: exports.getSemigroup().concat,\n empty: exports.empty\n}); };\nexports.getMonoid = getMonoid;\n/**\n * Derives an `Eq` over the `ReadonlyArray` of a given element type from the `Eq` of that type. The derived `Eq` defines two\n * arrays as equal if all elements of both arrays are compared equal pairwise with the given `E`. In case of arrays of\n * different lengths, the result is non equality.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { getEq } from 'fp-ts/ReadonlyArray'\n *\n * const E = getEq(S.Eq)\n * assert.strictEqual(E.equals(['a', 'b'], ['a', 'b']), true)\n * assert.strictEqual(E.equals(['a'], []), false)\n *\n * @category instances\n * @since 2.5.0\n */\nvar getEq = function (E) {\n return Eq_1.fromEquals(function (xs, ys) { return xs.length === ys.length && xs.every(function (x, i) { return E.equals(x, ys[i]); }); });\n};\nexports.getEq = getEq;\n/**\n * Derives an `Ord` over the `ReadonlyArray` of a given element type from the `Ord` of that type. The ordering between two such\n * arrays is equal to: the first non equal comparison of each arrays elements taken pairwise in increasing order, in\n * case of equality over all the pairwise elements; the longest array is considered the greatest, if both arrays have\n * the same length, the result is equality.\n *\n * @example\n * import { getOrd } from 'fp-ts/ReadonlyArray'\n * import * as S from 'fp-ts/string'\n *\n * const O = getOrd(S.Ord)\n * assert.strictEqual(O.compare(['b'], ['a']), 1)\n * assert.strictEqual(O.compare(['a'], ['a']), 0)\n * assert.strictEqual(O.compare(['a'], ['b']), -1)\n *\n *\n * @category instances\n * @since 2.5.0\n */\nvar getOrd = function (O) {\n return Ord_1.fromCompare(function (a, b) {\n var aLen = a.length;\n var bLen = b.length;\n var len = Math.min(aLen, bLen);\n for (var i = 0; i < len; i++) {\n var ordering = O.compare(a[i], b[i]);\n if (ordering !== 0) {\n return ordering;\n }\n }\n return N.Ord.compare(aLen, bLen);\n });\n};\nexports.getOrd = getOrd;\n/**\n * @category instances\n * @since 2.11.0\n */\nvar getUnionSemigroup = function (E) {\n var unionE = union(E);\n return {\n concat: function (first, second) { return unionE(second)(first); }\n };\n};\nexports.getUnionSemigroup = getUnionSemigroup;\n/**\n * @category instances\n * @since 2.11.0\n */\nvar getUnionMonoid = function (E) { return ({\n concat: exports.getUnionSemigroup(E).concat,\n empty: exports.empty\n}); };\nexports.getUnionMonoid = getUnionMonoid;\n/**\n * @category instances\n * @since 2.11.0\n */\nvar getIntersectionSemigroup = function (E) {\n var intersectionE = intersection(E);\n return {\n concat: function (first, second) { return intersectionE(second)(first); }\n };\n};\nexports.getIntersectionSemigroup = getIntersectionSemigroup;\n/**\n * @category instances\n * @since 2.11.0\n */\nvar getDifferenceMagma = function (E) {\n var differenceE = difference(E);\n return {\n concat: function (first, second) { return differenceE(second)(first); }\n };\n};\nexports.getDifferenceMagma = getDifferenceMagma;\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Functor = {\n URI: exports.URI,\n map: _map\n};\n/**\n * Derivable from `Functor`.\n *\n * @category combinators\n * @since 2.10.0\n */\nexports.flap = \n/*#__PURE__*/\nFunctor_1.flap(exports.Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Pointed = {\n URI: exports.URI,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FunctorWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Apply = {\n URI: exports.URI,\n map: _map,\n ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apFirst = \n/*#__PURE__*/\nApply_1.apFirst(exports.Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apSecond = \n/*#__PURE__*/\nApply_1.apSecond(exports.Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Applicative = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Chain = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Monad = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of,\n chain: _chain\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.chainFirst = \n/*#__PURE__*/\nChain_1.chainFirst(exports.Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Unfoldable = {\n URI: exports.URI,\n unfold: exports.unfold\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Alt = {\n URI: exports.URI,\n map: _map,\n alt: _alt\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.Zero = {\n URI: exports.URI,\n zero: exports.zero\n};\n/**\n * @category constructors\n * @since 2.11.0\n */\nexports.guard = \n/*#__PURE__*/\nZero_1.guard(exports.Zero, exports.Pointed);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Alternative = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of,\n alt: _alt,\n zero: exports.zero\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Extend = {\n URI: exports.URI,\n map: _map,\n extend: _extend\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Compactable = {\n URI: exports.URI,\n compact: exports.compact,\n separate: exports.separate\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Filterable = {\n URI: exports.URI,\n map: _map,\n compact: exports.compact,\n separate: exports.separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FilterableWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n compact: exports.compact,\n separate: exports.separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n partitionMapWithIndex: _partitionMapWithIndex,\n partitionWithIndex: _partitionWithIndex,\n filterMapWithIndex: _filterMapWithIndex,\n filterWithIndex: _filterWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Foldable = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FoldableWithIndex = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Traversable = {\n URI: exports.URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.TraversableWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverse: _traverse,\n sequence: exports.sequence,\n traverseWithIndex: _traverseWithIndex\n};\n/**\n * @category ChainRec\n * @since 2.11.0\n */\nvar chainRecDepthFirst = function (f) { return function (a) {\n var todo = __spreadArray([], f(a));\n var out = [];\n while (todo.length > 0) {\n var e = todo.shift();\n if (_.isLeft(e)) {\n todo.unshift.apply(todo, f(e.left));\n }\n else {\n out.push(e.right);\n }\n }\n return out;\n}; };\nexports.chainRecDepthFirst = chainRecDepthFirst;\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.ChainRecDepthFirst = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain,\n chainRec: exports._chainRecDepthFirst\n};\n/**\n * @category ChainRec\n * @since 2.11.0\n */\nvar chainRecBreadthFirst = function (f) { return function (a) {\n var initial = f(a);\n var todo = [];\n var out = [];\n function go(e) {\n if (_.isLeft(e)) {\n f(e.left).forEach(function (v) { return todo.push(v); });\n }\n else {\n out.push(e.right);\n }\n }\n for (var _i = 0, initial_1 = initial; _i < initial_1.length; _i++) {\n var e = initial_1[_i];\n go(e);\n }\n while (todo.length > 0) {\n go(todo.shift());\n }\n return out;\n}; };\nexports.chainRecBreadthFirst = chainRecBreadthFirst;\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.ChainRecBreadthFirst = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain,\n chainRec: exports._chainRecBreadthFirst\n};\nvar _wither = \n/*#__PURE__*/\nWitherable_1.witherDefault(exports.Traversable, exports.Compactable);\nvar _wilt = \n/*#__PURE__*/\nWitherable_1.wiltDefault(exports.Traversable, exports.Compactable);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Witherable = {\n URI: exports.URI,\n map: _map,\n compact: exports.compact,\n separate: exports.separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n wither: _wither,\n wilt: _wilt\n};\n/**\n * Filter values inside a context.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import * as T from 'fp-ts/Task'\n *\n * const filterE = RA.filterE(T.ApplicativePar)\n * async function test() {\n * assert.deepStrictEqual(\n * await pipe(\n * [-1, 2, 3],\n * filterE((n) => T.of(n > 0))\n * )(),\n * [2, 3]\n * )\n * }\n * test()\n *\n * @since 2.11.0\n */\nexports.filterE = \n/*#__PURE__*/\nWitherable_1.filterE(exports.Witherable);\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.FromEither = {\n URI: exports.URI,\n fromEither: exports.fromEither\n};\n/**\n * @category combinators\n * @since 2.11.0\n */\nexports.fromEitherK = \n/*#__PURE__*/\nFromEither_1.fromEitherK(exports.FromEither);\n// -------------------------------------------------------------------------------------\n// unsafe\n// -------------------------------------------------------------------------------------\n/**\n * @category unsafe\n * @since 2.5.0\n */\nexports.unsafeInsertAt = RNEA.unsafeInsertAt;\n/**\n * @category unsafe\n * @since 2.5.0\n */\nvar unsafeUpdateAt = function (i, a, as) {\n return exports.isNonEmpty(as) ? RNEA.unsafeUpdateAt(i, a, as) : as;\n};\nexports.unsafeUpdateAt = unsafeUpdateAt;\n/**\n * @category unsafe\n * @since 2.5.0\n */\nvar unsafeDeleteAt = function (i, as) {\n var xs = as.slice();\n xs.splice(i, 1);\n return xs;\n};\nexports.unsafeDeleteAt = unsafeDeleteAt;\n// -------------------------------------------------------------------------------------\n// interop\n// -------------------------------------------------------------------------------------\n/**\n * @category interop\n * @since 2.5.0\n */\nvar toArray = function (as) { return as.slice(); };\nexports.toArray = toArray;\n/**\n * @category interop\n * @since 2.5.0\n */\nvar fromArray = function (as) { return (exports.isEmpty(as) ? exports.empty : as.slice()); };\nexports.fromArray = fromArray;\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * An empty array\n *\n * @since 2.5.0\n */\nexports.empty = RNEA.empty;\n/**\n * Check if a predicate holds true for every array member.\n *\n * @example\n * import { every } from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const isPositive = (n: number): boolean => n > 0\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], every(isPositive)), true)\n * assert.deepStrictEqual(pipe([1, 2, -3], every(isPositive)), false)\n *\n * @since 2.9.0\n */\nvar every = function (predicate) { return function (as) { return as.every(predicate); }; };\nexports.every = every;\n/**\n * Check if a predicate holds true for any array member.\n *\n * @example\n * import { some } from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const isPositive = (n: number): boolean => n > 0\n *\n * assert.deepStrictEqual(pipe([-1, -2, 3], some(isPositive)), true)\n * assert.deepStrictEqual(pipe([-1, -2, -3], some(isPositive)), false)\n *\n * @since 2.9.0\n */\nvar some = function (predicate) { return function (as) {\n return as.some(predicate);\n}; };\nexports.some = some;\n/**\n * Alias of [`some`](#some)\n *\n * @since 2.11.0\n */\nexports.exists = exports.some;\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.9.0\n */\nexports.Do = \n/*#__PURE__*/\nexports.of(_.emptyRecord);\n/**\n * @since 2.8.0\n */\nexports.bindTo = \n/*#__PURE__*/\nFunctor_1.bindTo(exports.Functor);\n/**\n * @since 2.8.0\n */\nexports.bind = \n/*#__PURE__*/\nChain_1.bind(exports.Chain);\n// -------------------------------------------------------------------------------------\n// pipeable sequence S\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.8.0\n */\nexports.apS = \n/*#__PURE__*/\nApply_1.apS(exports.Apply);\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n// tslint:disable: deprecation\n/**\n * Use `ReadonlyNonEmptyArray` module instead.\n *\n * @category constructors\n * @since 2.5.0\n * @deprecated\n */\nexports.range = RNEA.range;\n/**\n * Use [`prepend`](#prepend) instead.\n *\n * @category constructors\n * @since 2.5.0\n * @deprecated\n */\nexports.cons = RNEA.cons;\n/**\n * Use [`append`](#append) instead.\n *\n * @category constructors\n * @since 2.5.0\n * @deprecated\n */\nexports.snoc = RNEA.snoc;\n/**\n * Use [`prependAll`](#prependall) instead.\n *\n * @category combinators\n * @since 2.9.0\n * @deprecated\n */\nexports.prependToAll = exports.prependAll;\n/**\n * Use small, specific instances instead.\n *\n * @category instances\n * @since 2.5.0\n * @deprecated\n */\nexports.readonlyArray = {\n URI: exports.URI,\n compact: exports.compact,\n separate: exports.separate,\n map: _map,\n ap: _ap,\n of: exports.of,\n chain: _chain,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n mapWithIndex: _mapWithIndex,\n partitionMapWithIndex: _partitionMapWithIndex,\n partitionWithIndex: _partitionWithIndex,\n filterMapWithIndex: _filterMapWithIndex,\n filterWithIndex: _filterWithIndex,\n alt: _alt,\n zero: exports.zero,\n unfold: exports.unfold,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex,\n extend: _extend,\n wither: _wither,\n wilt: _wilt\n};\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lefts = exports.rights = exports.reverse = exports.modifyAt = exports.deleteAt = exports.updateAt = exports.insertAt = exports.copy = exports.findLastIndex = exports.findLastMap = exports.findLast = exports.findFirstMap = exports.findFirst = exports.findIndex = exports.dropLeftWhile = exports.dropRight = exports.dropLeft = exports.spanLeft = exports.takeLeftWhile = exports.takeRight = exports.takeLeft = exports.init = exports.tail = exports.last = exports.head = exports.lookup = exports.isOutOfBound = exports.size = exports.scanRight = exports.scanLeft = exports.chainWithIndex = exports.foldRight = exports.matchRight = exports.matchRightW = exports.foldLeft = exports.matchLeft = exports.matchLeftW = exports.match = exports.matchW = exports.fromEither = exports.fromOption = exports.fromPredicate = exports.replicate = exports.makeBy = exports.appendW = exports.append = exports.prependW = exports.prepend = exports.isNonEmpty = exports.isEmpty = void 0;\nexports.traverseWithIndex = exports.sequence = exports.traverse = exports.reduceRightWithIndex = exports.reduceRight = exports.reduceWithIndex = exports.reduce = exports.foldMapWithIndex = exports.foldMap = exports.duplicate = exports.extend = exports.filterWithIndex = exports.alt = exports.altW = exports.partitionMapWithIndex = exports.partitionMap = exports.partitionWithIndex = exports.partition = exports.filter = exports.separate = exports.compact = exports.filterMap = exports.filterMapWithIndex = exports.mapWithIndex = exports.flatten = exports.chain = exports.ap = exports.map = exports.zero = exports.of = exports.difference = exports.intersection = exports.union = exports.concat = exports.concatW = exports.comprehension = exports.fromOptionK = exports.chunksOf = exports.splitAt = exports.chop = exports.sortBy = exports.uniq = exports.elem = exports.rotate = exports.intersperse = exports.prependAll = exports.unzip = exports.zip = exports.zipWith = exports.sort = void 0;\nexports.some = exports.every = exports.unsafeDeleteAt = exports.unsafeUpdateAt = exports.unsafeInsertAt = exports.fromEitherK = exports.FromEither = exports.filterE = exports.ChainRecBreadthFirst = exports.chainRecBreadthFirst = exports.ChainRecDepthFirst = exports.chainRecDepthFirst = exports.Witherable = exports.TraversableWithIndex = exports.Traversable = exports.FoldableWithIndex = exports.Foldable = exports.FilterableWithIndex = exports.Filterable = exports.Compactable = exports.Extend = exports.Alternative = exports.guard = exports.Zero = exports.Alt = exports.Unfoldable = exports.Monad = exports.chainFirst = exports.Chain = exports.Applicative = exports.apSecond = exports.apFirst = exports.Apply = exports.FunctorWithIndex = exports.Pointed = exports.flap = exports.Functor = exports.getDifferenceMagma = exports.getIntersectionSemigroup = exports.getUnionMonoid = exports.getUnionSemigroup = exports.getOrd = exports.getEq = exports.getMonoid = exports.getSemigroup = exports.getShow = exports.URI = exports.unfold = exports.wilt = exports.wither = void 0;\nexports.array = exports.prependToAll = exports.snoc = exports.cons = exports.empty = exports.range = exports.apS = exports.bind = exports.bindTo = exports.Do = exports.exists = void 0;\nvar Apply_1 = require(\"./Apply\");\nvar Chain_1 = require(\"./Chain\");\nvar FromEither_1 = require(\"./FromEither\");\nvar function_1 = require(\"./function\");\nvar Functor_1 = require(\"./Functor\");\nvar _ = __importStar(require(\"./internal\"));\nvar NEA = __importStar(require(\"./NonEmptyArray\"));\nvar RA = __importStar(require(\"./ReadonlyArray\"));\nvar Separated_1 = require(\"./Separated\");\nvar Witherable_1 = require(\"./Witherable\");\nvar Zero_1 = require(\"./Zero\");\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * Test whether an array is empty\n *\n * @example\n * import { isEmpty } from 'fp-ts/Array'\n *\n * assert.strictEqual(isEmpty([]), true)\n * assert.strictEqual(isEmpty(['a']), false)\n *\n * @category refinements\n * @since 2.0.0\n */\nvar isEmpty = function (as) { return as.length === 0; };\nexports.isEmpty = isEmpty;\n/**\n * Test whether an array is non empty narrowing down the type to `NonEmptyArray`\n *\n * @example\n * import { isNonEmpty } from 'fp-ts/Array'\n *\n * assert.strictEqual(isNonEmpty([]), false)\n * assert.strictEqual(isNonEmpty(['a']), true)\n *\n * @category refinements\n * @since 2.0.0\n */\nexports.isNonEmpty = NEA.isNonEmpty;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Prepend an element to the front of a `Array`, creating a new `NonEmptyArray`.\n *\n * @example\n * import { prepend } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([2, 3, 4], prepend(1)), [1, 2, 3, 4])\n *\n * @category constructors\n * @since 2.10.0\n */\nexports.prepend = NEA.prepend;\n/**\n * Less strict version of [`prepend`](#prepend).\n *\n * @example\n * import { prependW } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([2, 3, 4], prependW(\"a\")), [\"a\", 2, 3, 4]);\n *\n * @category constructors\n * @since 2.11.0\n */\nexports.prependW = NEA.prependW;\n/**\n * Append an element to the end of a `Array`, creating a new `NonEmptyArray`.\n *\n * @example\n * import { append } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], append(4)), [1, 2, 3, 4])\n *\n * @category constructors\n * @since 2.10.0\n */\nexports.append = NEA.append;\n/**\n * Less strict version of [`append`](#append).\n *\n * @example\n * import { appendW } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], appendW(\"d\")), [1, 2, 3, \"d\"]);\n *\n * @category constructors\n * @since 2.11.0\n */\nexports.appendW = NEA.appendW;\n/**\n * Return a `Array` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { makeBy } from 'fp-ts/Array'\n *\n * const double = (i: number): number => i * 2\n * assert.deepStrictEqual(makeBy(5, double), [0, 2, 4, 6, 8])\n * assert.deepStrictEqual(makeBy(-3, double), [])\n * assert.deepStrictEqual(makeBy(4.32164, double), [0, 2, 4, 6])\n *\n * @category constructors\n * @since 2.0.0\n */\nvar makeBy = function (n, f) { return (n <= 0 ? [] : NEA.makeBy(f)(n)); };\nexports.makeBy = makeBy;\n/**\n * Create a `Array` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { replicate } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(replicate(3, 'a'), ['a', 'a', 'a'])\n * assert.deepStrictEqual(replicate(-3, 'a'), [])\n * assert.deepStrictEqual(replicate(2.985647, 'a'), ['a', 'a'])\n *\n * @category constructors\n * @since 2.0.0\n */\nvar replicate = function (n, a) { return exports.makeBy(n, function () { return a; }); };\nexports.replicate = replicate;\nfunction fromPredicate(predicate) {\n return function (a) { return (predicate(a) ? [a] : []); };\n}\nexports.fromPredicate = fromPredicate;\n// -------------------------------------------------------------------------------------\n// natural transformations\n// -------------------------------------------------------------------------------------\n/**\n * Create an array from an `Option`. The resulting array will contain the content of the\n * `Option` if it is `Some` and it will be empty if the `Option` is `None`.\n *\n * @example\n * import { fromOption } from 'fp-ts/Array'\n * import { option } from \"fp-ts\";\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(option.some(\"a\"), fromOption),[\"a\"])\n * assert.deepStrictEqual(pipe(option.none, fromOption),[])\n *\n * @category natural transformations\n * @since 2.11.0\n */\nvar fromOption = function (ma) { return (_.isNone(ma) ? [] : [ma.value]); };\nexports.fromOption = fromOption;\n/**\n * Create an array from an `Either`. The resulting array will contain the content of the\n * `Either` if it is `Right` and it will be empty if the `Either` is `Left`.\n *\n * @example\n * import { fromEither } from 'fp-ts/Array'\n * import { either } from \"fp-ts\";\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(either.right(\"r\"), fromEither), [\"r\"]);\n * assert.deepStrictEqual(pipe(either.left(\"l\"), fromEither), []);\n *\n * @category natural transformations\n * @since 2.11.0\n */\nvar fromEither = function (e) { return (_.isLeft(e) ? [] : [e.right]); };\nexports.fromEither = fromEither;\n// -------------------------------------------------------------------------------------\n// destructors\n// -------------------------------------------------------------------------------------\n/**\n * Less strict version of [`match`](#match). It will work when `onEmpty` and `onNonEmpty`\n * have different return types.\n *\n * @example\n * import { matchW } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const matcherW = matchW(\n * () => \"No elements\",\n * (as) => as.length\n * );\n * assert.deepStrictEqual(pipe([1, 2, 3, 4], matcherW), 4);\n * assert.deepStrictEqual(pipe([], matcherW), \"No elements\");\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchW = function (onEmpty, onNonEmpty) { return function (as) {\n return exports.isNonEmpty(as) ? onNonEmpty(as) : onEmpty();\n}; };\nexports.matchW = matchW;\n/**\n * Takes an array, if the array is empty it returns the result of `onEmpty`, otherwise\n * it passes the array to `onNonEmpty` and returns the result.\n *\n * @example\n * import { match } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const matcher = match(\n * () => \"No elements\",\n * (as) => `Found ${as.length} element(s)`\n * );\n * assert.deepStrictEqual(pipe([1, 2, 3, 4], matcher), \"Found 4 element(s)\");\n * assert.deepStrictEqual(pipe([], matcher), \"No elements\");\n *\n * @category destructors\n * @since 2.11.0\n */\nexports.match = exports.matchW;\n/**\n * Less strict version of [`matchLeft`](#matchleft). It will work when `onEmpty` and\n * `onNonEmpty` have different return types.\n *\n * @example\n * import { matchLeftW } from 'fp-ts/Array'\n *\n * const f = matchLeftW(\n * () => 0,\n * (head: string, tail: string[]) => `Found \"${head}\" followed by ${tail.length} elements`\n * );\n * assert.strictEqual(f([\"a\", \"b\", \"c\"]), 'Found \"a\" followed by 2 elements');\n * assert.strictEqual(f([]), 0);\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchLeftW = function (onEmpty, onNonEmpty) { return function (as) { return (exports.isNonEmpty(as) ? onNonEmpty(NEA.head(as), NEA.tail(as)) : onEmpty()); }; };\nexports.matchLeftW = matchLeftW;\n/**\n * Takes an array, if the array is empty it returns the result of `onEmpty`, otherwise\n * it passes the array to `onNonEmpty` broken into its first element and remaining elements.\n *\n * @example\n * import { matchLeft } from 'fp-ts/Array'\n *\n * const len: (as: Array) => number = matchLeft(() => 0, (_, tail) => 1 + len(tail))\n * assert.strictEqual(len([1, 2, 3]), 3)\n *\n * @category destructors\n * @since 2.10.0\n */\nexports.matchLeft = exports.matchLeftW;\n/**\n * Alias of [`matchLeft`](#matchleft).\n *\n * @category destructors\n * @since 2.0.0\n */\nexports.foldLeft = exports.matchLeft;\n/**\n * Less strict version of [`matchRight`](#matchright). It will work when `onEmpty` and\n * `onNonEmpty` have different return types.\n *\n * @example\n * import { matchRightW } from 'fp-ts/Array'\n *\n * const f = matchRightW(\n * () => 0,\n * (head: string[], tail: string) => `Found ${head.length} elements folllowed by \"${tail}\"`\n * );\n * assert.strictEqual(f([\"a\", \"b\", \"c\"]), 'Found 2 elements folllowed by \"c\"');\n * assert.strictEqual(f([]), 0);\n *\n * @category destructors\n * @since 2.11.0\n */\nvar matchRightW = function (onEmpty, onNonEmpty) { return function (as) { return (exports.isNonEmpty(as) ? onNonEmpty(NEA.init(as), NEA.last(as)) : onEmpty()); }; };\nexports.matchRightW = matchRightW;\n/**\n * Takes an array, if the array is empty it returns the result of `onEmpty`, otherwise\n * it passes the array to `onNonEmpty` broken into its initial elements and the last element.\n *\n * @example\n * import { matchRight } from 'fp-ts/Array'\n *\n * const len: (as: Array) => number = matchRight(\n * () => 0,\n * (head, _) => 1 + len(head)\n * );\n * assert.strictEqual(len([1, 2, 3]), 3);\n *\n * @category destructors\n * @since 2.10.0\n */\nexports.matchRight = exports.matchRightW;\n/**\n * Alias of [`matchRight`](#matchright).\n *\n * @category destructors\n * @since 2.0.0\n */\nexports.foldRight = exports.matchRight;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * Same as [`chain`](#chain), but passing also the index to the iterating function.\n *\n * @example\n * import { chainWithIndex, replicate } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (index: number, x: string) => replicate(2, `${x}${index}`);\n * assert.deepStrictEqual(pipe([\"a\", \"b\", \"c\"], chainWithIndex(f)), [\"a0\", \"a0\", \"b1\", \"b1\", \"c2\", \"c2\"]);\n *\n * @category combinators\n * @since 2.7.0\n */\nvar chainWithIndex = function (f) { return function (as) {\n var out = [];\n for (var i = 0; i < as.length; i++) {\n out.push.apply(out, f(i, as[i]));\n }\n return out;\n}; };\nexports.chainWithIndex = chainWithIndex;\n/**\n * Same as `reduce` but it carries over the intermediate steps\n *\n * @example\n * import { scanLeft } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(scanLeft(10, (b, a: number) => b - a)([1, 2, 3]), [10, 9, 7, 4])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar scanLeft = function (b, f) { return function (as) {\n var len = as.length;\n var out = new Array(len + 1);\n out[0] = b;\n for (var i = 0; i < len; i++) {\n out[i + 1] = f(out[i], as[i]);\n }\n return out;\n}; };\nexports.scanLeft = scanLeft;\n/**\n * Fold an array from the right, keeping all intermediate results instead of only the final result\n *\n * @example\n * import { scanRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(scanRight(10, (a: number, b) => b - a)([1, 2, 3]), [4, 5, 7, 10])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar scanRight = function (b, f) { return function (as) {\n var len = as.length;\n var out = new Array(len + 1);\n out[len] = b;\n for (var i = len - 1; i >= 0; i--) {\n out[i] = f(as[i], out[i + 1]);\n }\n return out;\n}; };\nexports.scanRight = scanRight;\n/**\n * Calculate the number of elements in a `Array`.\n *\n * @example\n * import { size } from 'fp-ts/Array'\n *\n * assert.strictEqual(size([\"a\",\"b\",\"c\"]),3)\n *\n * @since 2.10.0\n */\nvar size = function (as) { return as.length; };\nexports.size = size;\n/**\n * Test whether an array contains a particular index\n *\n * @example\n * import { isOutOfBound } from 'fp-ts/Array'\n *\n * assert.strictEqual(isOutOfBound(1,[\"a\",\"b\",\"c\"]),false)\n * assert.strictEqual(isOutOfBound(-1,[\"a\",\"b\",\"c\"]),true)\n * assert.strictEqual(isOutOfBound(3,[\"a\",\"b\",\"c\"]),true)\n *\n * @since 2.0.0\n */\nexports.isOutOfBound = NEA.isOutOfBound;\n// TODO: remove non-curried overloading in v3\n/**\n * This function provides a safe way to read a value at a particular index from an array.\n * It returns a `none` if the index is out of bounds, and a `some` of the element if the\n * index is valid.\n *\n * @example\n * import { lookup } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], lookup(1)), some(2))\n * assert.deepStrictEqual(pipe([1, 2, 3], lookup(3)), none)\n *\n * @since 2.0.0\n */\nexports.lookup = RA.lookup;\n/**\n * Get the first element in an array, or `None` if the array is empty\n *\n * @example\n * import { head } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(head([1, 2, 3]), some(1))\n * assert.deepStrictEqual(head([]), none)\n *\n * @category destructors\n * @since 2.0.0\n */\nexports.head = RA.head;\n/**\n * Get the last element in an array, or `None` if the array is empty\n *\n * @example\n * import { last } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(last([1, 2, 3]), some(3))\n * assert.deepStrictEqual(last([]), none)\n *\n * @category destructors\n * @since 2.0.0\n */\nexports.last = RA.last;\n/**\n * Get all but the first element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { tail } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(tail([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(tail([]), none)\n *\n * @category destructors\n * @since 2.0.0\n */\nvar tail = function (as) { return (exports.isNonEmpty(as) ? _.some(NEA.tail(as)) : _.none); };\nexports.tail = tail;\n/**\n * Get all but the last element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { init } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), some([1, 2]))\n * assert.deepStrictEqual(init([]), none)\n *\n * @category destructors\n * @since 2.0.0\n */\nvar init = function (as) { return (exports.isNonEmpty(as) ? _.some(NEA.init(as)) : _.none); };\nexports.init = init;\n/**\n * Keep only a max number of elements from the start of an `Array`, creating a new `Array`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { takeLeft } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(takeLeft(2)([1, 2, 3, 4, 5]), [1, 2]);\n * assert.deepStrictEqual(takeLeft(7)([1, 2, 3, 4, 5]), [1, 2, 3, 4, 5]);\n * assert.deepStrictEqual(takeLeft(0)([1, 2, 3, 4, 5]), []);\n * assert.deepStrictEqual(takeLeft(-1)([1, 2, 3, 4, 5]), [1, 2, 3, 4, 5]);\n *\n * @category combinators\n * @since 2.0.0\n */\nvar takeLeft = function (n) { return function (as) { return (exports.isOutOfBound(n, as) ? exports.copy(as) : as.slice(0, n)); }; };\nexports.takeLeft = takeLeft;\n/**\n * Keep only a max number of elements from the end of an `Array`, creating a new `Array`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { takeRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(takeRight(2)([1, 2, 3, 4, 5]), [4, 5]);\n * assert.deepStrictEqual(takeRight(7)([1, 2, 3, 4, 5]), [1, 2, 3, 4, 5]);\n * assert.deepStrictEqual(takeRight(0)([1, 2, 3, 4, 5]), []);\n * assert.deepStrictEqual(takeRight(-1)([1, 2, 3, 4, 5]), [1, 2, 3, 4, 5]);\n *\n * @category combinators\n * @since 2.0.0\n */\nvar takeRight = function (n) { return function (as) {\n return exports.isOutOfBound(n, as) ? exports.copy(as) : n === 0 ? [] : as.slice(-n);\n}; };\nexports.takeRight = takeRight;\nfunction takeLeftWhile(predicate) {\n return function (as) {\n var out = [];\n for (var _i = 0, as_1 = as; _i < as_1.length; _i++) {\n var a = as_1[_i];\n if (!predicate(a)) {\n break;\n }\n out.push(a);\n }\n return out;\n };\n}\nexports.takeLeftWhile = takeLeftWhile;\nvar spanLeftIndex = function (as, predicate) {\n var l = as.length;\n var i = 0;\n for (; i < l; i++) {\n if (!predicate(as[i])) {\n break;\n }\n }\n return i;\n};\nfunction spanLeft(predicate) {\n return function (as) {\n var _a = exports.splitAt(spanLeftIndex(as, predicate))(as), init = _a[0], rest = _a[1];\n return { init: init, rest: rest };\n };\n}\nexports.spanLeft = spanLeft;\n/**\n * Creates a new `Array` which is a copy of the input dropping a max number of elements from the start.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { dropLeft } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(dropLeft(2)([1, 2, 3]), [3]);\n * assert.deepStrictEqual(dropLeft(5)([1, 2, 3]), []);\n * assert.deepStrictEqual(dropLeft(0)([1, 2, 3]), [1, 2, 3]);\n * assert.deepStrictEqual(dropLeft(-2)([1, 2, 3]), [1, 2, 3]);\n *\n * @category combinators\n * @since 2.0.0\n */\nvar dropLeft = function (n) { return function (as) {\n return n <= 0 || exports.isEmpty(as) ? exports.copy(as) : n >= as.length ? [] : as.slice(n, as.length);\n}; };\nexports.dropLeft = dropLeft;\n/**\n * Creates a new `Array` which is a copy of the input dropping a max number of elements from the end.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { dropRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(dropRight(2)([1, 2, 3]), [1]);\n * assert.deepStrictEqual(dropRight(5)([1, 2, 3]), []);\n * assert.deepStrictEqual(dropRight(0)([1, 2, 3]), [1, 2, 3]);\n * assert.deepStrictEqual(dropRight(-2)([1, 2, 3]), [1, 2, 3]);\n *\n * @category combinators\n * @since 2.0.0\n */\nvar dropRight = function (n) { return function (as) {\n return n <= 0 || exports.isEmpty(as) ? exports.copy(as) : n >= as.length ? [] : as.slice(0, as.length - n);\n}; };\nexports.dropRight = dropRight;\nfunction dropLeftWhile(predicate) {\n return function (as) { return as.slice(spanLeftIndex(as, predicate)); };\n}\nexports.dropLeftWhile = dropLeftWhile;\n/**\n * `findIndex` returns an `Option` containing the first index for which a predicate holds.\n * It returns `None` if no element satisfies the predicate.\n * Similar to [`findFirst`](#findFirst) but returning the index instead of the element.\n *\n * @example\n * import { findIndex } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([1, 2, 3]), some(1))\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([]), none)\n *\n * @since 2.0.0\n */\nexports.findIndex = RA.findIndex;\nfunction findFirst(predicate) {\n return RA.findFirst(predicate);\n}\nexports.findFirst = findFirst;\n/**\n * Given a selector function which takes an element and returns an option,\n * this function applies the selector to each element of the array and\n * returns the first `Some` result. Otherwise it returns `None`.\n *\n * @example\n * import { findFirstMap } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n * readonly name: string;\n * readonly age: number;\n * }\n *\n * const persons: Array = [\n * { name: \"John\", age: 16 },\n * { name: \"Mary\", age: 45 },\n * { name: \"Joey\", age: 28 },\n * ];\n *\n * const nameOfPersonAbove18 = (p: Person) => (p.age <= 18 ? none : some(p.name));\n * const nameOfPersonAbove70 = (p: Person) => (p.age <= 70 ? none : some(p.name));\n * assert.deepStrictEqual(findFirstMap(nameOfPersonAbove18)(persons), some(\"Mary\"));\n * assert.deepStrictEqual(findFirstMap(nameOfPersonAbove70)(persons), none);\n *\n * @category destructors\n * @since 2.0.0\n */\nexports.findFirstMap = RA.findFirstMap;\nfunction findLast(predicate) {\n return RA.findLast(predicate);\n}\nexports.findLast = findLast;\n/**\n * Given a selector function which takes an element and returns an option,\n * this function applies the selector to each element of the array starting from the\n * end and returns the last `Some` result. Otherwise it returns `None`.\n *\n * @example\n * import { findLastMap } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n * readonly name: string;\n * readonly age: number;\n * }\n *\n * const persons: Array = [\n * { name: \"John\", age: 16 },\n * { name: \"Mary\", age: 45 },\n * { name: \"Joey\", age: 28 },\n * ];\n *\n * const nameOfPersonAbove18 = (p: Person) => (p.age <= 18 ? none : some(p.name));\n * const nameOfPersonAbove70 = (p: Person) => (p.age <= 70 ? none : some(p.name));\n * assert.deepStrictEqual(findLastMap(nameOfPersonAbove18)(persons), some(\"Joey\"));\n * assert.deepStrictEqual(findLastMap(nameOfPersonAbove70)(persons), none);\n *\n * @category destructors\n * @since 2.0.0\n */\nexports.findLastMap = RA.findLastMap;\n/**\n * Returns the index of the last element of the list which matches the predicate.\n * It returns an `Option` containing the index or `None` if not found.\n *\n * @example\n * import { findLastIndex } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface X {\n * readonly a: number\n * readonly b: number\n * }\n * const xs: Array = [{ a: 1, b: 0 }, { a: 1, b: 1 }]\n * assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 1)(xs), some(1))\n * assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 4)(xs), none)\n *\n * @since 2.0.0\n */\nexports.findLastIndex = RA.findLastIndex;\n/**\n * This function takes an array and makes a new array containing the same elements.\n *\n * @category combinators\n * @since 2.0.0\n */\nvar copy = function (as) { return as.slice(); };\nexports.copy = copy;\n/**\n * Insert an element at the specified index, creating a new array,\n * or returning `None` if the index is out of bounds.\n *\n * @example\n * import { insertAt } from 'fp-ts/Array'\n * import { some } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(insertAt(2, 5)([1, 2, 3, 4]), some([1, 2, 5, 3, 4]))\n *\n * @since 2.0.0\n */\nvar insertAt = function (i, a) { return function (as) {\n return i < 0 || i > as.length ? _.none : _.some(exports.unsafeInsertAt(i, a, as));\n}; };\nexports.insertAt = insertAt;\n/**\n * Change the element at the specified index, creating a new array,\n * or returning `None` if the index is out of bounds.\n *\n * @example\n * import { updateAt } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(updateAt(1, 1)([1, 2, 3]), some([1, 1, 3]))\n * assert.deepStrictEqual(updateAt(1, 1)([]), none)\n *\n * @since 2.0.0\n */\nvar updateAt = function (i, a) { return exports.modifyAt(i, function () { return a; }); };\nexports.updateAt = updateAt;\n/**\n * Delete the element at the specified index, creating a new array, or returning `None` if the index is out of bounds.\n *\n * @example\n * import { deleteAt } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(deleteAt(0)([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(deleteAt(1)([]), none)\n *\n * @since 2.0.0\n */\nvar deleteAt = function (i) { return function (as) {\n return exports.isOutOfBound(i, as) ? _.none : _.some(exports.unsafeDeleteAt(i, as));\n}; };\nexports.deleteAt = deleteAt;\n/**\n * Apply a function to the element at the specified index, creating a new array, or returning `None` if the index is out\n * of bounds.\n *\n * @example\n * import { modifyAt } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * const double = (x: number): number => x * 2\n * assert.deepStrictEqual(modifyAt(1, double)([1, 2, 3]), some([1, 4, 3]))\n * assert.deepStrictEqual(modifyAt(1, double)([]), none)\n *\n * @since 2.0.0\n */\nvar modifyAt = function (i, f) { return function (as) {\n return exports.isOutOfBound(i, as) ? _.none : _.some(exports.unsafeUpdateAt(i, f(as[i]), as));\n}; };\nexports.modifyAt = modifyAt;\n/**\n * Reverse an array, creating a new array\n *\n * @example\n * import { reverse } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(reverse([1, 2, 3]), [3, 2, 1])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar reverse = function (as) { return (exports.isEmpty(as) ? [] : as.slice().reverse()); };\nexports.reverse = reverse;\n/**\n * Takes an `Array` of `Either` and produces a new `Array` containing\n * the values of all the `Right` elements in the same order.\n *\n * @example\n * import { rights } from 'fp-ts/Array'\n * import { right, left } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(rights([right(1), left('foo'), right(2)]), [1, 2])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar rights = function (as) {\n var r = [];\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n if (a._tag === 'Right') {\n r.push(a.right);\n }\n }\n return r;\n};\nexports.rights = rights;\n/**\n * Takes an `Array` of `Either` and produces a new `Array` containing\n * the values of all the `Left` elements in the same order.\n *\n * @example\n * import { lefts } from 'fp-ts/Array'\n * import { left, right } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(lefts([right(1), left('foo'), right(2)]), ['foo'])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar lefts = function (as) {\n var r = [];\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n if (a._tag === 'Left') {\n r.push(a.left);\n }\n }\n return r;\n};\nexports.lefts = lefts;\n/**\n * Sort the elements of an array in increasing order, creating a new array\n *\n * @example\n * import { sort } from 'fp-ts/Array'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(sort(N.Ord)([3, 2, 1]), [1, 2, 3])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar sort = function (O) { return function (as) {\n return as.length <= 1 ? exports.copy(as) : as.slice().sort(O.compare);\n}; };\nexports.sort = sort;\n/**\n * Apply a function to pairs of elements at the same index in two arrays, collecting the results in a new array. If one\n * input array is short, excess elements of the longer array are discarded.\n *\n * @example\n * import { zipWith } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(zipWith([1, 2, 3], ['a', 'b', 'c', 'd'], (n, s) => s + n), ['a1', 'b2', 'c3'])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar zipWith = function (fa, fb, f) {\n var fc = [];\n var len = Math.min(fa.length, fb.length);\n for (var i = 0; i < len; i++) {\n fc[i] = f(fa[i], fb[i]);\n }\n return fc;\n};\nexports.zipWith = zipWith;\nfunction zip(as, bs) {\n if (bs === undefined) {\n return function (bs) { return zip(bs, as); };\n }\n return exports.zipWith(as, bs, function (a, b) { return [a, b]; });\n}\nexports.zip = zip;\n/**\n * The function is reverse of `zip`. Takes an array of pairs and return two corresponding arrays\n *\n * @example\n * import { unzip } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(unzip([[1, 'a'], [2, 'b'], [3, 'c']]), [[1, 2, 3], ['a', 'b', 'c']])\n *\n * @since 2.0.0\n */\nvar unzip = function (as) {\n var fa = [];\n var fb = [];\n for (var i = 0; i < as.length; i++) {\n fa[i] = as[i][0];\n fb[i] = as[i][1];\n }\n return [fa, fb];\n};\nexports.unzip = unzip;\n/**\n * Creates a new `Array`, prepending an element to every member of the input `Array`.\n *\n * @example\n * import { prependAll } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.10.0\n */\nvar prependAll = function (middle) {\n var f = NEA.prependAll(middle);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : []); };\n};\nexports.prependAll = prependAll;\n/**\n * Creates a new `Array` placing an element in between members of the input `Array`.\n *\n * @example\n * import { intersperse } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\nvar intersperse = function (middle) {\n var f = NEA.intersperse(middle);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : exports.copy(as)); };\n};\nexports.intersperse = intersperse;\n/**\n * Creates a new `Array` rotating the input `Array` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar rotate = function (n) {\n var f = NEA.rotate(n);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : exports.copy(as)); };\n};\nexports.rotate = rotate;\n// TODO: remove non-curried overloading in v3\n/**\n * Test if a value is a member of an `Array`. Takes a `Eq` as a single\n * argument which returns the function to use to search for a value of type `A` in\n * an `Array`.\n *\n * @example\n * import { elem } from 'fp-ts/Array'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(pipe([1, 2, 3], elem(N.Eq)(2)), true)\n * assert.strictEqual(pipe([1, 2, 3], elem(N.Eq)(0)), false)\n *\n * @since 2.0.0\n */\nexports.elem = RA.elem;\n/**\n * Creates a new `Array` removing duplicate elements, keeping the first occurrence of an element,\n * based on a `Eq`.\n *\n * @example\n * import { uniq } from 'fp-ts/Array'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar uniq = function (E) {\n var f = NEA.uniq(E);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : exports.copy(as)); };\n};\nexports.uniq = uniq;\n/**\n * Sort the elements of an array in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import { sortBy } from 'fp-ts/Array'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n * readonly name: string\n * readonly age: number\n * }\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = sortBy([byName, byAge])\n *\n * const persons = [{ name: 'a', age: 1 }, { name: 'b', age: 3 }, { name: 'c', age: 2 }, { name: 'b', age: 2 }]\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 2 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 }\n * ])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar sortBy = function (ords) {\n var f = NEA.sortBy(ords);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : exports.copy(as)); };\n};\nexports.sortBy = sortBy;\n/**\n * A useful recursion pattern for processing an array to produce a new array, often used for \"chopping\" up the input\n * array. Typically chop is called with some function that will consume an initial prefix of the array and produce a\n * value and the rest of the array.\n *\n * @example\n * import { Eq } from 'fp-ts/Eq'\n * import * as A from 'fp-ts/Array'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * const group = (S: Eq): ((as: Array) => Array>) => {\n * return A.chop(as => {\n * const { init, rest } = pipe(as, A.spanLeft((a: A) => S.equals(a, as[0])))\n * return [init, rest]\n * })\n * }\n * assert.deepStrictEqual(group(N.Eq)([1, 1, 2, 3, 3, 4]), [[1, 1], [2], [3, 3], [4]])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar chop = function (f) {\n var g = NEA.chop(f);\n return function (as) { return (exports.isNonEmpty(as) ? g(as) : []); };\n};\nexports.chop = chop;\n/**\n * Splits an `Array` into two pieces, the first piece has max `n` elements.\n *\n * @example\n * import { splitAt } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(splitAt(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4, 5]])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar splitAt = function (n) { return function (as) {\n return n >= 1 && exports.isNonEmpty(as) ? NEA.splitAt(n)(as) : exports.isEmpty(as) ? [exports.copy(as), []] : [[], exports.copy(as)];\n}; };\nexports.splitAt = splitAt;\n/**\n * Splits an array into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of\n * the array. Note that `chunksOf(n)([])` is `[]`, not `[[]]`. This is intentional, and is consistent with a recursive\n * definition of `chunksOf`; it satisfies the property that\n *\n * ```ts\n * chunksOf(n)(xs).concat(chunksOf(n)(ys)) == chunksOf(n)(xs.concat(ys)))\n * ```\n *\n * whenever `n` evenly divides the length of `xs`.\n *\n * @example\n * import { chunksOf } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(chunksOf(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4], [5]])\n *\n * @category combinators\n * @since 2.0.0\n */\nvar chunksOf = function (n) {\n var f = NEA.chunksOf(n);\n return function (as) { return (exports.isNonEmpty(as) ? f(as) : []); };\n};\nexports.chunksOf = chunksOf;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar fromOptionK = function (f) { return function () {\n var a = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n return exports.fromOption(f.apply(void 0, a));\n}; };\nexports.fromOptionK = fromOptionK;\nfunction comprehension(input, f, g) {\n if (g === void 0) { g = function () { return true; }; }\n var go = function (scope, input) {\n return exports.isNonEmpty(input)\n ? function_1.pipe(NEA.head(input), exports.chain(function (x) { return go(function_1.pipe(scope, exports.append(x)), NEA.tail(input)); }))\n : g.apply(void 0, scope) ? [f.apply(void 0, scope)]\n : [];\n };\n return go([], input);\n}\nexports.comprehension = comprehension;\n/**\n * @category combinators\n * @since 2.11.0\n */\nvar concatW = function (second) { return function (first) {\n return exports.isEmpty(first) ? exports.copy(second) : exports.isEmpty(second) ? exports.copy(first) : first.concat(second);\n}; };\nexports.concatW = concatW;\n/**\n * @category combinators\n * @since 2.11.0\n */\nexports.concat = exports.concatW;\nfunction union(E) {\n var unionE = NEA.union(E);\n return function (first, second) {\n if (second === undefined) {\n var unionE_1 = union(E);\n return function (second) { return unionE_1(second, first); };\n }\n return exports.isNonEmpty(first) && exports.isNonEmpty(second)\n ? unionE(second)(first)\n : exports.isNonEmpty(first)\n ? exports.copy(first)\n : exports.copy(second);\n };\n}\nexports.union = union;\nfunction intersection(E) {\n var elemE = exports.elem(E);\n return function (xs, ys) {\n if (ys === undefined) {\n var intersectionE_1 = intersection(E);\n return function (ys) { return intersectionE_1(ys, xs); };\n }\n return xs.filter(function (a) { return elemE(a, ys); });\n };\n}\nexports.intersection = intersection;\nfunction difference(E) {\n var elemE = exports.elem(E);\n return function (xs, ys) {\n if (ys === undefined) {\n var differenceE_1 = difference(E);\n return function (ys) { return differenceE_1(ys, xs); };\n }\n return xs.filter(function (a) { return !elemE(a, ys); });\n };\n}\nexports.difference = difference;\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\nvar _map = function (fa, f) { return function_1.pipe(fa, exports.map(f)); };\n/* istanbul ignore next */\nvar _mapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.mapWithIndex(f)); };\nvar _ap = function (fab, fa) { return function_1.pipe(fab, exports.ap(fa)); };\nvar _chain = function (ma, f) { return function_1.pipe(ma, exports.chain(f)); };\n/* istanbul ignore next */\nvar _filter = function (fa, predicate) { return function_1.pipe(fa, exports.filter(predicate)); };\n/* istanbul ignore next */\nvar _filterMap = function (fa, f) { return function_1.pipe(fa, exports.filterMap(f)); };\n/* istanbul ignore next */\nvar _partition = function (fa, predicate) {\n return function_1.pipe(fa, exports.partition(predicate));\n};\n/* istanbul ignore next */\nvar _partitionMap = function (fa, f) { return function_1.pipe(fa, exports.partitionMap(f)); };\n/* istanbul ignore next */\nvar _partitionWithIndex = function (fa, predicateWithIndex) { return function_1.pipe(fa, exports.partitionWithIndex(predicateWithIndex)); };\n/* istanbul ignore next */\nvar _partitionMapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.partitionMapWithIndex(f)); };\n/* istanbul ignore next */\nvar _alt = function (fa, that) { return function_1.pipe(fa, exports.alt(that)); };\nvar _reduce = function (fa, b, f) { return function_1.pipe(fa, exports.reduce(b, f)); };\n/* istanbul ignore next */\nvar _foldMap = function (M) {\n var foldMapM = exports.foldMap(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRight = function (fa, b, f) { return function_1.pipe(fa, exports.reduceRight(b, f)); };\n/* istanbul ignore next */\nvar _reduceWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _foldMapWithIndex = function (M) {\n var foldMapWithIndexM = exports.foldMapWithIndex(M);\n return function (fa, f) { return function_1.pipe(fa, foldMapWithIndexM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRightWithIndex = function (fa, b, f) {\n return function_1.pipe(fa, exports.reduceRightWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _filterMapWithIndex = function (fa, f) { return function_1.pipe(fa, exports.filterMapWithIndex(f)); };\n/* istanbul ignore next */\nvar _filterWithIndex = function (fa, predicateWithIndex) { return function_1.pipe(fa, exports.filterWithIndex(predicateWithIndex)); };\n/* istanbul ignore next */\nvar _extend = function (fa, f) { return function_1.pipe(fa, exports.extend(f)); };\n/* istanbul ignore next */\nvar _traverse = function (F) {\n var traverseF = exports.traverse(F);\n return function (ta, f) { return function_1.pipe(ta, traverseF(f)); };\n};\n/* istanbul ignore next */\nvar _traverseWithIndex = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (ta, f) { return function_1.pipe(ta, traverseWithIndexF(f)); };\n};\nvar _chainRecDepthFirst = RA._chainRecDepthFirst;\nvar _chainRecBreadthFirst = RA._chainRecBreadthFirst;\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * Given an element of the base type, `of` builds an `Array` containing just that\n * element of the base type (this is useful for building a `Monad`).\n *\n * @example\n * import { of } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(of(\"a\"), [\"a\"]);\n *\n * @category Pointed\n * @since 2.0.0\n */\nexports.of = NEA.of;\n/**\n * Makes an empty `Array`, useful for building a [`Monoid`](#Monoid)\n *\n * @category Zero\n * @since 2.7.0\n */\nvar zero = function () { return []; };\nexports.zero = zero;\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: Array) => Array`.\n * In practice it applies the base function to each element of the array and collects the\n * results in a new array.\n *\n * @example\n * import { map } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (n: number) => n * 2;\n * assert.deepStrictEqual(pipe([1, 2, 3], map(f)), [2, 4, 6]);\n *\n * @category Functor\n * @since 2.0.0\n */\nvar map = function (f) { return function (fa) { return fa.map(function (a) { return f(a); }); }; };\nexports.map = map;\n/**\n * Apply a function to an argument under a type constructor.\n *\n * It can be used to extend the concept of [`map`](#map) to a function that\n * takes more than one parameter as described\n * read [here](https://dev.to/gcanti/getting-started-with-fp-ts-applicative-1kb3)\n *\n * @example\n * import { ap, map, of } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * // a curried function with 3 input parameteres\n * const f = (s1: string) => (n: number) => (s2: string) => s1 + n + s2;\n *\n * // let's use `ap` to iterate `f` over an array for each input parameter\n * assert.deepStrictEqual(pipe([\"a\", \"b\"], map(f), ap([1, 2]), ap([\"\uD83D\uDE00\", \"\uD83D\uDE2B\", \"\uD83D\uDE0E\"])), [\n * \"a1\uD83D\uDE00\", \"a1\uD83D\uDE2B\", \"a1\uD83D\uDE0E\",\n * \"a2\uD83D\uDE00\", \"a2\uD83D\uDE2B\", \"a2\uD83D\uDE0E\",\n * \"b1\uD83D\uDE00\", \"b1\uD83D\uDE2B\", \"b1\uD83D\uDE0E\",\n * \"b2\uD83D\uDE00\", \"b2\uD83D\uDE2B\", \"b2\uD83D\uDE0E\",\n * ]);\n *\n * // given Array implements the Applicative interface with the `of` method,\n * // we can write exactly the same thing in a more symmetric way\n * // using `of` on `f` and `ap` on each array in input\n * assert.deepStrictEqual(\n * pipe(of(f), ap([\"a\", \"b\"]), ap([1, 2]), ap([\"\uD83D\uDE00\", \"\uD83D\uDE2B\", \"\uD83D\uDE0E\"])),\n * pipe([\"a\", \"b\"], map(f), ap([1, 2]), ap([\"\uD83D\uDE00\", \"\uD83D\uDE2B\", \"\uD83D\uDE0E\"]))\n * );\n *\n * @category Apply\n * @since 2.0.0\n */\nvar ap = function (fa) { return exports.chain(function (f) { return function_1.pipe(fa, exports.map(f)); }); };\nexports.ap = ap;\n/**\n * Composes computations in sequence, using the return value of one computation to\n * determine the next computation.\n *\n * In other words it takes a function `f` that produces an array from a single element of\n * the base type `A` and returns a new function which applies `f` to each element of the\n * input array (like [`map`](#map)) and, instead of returning an array of arrays, concatenates the\n * results into a single array (like [`flatten`](#flatten)).\n *\n * This is the `chain` component of the array `Monad`.\n *\n * @example\n * import { chain, map, replicate } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (n: number) => replicate(n, `${n}`);\n * assert.deepStrictEqual(pipe([1, 2, 3], map(f)), [[\"1\"], [\"2\", \"2\"], [\"3\", \"3\", \"3\"]]);\n * assert.deepStrictEqual(pipe([1, 2, 3], chain(f)), [\"1\", \"2\", \"2\", \"3\", \"3\", \"3\"]);\n *\n * @category Monad\n * @since 2.0.0\n */\nvar chain = function (f) { return function (ma) {\n return function_1.pipe(ma, exports.chainWithIndex(function (_, a) { return f(a); }));\n}; };\nexports.chain = chain;\n/**\n * Takes an array of arrays of `A` and flattens them into an array of `A`\n * by concatenating the elements of each array in order.\n *\n * Derivable from [`chain`](#chain).\n *\n * @example\n * import { flatten } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(flatten([[\"a\"], [\"b\", \"c\"], [\"d\", \"e\", \"f\"]]), [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"]);\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.flatten = \n/*#__PURE__*/\nexports.chain(function_1.identity);\n/**\n * Same as [`map`](#map), but the iterating function takes both the index and the value\n * of the element.\n *\n * @example\n * import { mapWithIndex } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (i: number, s: string) => `${s} - ${i}`;\n * assert.deepStrictEqual(pipe([\"a\", \"b\", \"c\"], mapWithIndex(f)), [\"a - 0\", \"b - 1\", \"c - 2\"]);\n *\n * @category FunctorWithIndex\n * @since 2.0.0\n */\nvar mapWithIndex = function (f) { return function (fa) {\n return fa.map(function (a, i) { return f(i, a); });\n}; };\nexports.mapWithIndex = mapWithIndex;\n/**\n * Maps an array with an iterating function that takes the index and the value of\n * each element and returns an `Option`. It keeps only the `Some` values discarding\n * the `None`s.\n *\n * Same as [`filterMap`](#filterMap), but with an iterating function which takes also\n * the index as input.\n *\n * @example\n * import { filterMapWithIndex } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n * import { option } from \"fp-ts\";\n *\n * const f = (i: number, s: string) => (i % 2 === 1 ? option.some(s.toUpperCase()) : option.none);\n * assert.deepStrictEqual(pipe([\"a\", \"no\", \"neither\", \"b\"], filterMapWithIndex(f)), [\"NO\", \"B\"]);\n *\n * @category FilterableWithIndex\n * @since 2.0.0\n */\nvar filterMapWithIndex = function (f) { return function (fa) {\n var out = [];\n for (var i = 0; i < fa.length; i++) {\n var optionB = f(i, fa[i]);\n if (_.isSome(optionB)) {\n out.push(optionB.value);\n }\n }\n return out;\n}; };\nexports.filterMapWithIndex = filterMapWithIndex;\n/**\n * Maps an array with an iterating function that returns an `Option`\n * and it keeps only the `Some` values discarding the `None`s.\n *\n * @example\n * import { filterMap } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n * import { option } from \"fp-ts\";\n *\n * const f = (s: string) => s.length === 1 ? option.some(s.toUpperCase()) : option.none;\n * assert.deepStrictEqual(pipe([\"a\", \"no\", \"neither\", \"b\"], filterMap(f)), [\"A\", \"B\"]);\n *\n * @category Filterable\n * @since 2.0.0\n */\nvar filterMap = function (f) {\n return exports.filterMapWithIndex(function (_, a) { return f(a); });\n};\nexports.filterMap = filterMap;\n/**\n * Compact an array of `Option`s discarding the `None` values and\n * keeping the `Some` values. It returns a new array containing the values of\n * the `Some` options.\n *\n * @example\n * import { compact } from 'fp-ts/Array'\n * import { option } from \"fp-ts\";\n *\n * assert.deepStrictEqual(compact([option.some(\"a\"), option.none, option.some(\"b\")]), [\"a\", \"b\"]);\n *\n * @category Compactable\n * @since 2.0.0\n */\nexports.compact = \n/*#__PURE__*/\nexports.filterMap(function_1.identity);\n/**\n * Separate an array of `Either`s into `Left`s and `Right`s, creating two new arrays:\n * one containing all the left values and one containing all the right values.\n *\n * @example\n * import { separate } from 'fp-ts/Array'\n * import { either } from \"fp-ts\";\n *\n * assert.deepStrictEqual(separate([either.right(\"r1\"), either.left(\"l1\"), either.right(\"r2\")]), {\n * left: [\"l1\"],\n * right: [\"r1\", \"r2\"],\n * });\n *\n * @category Compactable\n * @since 2.0.0\n */\nvar separate = function (fa) {\n var left = [];\n var right = [];\n for (var _i = 0, fa_1 = fa; _i < fa_1.length; _i++) {\n var e = fa_1[_i];\n if (e._tag === 'Left') {\n left.push(e.left);\n }\n else {\n right.push(e.right);\n }\n }\n return Separated_1.separated(left, right);\n};\nexports.separate = separate;\n/**\n * Given an iterating function that is a `Predicate` or a `Refinement`,\n * `filter` creates a new `Array` containing the elements of the original\n * `Array` for which the iterating function is `true`.\n *\n * @example\n * import { filter } from 'fp-ts/Array'\n * import { isString } from \"fp-ts/lib/string\";\n *\n * assert.deepStrictEqual(filter(isString)([\"a\", 1, {}, \"b\", 5]), [\"a\", \"b\"]);\n * assert.deepStrictEqual(filter((x:number) => x > 0)([-3, 1, -2, 5]), [1, 5]);\n *\n * @category Filterable\n * @since 2.0.0\n */\nvar filter = function (predicate) { return function (as) { return as.filter(predicate); }; };\nexports.filter = filter;\n/**\n * Given an iterating function that is a `Predicate` or a `Refinement`,\n * `partition` creates two new `Array`s: `right` containing the elements of the original\n * `Array` for which the iterating function is `true`, `left` containing the elements\n * for which it is false.\n *\n * @example\n * import { partition } from 'fp-ts/Array'\n * import { isString } from \"fp-ts/lib/string\";\n *\n * assert.deepStrictEqual(partition(isString)([\"a\", 1, {}, \"b\", 5]), { left: [1, {}, 5], right: [\"a\", \"b\"] });\n * assert.deepStrictEqual(partition((x: number) => x > 0)([-3, 1, -2, 5]), { left: [-3, -2], right: [1, 5] });\n *\n * @category Filterable\n * @since 2.0.0\n */\nvar partition = function (predicate) {\n return exports.partitionWithIndex(function (_, a) { return predicate(a); });\n};\nexports.partition = partition;\n/**\n * Same as [`partition`](#partition), but passing also the index to the iterating function.\n *\n * @example\n * import { partitionWithIndex } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(partitionWithIndex((index, x: number) => index < 3 && x > 0)([-2, 5, 6, 7]), {\n * left: [-2, 7],\n * right: [5, 6],\n * });\n *\n * @category FilterableWithIndex\n * @since 2.0.0\n */\nvar partitionWithIndex = function (predicateWithIndex) { return function (as) {\n var left = [];\n var right = [];\n for (var i = 0; i < as.length; i++) {\n var b = as[i];\n if (predicateWithIndex(i, b)) {\n right.push(b);\n }\n else {\n left.push(b);\n }\n }\n return Separated_1.separated(left, right);\n}; };\nexports.partitionWithIndex = partitionWithIndex;\n/**\n * Given an iterating function that returns an `Either`,\n * `partitionMap` applies the iterating function to each element and it creates two `Array`s:\n * `right` containing the values of `Right` results, `left` containing the values of `Left` results.\n *\n * @example\n * import { partitionMap } from 'fp-ts/Array'\n * import { Either, left, right } from \"fp-ts/lib/Either\";\n *\n * const upperIfString = (x: B): Either =>\n * typeof x === \"string\" ? right(x.toUpperCase()) : left(x);\n * assert.deepStrictEqual(partitionMap(upperIfString)([-2, \"hello\", 6, 7, \"world\"]), {\n * left: [-2, 6, 7],\n * right: [ 'HELLO', 'WORLD' ],\n * });\n *\n * @category Filterable\n * @since 2.0.0\n */\nvar partitionMap = function (f) { return exports.partitionMapWithIndex(function (_, a) { return f(a); }); };\nexports.partitionMap = partitionMap;\n/**\n * Same as [`partitionMap`](#partitionMap), but passing also the index to the iterating function.\n *\n * @example\n * import { partitionMapWithIndex } from 'fp-ts/Array'\n * import { Either, left, right } from \"fp-ts/lib/Either\";\n *\n * const upperIfStringBefore3 = (index: number, x: B): Either =>\n * index < 3 && typeof x === \"string\" ? right(x.toUpperCase()) : left(x);\n * assert.deepStrictEqual(partitionMapWithIndex(upperIfStringBefore3)([-2, \"hello\", 6, 7, \"world\"]), {\n * left: [-2, 6, 7, \"world\"],\n * right: [\"HELLO\"],\n * });\n *\n * @category FilterableWithIndex\n * @since 2.0.0\n */\nvar partitionMapWithIndex = function (f) { return function (fa) {\n var left = [];\n var right = [];\n for (var i = 0; i < fa.length; i++) {\n var e = f(i, fa[i]);\n if (e._tag === 'Left') {\n left.push(e.left);\n }\n else {\n right.push(e.right);\n }\n }\n return Separated_1.separated(left, right);\n}; };\nexports.partitionMapWithIndex = partitionMapWithIndex;\n/**\n * Less strict version of [`alt`](#alt), it can concatenate `Array`s of different base types.\n *\n * @example\n * import { altW } from 'fp-ts/Array';\n *\n * assert.deepStrictEqual(altW(() => [2, 3, 4])([\"a\"]), [\"a\", 2, 3, 4]);\n *\n * @category Alt\n * @since 2.9.0\n */\nvar altW = function (that) { return function (fa) { return fa.concat(that()); }; };\nexports.altW = altW;\n/**\n * `alt` implements the `Alt` iterface by concatenation of `Array`s.\n * `Alt` interface is similar to `Semigroup` for higher-kinded types such\n * as `Array` and `Option`: the example below shows both `Alt`'s `alt` and\n * `Semigroup`'s `concat` functions.\n *\n * @example\n * import { alt, concat } from 'fp-ts/Array';\n *\n * assert.deepStrictEqual(alt(() => [2, 3, 4])([1]), [1, 2, 3, 4]);\n * assert.deepStrictEqual(concat([2, 3, 4])([1]), [1, 2, 3, 4]);\n *\n * @category Alt\n * @since 2.0.0\n */\nexports.alt = exports.altW;\n/**\n * Same as [`filter`](#filter), but passing also the index to the iterating function.\n *\n * @example\n * import { filterWithIndex } from 'fp-ts/Array';\n *\n * const f = (index: number, x: number) => x > 0 && index <= 2;\n * assert.deepStrictEqual(filterWithIndex(f)([-3, 1, -2, 5]), [1]);\n *\n * @category FilterableWithIndex\n * @since 2.0.0\n */\nvar filterWithIndex = function (predicateWithIndex) { return function (as) {\n return as.filter(function (b, i) { return predicateWithIndex(i, b); });\n}; };\nexports.filterWithIndex = filterWithIndex;\n/**\n * Given an iterating function that takes `Array` as input, `extend` returns\n * an array containing the results of the iterating function applied to the whole input\n * `Array`, then to the input `Array` without the first element, then to the input\n * `Array` without the first two elements, etc.\n *\n * @example\n * import { extend } from 'fp-ts/Array'\n *\n * const f = (a: string[]) => a.join(\",\");\n * assert.deepStrictEqual(extend(f)([\"a\", \"b\", \"c\"]), [\"a,b,c\", \"b,c\", \"c\"]);\n *\n * @category Extend\n * @since 2.0.0\n */\nvar extend = function (f) { return function (wa) {\n return wa.map(function (_, i) { return f(wa.slice(i)); });\n}; };\nexports.extend = extend;\n/**\n * `duplicate` returns an array containing the whole input `Array`,\n * then to the input `Array` dropping the first element, then to the input\n * `Array` dropping the first two elements, etc.\n * Derivable from `Extend`.\n *\n * @example\n * import { duplicate } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(duplicate([\"a\", \"b\", \"c\"]), [[\"a\", \"b\", \"c\"], [\"b\", \"c\"], [\"c\"]]);\n *\n * @category combinators\n * @since 2.0.0\n */\nexports.duplicate = \n/*#__PURE__*/\nexports.extend(function_1.identity);\n/**\n * Map and fold an `Array`.\n * Map the `Array` passing each value to the iterating function.\n * Then fold the results using the provided `Monoid`.\n *\n * @example\n * import { foldMap } from 'fp-ts/Array'\n *\n * const monoid = { concat: (a: string, b: string) => a + b, empty: \"\" };\n * const f = (s: string) => s.toUpperCase()\n * assert.deepStrictEqual(foldMap(monoid)(f)([\"a\", \"b\", \"c\"]), \"ABC\");\n *\n * @category Foldable\n * @since 2.0.0\n */\nexports.foldMap = RA.foldMap;\n/**\n * Same as [`foldMap`](#foldMap) but passing also the index to the iterating function.\n *\n * @example\n * import { foldMapWithIndex } from 'fp-ts/Array'\n *\n * const monoid = { concat: (a: string, b: string) => a + b, empty: \"\" };\n * const f = (index:number, s: string) => `${s.toUpperCase()}(${index})`\n * assert.deepStrictEqual(foldMapWithIndex(monoid)(f)([\"a\", \"b\", \"c\"]), \"A(0)B(1)C(2)\");\n *\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexports.foldMapWithIndex = RA.foldMapWithIndex;\n/**\n * Reduces an `Array`.\n *\n * `reduce` executes the supplied iterating function on each element of the array,\n * in order, passing in the element and the return value from the calculation on the preceding element.\n *\n * The first time that the iterating function is called there is no \"return value of the\n * previous calculation\", the initial value is used in its place.\n *\n * @example\n * import { reduce } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(reduce(5, (acc: number, cur: number) => acc * cur)([2, 3]), 5 * 2 * 3);\n *\n * @category Foldable\n * @since 2.0.0\n */\nexports.reduce = RA.reduce;\n/**\n * Same as [`reduce`](#reduce) but passing also the index to the iterating function.\n *\n * @example\n * import { reduceWithIndex } from 'fp-ts/Array'\n *\n * const f = (index: number, acc: string, cur: unknown) =>\n * acc + (typeof cur === \"string\" ? cur.toUpperCase() + index : \"\");\n * assert.deepStrictEqual(reduceWithIndex(\"\", f)([2, \"a\", \"b\", null]), \"A1B2\");\n *\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexports.reduceWithIndex = RA.reduceWithIndex;\n/**\n * Same as [`reduce`](#reduce) but applied from the end to the start.\n *\n * *Note*: the iterating function in this case takes the accumulator as the last argument.\n *\n * @example\n * import { reduceRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(reduceRight(\"\", (cur: string, acc: string) => acc + cur)([\"a\", \"b\", \"c\"]), \"cba\");\n *\n * @category Foldable\n * @since 2.0.0\n */\nexports.reduceRight = RA.reduceRight;\n/**\n * Same as [`reduceRight`](#reduceRight) but passing also the index to the iterating function.\n *\n * @example\n * import { reduceRightWithIndex } from 'fp-ts/Array'\n *\n * const f = (index: number, cur: unknown, acc: string) =>\n * acc + (typeof cur === \"string\" ? cur.toUpperCase() + index : \"\");\n * assert.deepStrictEqual(reduceRightWithIndex(\"\", f)([2, \"a\", \"b\", null]), \"B2A1\");\n *\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexports.reduceRightWithIndex = RA.reduceRightWithIndex;\n/**\n * Given an iterating function that returns a `HKT` (higher kinded type), `traverse`\n * applies the iterating function to each element of the `Array` and then [`sequence`](#sequence)-s\n * the results using the provided `Applicative`.\n *\n * E.g. suppose you have an `Array` and you want to format each element with a function\n * that returns a result or an error as `f = (a: A) => Either`, using `traverse`\n * you can apply `f` to all elements and directly obtain as a result an `Either>`\n * i.e. an `Array` if all the results are `B`, or an `Error` if some of the results\n * are `Error`s.\n *\n * @example\n * import { traverse } from 'fp-ts/Array'\n * import { Applicative, left, right } from \"fp-ts/lib/Either\";\n *\n * const f = (x: unknown) =>\n * typeof x === \"string\" ? right(x.toUpperCase()) : left(new Error(\"not a string\"));\n * assert.deepStrictEqual(traverse(Applicative)(f)([\"a\", \"b\"]), right([\"A\", \"B\"]));\n * assert.deepStrictEqual(traverse(Applicative)(f)([\"a\", 5]), left(new Error(\"not a string\")));\n *\n * @category Traversable\n * @since 2.6.3\n */\nvar traverse = function (F) {\n var traverseWithIndexF = exports.traverseWithIndex(F);\n return function (f) { return traverseWithIndexF(function (_, a) { return f(a); }); };\n};\nexports.traverse = traverse;\n/**\n * `sequence` takes an `Array` where elements are `HKT` (higher kinded type) and,\n * using an applicative of that `HKT`, returns an `HKT` of `Array`.\n * E.g. it can turn an `Array>` into an `Either>`.\n *\n * `sequence` requires an `Applicative` of the `HKT` you are targeting, e.g. to turn an\n * `Array>` into an `Either>`, it needs an\n * `Applicative` for `Either`, to to turn an `Array>` into an `Option>`,\n * it needs an `Applicative` for `Option`.\n *\n * @example\n * import { sequence } from 'fp-ts/Array'\n * import { Applicative, left, right } from \"fp-ts/lib/Either\";\n *\n * assert.deepStrictEqual(sequence(Applicative)([right(\"a\"), right(\"b\")]), right([\"a\", \"b\"]));\n * assert.deepStrictEqual(\n * sequence(Applicative)([right(\"a\"), left(new Error(\"not a string\"))]),\n * left(new Error(\"not a string\"))\n * );\n *\n * @category Traversable\n * @since 2.6.3\n */\nvar sequence = function (F) { return function (ta) {\n return _reduce(ta, F.of(exports.zero()), function (fas, fa) {\n return F.ap(F.map(fas, function (as) { return function (a) { return function_1.pipe(as, exports.append(a)); }; }), fa);\n });\n}; };\nexports.sequence = sequence;\n/**\n * Same as [`traverse`](#traverse) but passing also the index to the iterating function.\n *\n * @example\n * import { traverseWithIndex } from 'fp-ts/Array'\n * import { Applicative, left, right } from \"fp-ts/lib/Either\";\n *\n * const f = (index:number, x:unknown) =>\n * typeof x === \"string\" ? right(x.toUpperCase() + index) : left(new Error(\"not a string\"));\n * assert.deepStrictEqual(traverseWithIndex(Applicative)(f)([\"a\", \"b\"]), right([\"A0\", \"B1\"]));\n * assert.deepStrictEqual(traverseWithIndex(Applicative)(f)([\"a\", 5]), left(new Error(\"not a string\")));\n *\n * @category TraversableWithIndex\n * @since 2.6.3\n */\nvar traverseWithIndex = function (F) { return function (f) {\n return exports.reduceWithIndex(F.of(exports.zero()), function (i, fbs, a) {\n return F.ap(F.map(fbs, function (bs) { return function (b) { return function_1.pipe(bs, exports.append(b)); }; }), f(i, a));\n });\n}; };\nexports.traverseWithIndex = traverseWithIndex;\n/**\n * @category Witherable\n * @since 2.6.5\n */\nvar wither = function (F) {\n var _witherF = _wither(F);\n return function (f) { return function (fa) { return _witherF(fa, f); }; };\n};\nexports.wither = wither;\n/**\n * @category Witherable\n * @since 2.6.5\n */\nvar wilt = function (F) {\n var _wiltF = _wilt(F);\n return function (f) { return function (fa) { return _wiltF(fa, f); }; };\n};\nexports.wilt = wilt;\n/**\n * `unfold` takes a function `f` which returns an `Option` of a tuple containing an outcome\n * value and an input for the following iteration.\n * `unfold` applies `f` to the initial value `b` and then recursively to the second\n * element of the tuple contained in the returned `option` of the previous\n * calculation until `f` returns `Option.none`.\n *\n * @example\n * import { unfold } from 'fp-ts/Array'\n * import { option } from 'fp-ts'\n *\n * const f = (n: number) => {\n * if (n <= 0) return option.none;\n * const returnValue = n * 2;\n * const inputForNextRound = n - 1;\n * return option.some([returnValue, inputForNextRound] as const);\n * };\n * assert.deepStrictEqual(unfold(5, f), [10, 8, 6, 4, 2]);\n *\n * @category Unfoldable\n * @since 2.6.6\n */\nvar unfold = function (b, f) {\n var out = [];\n var bb = b;\n while (true) {\n var mt = f(bb);\n if (_.isSome(mt)) {\n var _a = mt.value, a = _a[0], b_1 = _a[1];\n out.push(a);\n bb = b_1;\n }\n else {\n break;\n }\n }\n return out;\n};\nexports.unfold = unfold;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.0.0\n */\nexports.URI = 'Array';\n/**\n * `getShow` makes a `Show` for an `Array` from a `Show` for\n * an `A`.\n *\n * @example\n * import { getShow } from 'fp-ts/Array'\n *\n * const numShow = { show: (n: number) => (n >= 0 ? `${n}` : `(${-n})`) };\n * assert.deepStrictEqual(getShow(numShow).show([-2, -1, 0, 1]), \"[(2), (1), 0, 1]\");\n *\n * @category instances\n * @since 2.0.0\n */\nexports.getShow = RA.getShow;\n/**\n * Get a `Semigroup` based on the concatenation of `Array`s.\n * See also [`getMonoid`](#getMonoid).\n *\n * @example\n * import { getSemigroup } from 'fp-ts/Array'\n *\n * const S = getSemigroup();\n * assert.deepStrictEqual(S.concat([1, 2], [2, 3]), [1, 2, 2, 3]);\n *\n * @category instances\n * @since 2.10.0\n */\nvar getSemigroup = function () { return ({\n concat: function (first, second) { return first.concat(second); }\n}); };\nexports.getSemigroup = getSemigroup;\n/**\n * Returns a `Monoid` for `Array` based on the concatenation of `Array`s.\n *\n * @example\n * import { getMonoid } from 'fp-ts/Array'\n *\n * const M = getMonoid()\n * assert.deepStrictEqual(M.concat([1, 2], [3, 4]), [1, 2, 3, 4])\n *\n * @category instances\n * @since 2.0.0\n */\nvar getMonoid = function () { return ({\n concat: exports.getSemigroup().concat,\n empty: []\n}); };\nexports.getMonoid = getMonoid;\n/**\n * Derives an `Eq` over the `Array` of a given element type from the `Eq` of that type. The derived `Eq` defines two\n * arrays as equal if all elements of both arrays are compared equal pairwise with the given `E`. In case of arrays of\n * different lengths, the result is non equality.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { getEq } from 'fp-ts/Array'\n *\n * const E = getEq(S.Eq)\n * assert.strictEqual(E.equals(['a', 'b'], ['a', 'b']), true)\n * assert.strictEqual(E.equals(['a'], []), false)\n *\n * @category instances\n * @since 2.0.0\n */\nexports.getEq = RA.getEq;\n/**\n * Derives an `Ord` over the `Array` of a given element type from the `Ord` of that type. The ordering between two such\n * arrays is equal to: the first non equal comparison of each arrays elements taken pairwise in increasing order, in\n * case of equality over all the pairwise elements; the longest array is considered the greatest, if both arrays have\n * the same length, the result is equality.\n *\n * @example\n * import { getOrd } from 'fp-ts/Array'\n * import * as S from 'fp-ts/string'\n *\n * const O = getOrd(S.Ord)\n * assert.strictEqual(O.compare(['b'], ['a']), 1)\n * assert.strictEqual(O.compare(['a'], ['a']), 0)\n * assert.strictEqual(O.compare(['a'], ['b']), -1)\n *\n * @category instances\n * @since 2.0.0\n */\nexports.getOrd = RA.getOrd;\n/**\n * Get a `Semigroup` based on the union of the elements of `Array`s.\n * Elements which equal according to the provided `Eq` are included\n * only once in the result.\n * See also [`getUnionMonoid`](#getUnionMonoid).\n *\n * @example\n * import { getUnionSemigroup } from 'fp-ts/Array';\n * import { Eq } from 'fp-ts/number';\n *\n * const S = getUnionSemigroup(Eq);\n * assert.deepStrictEqual(S.concat([1, 2], [2, 3]), [1, 2, 3]);\n *\n * @category instances\n * @since 2.11.0\n */\nvar getUnionSemigroup = function (E) {\n var unionE = union(E);\n return {\n concat: function (first, second) { return unionE(second)(first); }\n };\n};\nexports.getUnionSemigroup = getUnionSemigroup;\n/**\n * Get a `Monoid` based on the union of the elements of `Array`s.\n * Elements which equal according to the provided `Eq` are included\n * only once in the result.\n *\n * @example\n * import { getUnionMonoid } from 'fp-ts/Array'\n * import { Eq } from 'fp-ts/number';\n *\n * const M = getUnionMonoid(Eq);\n * assert.deepStrictEqual(M.concat([1, 2], [2, 3]), [1, 2, 3]);\n * assert.deepStrictEqual(M.empty,[]);\n *\n * @category instances\n * @since 2.11.0\n */\nvar getUnionMonoid = function (E) { return ({\n concat: exports.getUnionSemigroup(E).concat,\n empty: []\n}); };\nexports.getUnionMonoid = getUnionMonoid;\n/**\n * Get a `Semigroup` based on the intersection of the elements of `Array`s.\n * Only elements present in the two arrays which are equal according to the\n * provided `Eq` are included in the result.\n *\n * @example\n * import { getIntersectionSemigroup } from 'fp-ts/Array'\n * import { Eq } from 'fp-ts/number';\n *\n * const S = getIntersectionSemigroup(Eq);\n * assert.deepStrictEqual(S.concat([1, 2], [2, 3]), [2]);\n *\n * @category instances\n * @since 2.11.0\n */\nvar getIntersectionSemigroup = function (E) {\n var intersectionE = intersection(E);\n return {\n concat: function (first, second) { return intersectionE(second)(first); }\n };\n};\nexports.getIntersectionSemigroup = getIntersectionSemigroup;\n/**\n * Get a `Magma` for `Array` where the `concat` function is the differnce between\n * the first and the second array, i.e. the result contains all the elements of the\n * first array for which their is no equal element in the second array according\n * to the `Eq` provided.\n *\n *\n * @example\n * import { getDifferenceMagma } from 'fp-ts/Array'\n * import { Eq } from 'fp-ts/number';\n *\n * const S = getDifferenceMagma(Eq);\n * assert.deepStrictEqual(S.concat([1, 2], [2, 3]), [1]);\n *\n * @category instances\n * @since 2.11.0\n */\nvar getDifferenceMagma = function (E) {\n var differenceE = difference(E);\n return {\n concat: function (first, second) { return differenceE(second)(first); }\n };\n};\nexports.getDifferenceMagma = getDifferenceMagma;\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Functor = {\n URI: exports.URI,\n map: _map\n};\n/**\n * Given an input an `Array` of functions, `flap` returns an `Array` containing\n * the results of applying each function to the given input.\n *\n * @example\n * import { flap } from 'fp-ts/Array'\n *\n * const funs = [\n * (n: number) => `Double: ${n * 2}`,\n * (n: number) => `Triple: ${n * 3}`,\n * (n: number) => `Square: ${n * n}`,\n * ];\n * assert.deepStrictEqual(flap(4)(funs), ['Double: 8', 'Triple: 12', 'Square: 16']);\n *\n * @category combinators\n * @since 2.10.0\n */\nexports.flap = \n/*#__PURE__*/\nFunctor_1.flap(exports.Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Pointed = {\n URI: exports.URI,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FunctorWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Apply = {\n URI: exports.URI,\n map: _map,\n ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apFirst = \n/*#__PURE__*/\nApply_1.apFirst(exports.Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexports.apSecond = \n/*#__PURE__*/\nApply_1.apSecond(exports.Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Applicative = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexports.Chain = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.0.0\n */\nexports.chainFirst = \n/*#__PURE__*/\nChain_1.chainFirst(exports.Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Monad = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of,\n chain: _chain\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Unfoldable = {\n URI: exports.URI,\n unfold: exports.unfold\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Alt = {\n URI: exports.URI,\n map: _map,\n alt: _alt\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.Zero = {\n URI: exports.URI,\n zero: exports.zero\n};\n/**\n * @category constructors\n * @since 2.11.0\n */\nexports.guard = \n/*#__PURE__*/\nZero_1.guard(exports.Zero, exports.Pointed);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Alternative = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n of: exports.of,\n alt: _alt,\n zero: exports.zero\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Extend = {\n URI: exports.URI,\n map: _map,\n extend: _extend\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Compactable = {\n URI: exports.URI,\n compact: exports.compact,\n separate: exports.separate\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Filterable = {\n URI: exports.URI,\n map: _map,\n compact: exports.compact,\n separate: exports.separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FilterableWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n compact: exports.compact,\n separate: exports.separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n partitionMapWithIndex: _partitionMapWithIndex,\n partitionWithIndex: _partitionWithIndex,\n filterMapWithIndex: _filterMapWithIndex,\n filterWithIndex: _filterWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Foldable = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.FoldableWithIndex = {\n URI: exports.URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Traversable = {\n URI: exports.URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.TraversableWithIndex = {\n URI: exports.URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverse: _traverse,\n sequence: exports.sequence,\n traverseWithIndex: _traverseWithIndex\n};\nvar _wither = \n/*#__PURE__*/\nWitherable_1.witherDefault(exports.Traversable, exports.Compactable);\nvar _wilt = \n/*#__PURE__*/\nWitherable_1.wiltDefault(exports.Traversable, exports.Compactable);\n/**\n * @category instances\n * @since 2.7.0\n */\nexports.Witherable = {\n URI: exports.URI,\n map: _map,\n compact: exports.compact,\n separate: exports.separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n wither: _wither,\n wilt: _wilt\n};\n/**\n * @category ChainRec\n * @since 2.11.0\n */\nexports.chainRecDepthFirst = RA.chainRecDepthFirst;\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.ChainRecDepthFirst = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain,\n chainRec: _chainRecDepthFirst\n};\n/**\n * @category ChainRec\n * @since 2.11.0\n */\nexports.chainRecBreadthFirst = RA.chainRecBreadthFirst;\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.ChainRecBreadthFirst = {\n URI: exports.URI,\n map: _map,\n ap: _ap,\n chain: _chain,\n chainRec: _chainRecBreadthFirst\n};\n/**\n * Filter values inside a context.\n *\n * @since 2.11.0\n */\nexports.filterE = \n/*#__PURE__*/\nWitherable_1.filterE(exports.Witherable);\n/**\n * @category instances\n * @since 2.11.0\n */\nexports.FromEither = {\n URI: exports.URI,\n fromEither: exports.fromEither\n};\n/**\n * @category combinators\n * @since 2.11.0\n */\nexports.fromEitherK = \n/*#__PURE__*/\nFromEither_1.fromEitherK(exports.FromEither);\n// -------------------------------------------------------------------------------------\n// unsafe\n// -------------------------------------------------------------------------------------\n/**\n * @category unsafe\n * @since 2.0.0\n */\nexports.unsafeInsertAt = NEA.unsafeInsertAt;\n/**\n * @category unsafe\n * @since 2.0.0\n */\nvar unsafeUpdateAt = function (i, a, as) {\n return exports.isNonEmpty(as) ? NEA.unsafeUpdateAt(i, a, as) : [];\n};\nexports.unsafeUpdateAt = unsafeUpdateAt;\n/**\n * @category unsafe\n * @since 2.0.0\n */\nvar unsafeDeleteAt = function (i, as) {\n var xs = as.slice();\n xs.splice(i, 1);\n return xs;\n};\nexports.unsafeDeleteAt = unsafeDeleteAt;\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * `every` tells if the provided predicate holds true for every element in the `Array`.\n *\n * @example\n * import { every } from 'fp-ts/Array'\n *\n * assert.equal(every((x: number) => x >= 0)([1, 2, 3]), true);\n * assert.equal(every((x: number) => x >= 0)([-1, 2, 3]), false);\n *\n * @since 2.9.0\n */\nexports.every = RA.every;\n/**\n * `some` tells if the provided predicate holds true at least for one element in the `Array`.\n *\n * @example\n * import { some } from 'fp-ts/Array'\n *\n * assert.equal(some((x: number) => x >= 0)([1, 2, 3]), true);\n * assert.equal(some((x: number) => x >= 10)([1, 2, 3]), false);\n *\n * @since 2.9.0\n */\nvar some = function (predicate) { return function (as) { return as.some(predicate); }; };\nexports.some = some;\n/**\n * Alias of [`some`](#some)\n *\n * @since 2.11.0\n */\nexports.exists = exports.some;\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.9.0\n */\nexports.Do = \n/*#__PURE__*/\nexports.of(_.emptyRecord);\n/**\n * @since 2.8.0\n */\nexports.bindTo = \n/*#__PURE__*/\nFunctor_1.bindTo(exports.Functor);\n/**\n * @since 2.8.0\n */\nexports.bind = \n/*#__PURE__*/\nChain_1.bind(exports.Chain);\n// -------------------------------------------------------------------------------------\n// pipeable sequence S\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.8.0\n */\nexports.apS = \n/*#__PURE__*/\nApply_1.apS(exports.Apply);\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n// tslint:disable: deprecation\n/**\n * Use `NonEmptyArray` module instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nexports.range = NEA.range;\n/**\n * Use a new `[]` instead.\n *\n * @since 2.0.0\n * @deprecated\n */\nexports.empty = [];\n/**\n * Use `prepend` instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nexports.cons = NEA.cons;\n/**\n * Use `append` instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nexports.snoc = NEA.snoc;\n/**\n * Use `prependAll` instead\n *\n * @category combinators\n * @since 2.9.0\n * @deprecated\n */\nexports.prependToAll = exports.prependAll;\n/**\n * Use small, specific instances instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexports.array = {\n URI: exports.URI,\n compact: exports.compact,\n separate: exports.separate,\n map: _map,\n ap: _ap,\n of: exports.of,\n chain: _chain,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n mapWithIndex: _mapWithIndex,\n partitionMapWithIndex: _partitionMapWithIndex,\n partitionWithIndex: _partitionWithIndex,\n filterMapWithIndex: _filterMapWithIndex,\n filterWithIndex: _filterWithIndex,\n alt: _alt,\n zero: exports.zero,\n unfold: exports.unfold,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: exports.sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex,\n extend: _extend,\n wither: _wither,\n wilt: _wilt\n};\n", "/**\n * @license Fraction.js v4.2.0 05/03/2022\n * https://www.xarg.org/2014/03/rational-numbers-in-javascript/\n *\n * Copyright (c) 2021, Robert Eisele (robert@xarg.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * [ n => , d => ]\n *\n * Integer form\n * - Single integer value\n *\n * Double form\n * - Single double value\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n *\n * var f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n(function(root) {\n\n \"use strict\";\n\n // Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n // Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n // If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\n var MAX_CYCLE_LEN = 2000;\n\n // Parsed data to avoid calling \"new\" all the time\n var P = {\n \"s\": 1,\n \"n\": 0,\n \"d\": 1\n };\n\n function assign(n, s) {\n\n if (isNaN(n = parseInt(n, 10))) {\n throw Fraction['InvalidParameter'];\n }\n return n * s;\n }\n\n // Creates a new Fraction internally without the need of the bulky constructor\n function newFraction(n, d) {\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n var f = Object.create(Fraction.prototype);\n f[\"s\"] = n < 0 ? -1 : 1;\n\n n = n < 0 ? -n : n;\n\n var a = gcd(n, d);\n\n f[\"n\"] = n / a;\n f[\"d\"] = d / a;\n return f;\n }\n\n function factorize(num) {\n\n var factors = {};\n\n var n = num;\n var i = 2;\n var s = 4;\n\n while (s <= n) {\n\n while (n % i === 0) {\n n/= i;\n factors[i] = (factors[i] || 0) + 1;\n }\n s+= 1 + 2 * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || 0) + 1;\n } else {\n factors[num] = (factors[num] || 0) + 1;\n }\n return factors;\n }\n\n var parse = function(p1, p2) {\n\n var n = 0, d = 1, s = 1;\n var v = 0, w = 0, x = 0, y = 1, z = 1;\n\n var A = 0, B = 1;\n var C = 1, D = 1;\n\n var N = 10000000;\n var M;\n\n if (p1 === undefined || p1 === null) {\n /* void */\n } else if (p2 !== undefined) {\n n = p1;\n d = p2;\n s = n * d;\n\n if (n % 1 !== 0 || d % 1 !== 0) {\n throw Fraction['NonIntegerParameter'];\n }\n\n } else\n switch (typeof p1) {\n\n case \"object\":\n {\n if (\"d\" in p1 && \"n\" in p1) {\n n = p1[\"n\"];\n d = p1[\"d\"];\n if (\"s\" in p1)\n n*= p1[\"s\"];\n } else if (0 in p1) {\n n = p1[0];\n if (1 in p1)\n d = p1[1];\n } else {\n throw Fraction['InvalidParameter'];\n }\n s = n * d;\n break;\n }\n case \"number\":\n {\n if (p1 < 0) {\n s = p1;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = p1;\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n if (p1 >= 1) {\n z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));\n p1/= z;\n }\n\n // Using Farey Sequences\n // http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/\n\n while (B <= N && D <= N) {\n M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A+= C;\n B+= D;\n } else {\n C+= A;\n D+= B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n*= z;\n } else if (isNaN(p1) || isNaN(p2)) {\n d = n = NaN;\n }\n break;\n }\n case \"string\":\n {\n B = p1.match(/\\d+|./g);\n\n if (B === null)\n throw Fraction['InvalidParameter'];\n\n if (B[A] === '-') {// Check for minus sign at the beginning\n s = -1;\n A++;\n } else if (B[A] === '+') {// Check for plus sign at the beginning\n A++;\n }\n\n if (B.length === A + 1) { // Check if it's just a simple number \"1234\"\n w = assign(B[A++], s);\n } else if (B[A + 1] === '.' || B[A] === '.') { // Check if it's a decimal number\n\n if (B[A] !== '.') { // Handle 0.5 and .5\n v = assign(B[A++], s);\n }\n A++;\n\n // Check for decimal places\n if (A + 1 === B.length || B[A + 1] === '(' && B[A + 3] === ')' || B[A + 1] === \"'\" && B[A + 3] === \"'\") {\n w = assign(B[A], s);\n y = Math.pow(10, B[A].length);\n A++;\n }\n\n // Check for repeating places\n if (B[A] === '(' && B[A + 2] === ')' || B[A] === \"'\" && B[A + 2] === \"'\") {\n x = assign(B[A + 1], s);\n z = Math.pow(10, B[A + 1].length) - 1;\n A+= 3;\n }\n\n } else if (B[A + 1] === '/' || B[A + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(B[A], s);\n y = assign(B[A + 2], 1);\n A+= 3;\n } else if (B[A + 3] === '/' && B[A + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(B[A], s);\n w = assign(B[A + 2], s);\n y = assign(B[A + 4], 1);\n A+= 5;\n }\n\n if (B.length <= A) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n break;\n }\n\n /* Fall through on error */\n }\n default:\n throw Fraction['InvalidParameter'];\n }\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n P[\"s\"] = s < 0 ? -1 : 1;\n P[\"n\"] = Math.abs(n);\n P[\"d\"] = Math.abs(d);\n };\n\n function modpow(b, e, m) {\n\n var r = 1;\n for (; e > 0; b = (b * b) % m, e >>= 1) {\n\n if (e & 1) {\n r = (r * b) % m;\n }\n }\n return r;\n }\n\n\n function cycleLen(n, d) {\n\n for (; d % 2 === 0;\n d/= 2) {\n }\n\n for (; d % 5 === 0;\n d/= 5) {\n }\n\n if (d === 1) // Catch non-cyclic numbers\n return 0;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n var rem = 10 % d;\n var t = 1;\n\n for (; rem !== 1; t++) {\n rem = rem * 10 % d;\n\n if (t > MAX_CYCLE_LEN)\n return 0; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return t;\n }\n\n\n function cycleStart(n, d, len) {\n\n var rem1 = 1;\n var rem2 = modpow(10, len, d);\n\n for (var t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return t;\n\n rem1 = rem1 * 10 % d;\n rem2 = rem2 * 10 % d;\n }\n return 0;\n }\n\n function gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a%= b;\n if (!a)\n return b;\n b%= a;\n if (!b)\n return a;\n }\n };\n\n /**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\n function Fraction(a, b) {\n\n parse(a, b);\n\n if (this instanceof Fraction) {\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse variable a\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n } else {\n return newFraction(P['s'] * P['n'], P['d']);\n }\n }\n\n Fraction['DivisionByZero'] = new Error(\"Division by Zero\");\n Fraction['InvalidParameter'] = new Error(\"Invalid argument\");\n Fraction['NonIntegerParameter'] = new Error(\"Parameters must be integer\");\n\n Fraction.prototype = {\n\n \"s\": 1,\n \"n\": 0,\n \"d\": 1,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function() {\n\n return newFraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function() {\n\n return newFraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function() {\n return newFraction(this['s'] * this['n'], this['d']);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n **/\n \"mod\": function(a, b) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return new Fraction(NaN);\n }\n\n if (a === undefined) {\n return newFraction(this[\"s\"] * this[\"n\"] % this[\"d\"], 1);\n }\n\n parse(a, b);\n if (0 === P[\"n\"] && 0 === this[\"d\"]) {\n throw Fraction['DivisionByZero'];\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return newFraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function(a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return newFraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function(a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === 0 && this[\"n\"] === 0) {\n return newFraction(0, 1);\n }\n return newFraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.ceil(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.floor(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational numbers\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.round(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function() {\n\n return newFraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some rational exponent, if possible\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function(a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === 1) {\n\n if (P['s'] < 0) {\n return newFraction(Math.pow(this['s'] * this[\"d\"], P['n']), Math.pow(this[\"n\"], P['n']));\n } else {\n return newFraction(Math.pow(this['s'] * this[\"n\"], P['n']), Math.pow(this[\"d\"], P['n']));\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // <=> (-1)^(c/d) * (a/b)^(c/d) = x\n // <=> (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x # rotate 1 by 180\u00B0\n // <=> (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula in Q ( https://proofwiki.org/wiki/De_Moivre%27s_Formula/Rational_Index )\n // From which follows that only for c=0 the root is non-complex. c/d is a reduced fraction, so that sin(c/dpi)=0 occurs for d=1, which is handled by our trivial case.\n if (this['s'] < 0) return null;\n\n // Now prime factor n and d\n var N = factorize(this['n']);\n var D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n var n = 1;\n var d = 1;\n for (var k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = 0;\n break;\n }\n N[k]*= P['n'];\n\n if (N[k] % P['d'] === 0) {\n N[k]/= P['d'];\n } else return null;\n n*= Math.pow(k, N[k]);\n }\n\n for (var k in D) {\n if (k === '1') continue;\n D[k]*= P['n'];\n\n if (D[k] % P['d'] === 0) {\n D[k]/= P['d'];\n } else return null;\n d*= Math.pow(k, D[k]);\n }\n\n if (P['s'] < 0) {\n return newFraction(d, n);\n }\n return newFraction(n, d);\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function(a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"]; // Same as compare() === 0\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"compare\": function(a, b) {\n\n parse(a, b);\n var t = (this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"]);\n return (0 < t) - (t < 0);\n },\n\n \"simplify\": function(eps) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return this;\n }\n\n eps = eps || 0.001;\n\n var thisABS = this['abs']();\n var cont = thisABS['toContinued']();\n\n for (var i = 1; i < cont.length; i++) {\n\n var s = newFraction(cont[i - 1], 1);\n for (var k = i - 2; k >= 0; k--) {\n s = s['inverse']()['add'](cont[k]);\n }\n\n if (s['sub'](thisABS)['abs']().valueOf() < eps) {\n return s['mul'](this['s']);\n }\n }\n return this;\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function(a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function() {\n\n return this[\"s\"] * this[\"n\"] / this[\"d\"];\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction(true) => \"4 1/3\"\n **/\n 'toFraction': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n str+= \" \";\n n%= d;\n }\n\n str+= n;\n str+= '/';\n str+= d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n n%= d;\n }\n\n str+= \"\\\\frac{\";\n str+= n;\n str+= '}{';\n str+= d;\n str+= '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function() {\n\n var t;\n var a = this['n'];\n var b = this['d'];\n var res = [];\n\n if (isNaN(a) || isNaN(b)) {\n return res;\n }\n\n do {\n res.push(Math.floor(a / b));\n t = a % b;\n a = b;\n b = t;\n } while (a !== 1);\n\n return res;\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function(dec) {\n\n var N = this[\"n\"];\n var D = this[\"d\"];\n\n if (isNaN(N) || isNaN(D)) {\n return \"NaN\";\n }\n\n dec = dec || 15; // 15 = decimal places when no repetation\n\n var cycLen = cycleLen(N, D); // Cycle length\n var cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n var str = this['s'] < 0 ? \"-\" : \"\";\n\n str+= N / D | 0;\n\n N%= D;\n N*= 10;\n\n if (N)\n str+= \".\";\n\n if (cycLen) {\n\n for (var i = cycOff; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \"(\";\n for (var i = cycLen; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \")\";\n } else {\n for (var i = dec; N && i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n }\n return str;\n }\n };\n\n if (typeof define === \"function\" && define[\"amd\"]) {\n define([], function() {\n return Fraction;\n });\n } else if (typeof exports === \"object\") {\n Object.defineProperty(Fraction, \"__esModule\", { 'value': true });\n Fraction['default'] = Fraction;\n Fraction['Fraction'] = Fraction;\n module['exports'] = Fraction;\n } else {\n root['Fraction'] = Fraction;\n }\n\n})(this);\n", "'use strict';\n\nconst ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\toverline: [53, 55],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16 +\n\t\t\t\t\t(36 * Math.round(red / 255 * 5)) +\n\t\t\t\t\t(6 * Math.round(green / 255 * 5)) +\n\t\t\t\t\tMath.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /(?[a-f\\d]{6}|[a-f\\d]{3})/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet {colorString} = matches.groups;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = colorString.split('').map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getKeysOfEnumerableProperties = (object, compareKeys) => {\n const rawKeys = Object.keys(object);\n const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(object).forEach(symbol => {\n if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n keys.push(symbol);\n }\n });\n }\n return keys;\n};\n\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printIteratorEntries(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer,\n // Too bad, so sad that separator for ECMAScript Map has been ' => '\n // What a distracting diff if you change a data structure to/from\n // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n separator = ': '\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n const name = printer(\n current.value[0],\n config,\n indentationNext,\n depth,\n refs\n );\n const value = printer(\n current.value[1],\n config,\n indentationNext,\n depth,\n refs\n );\n result += name + separator + value;\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\nfunction printIteratorValues(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n result += printer(current.value, config, indentationNext, depth, refs);\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n let result = '';\n if (list.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < list.length; i++) {\n result += indentationNext;\n if (i === config.maxWidth) {\n result += '\u2026';\n break;\n }\n if (i in list) {\n result += printer(list[i], config, indentationNext, depth, refs);\n }\n if (i < list.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n let result = '';\n const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n if (keys.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = printer(key, config, indentationNext, depth, refs);\n const value = printer(val[key], config, indentationNext, depth, refs);\n result += `${indentationNext + name}: ${value}`;\n if (i < keys.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst asymmetricMatcher =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('jest.asymmetricMatcher')\n : 0x1357a5;\nconst SPACE = ' ';\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n const stringedValue = val.toString();\n if (\n stringedValue === 'ArrayContaining' ||\n stringedValue === 'ArrayNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}[${(0, _collections.printListItems)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (\n stringedValue === 'ObjectContaining' ||\n stringedValue === 'ObjectNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n if (\n stringedValue === 'StringMatching' ||\n stringedValue === 'StringNotMatching'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (\n stringedValue === 'StringContaining' ||\n stringedValue === 'StringNotContaining'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (typeof val.toAsymmetricMatcher !== 'function') {\n throw new Error(\n `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n );\n }\n return val.toAsymmetricMatcher();\n};\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === asymmetricMatcher;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\nconst testName = name =>\n OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\nconst test = val =>\n val &&\n val.constructor &&\n !!val.constructor.name &&\n testName(val.constructor.name);\nexports.test = test;\nconst isNamedNodeMap = collection =>\n collection.constructor.name === 'NamedNodeMap';\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n const name = collection.constructor.name;\n if (++depth > config.maxDepth) {\n return `[${name}]`;\n }\n return (\n (config.min ? '' : name + SPACE) +\n (OBJECT_NAMES.indexOf(name) !== -1\n ? `{${(0, _collections.printObjectProperties)(\n isNamedNodeMap(collection)\n ? Array.from(collection).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {})\n : {\n ...collection\n },\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`\n : `[${(0, _collections.printListItems)(\n Array.from(collection),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`)\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = escapeHTML;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction escapeHTML(str) {\n return str.replace(//g, '>');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printText =\n exports.printProps =\n exports.printElementAsLeaf =\n exports.printElement =\n exports.printComment =\n exports.printChildren =\n void 0;\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n const indentationNext = indentation + config.indent;\n const colors = config.colors;\n return keys\n .map(key => {\n const value = props[key];\n let printed = printer(value, config, indentationNext, depth, refs);\n if (typeof value !== 'string') {\n if (printed.indexOf('\\n') !== -1) {\n printed =\n config.spacingOuter +\n indentationNext +\n printed +\n config.spacingOuter +\n indentation;\n }\n printed = `{${printed}}`;\n }\n return `${\n config.spacingInner +\n indentation +\n colors.prop.open +\n key +\n colors.prop.close\n }=${colors.value.open}${printed}${colors.value.close}`;\n })\n .join('');\n};\n\n// Return empty string if children is empty.\nexports.printProps = printProps;\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n children\n .map(\n child =>\n config.spacingOuter +\n indentation +\n (typeof child === 'string'\n ? printText(child, config)\n : printer(child, config, indentation, depth, refs))\n )\n .join('');\nexports.printChildren = printChildren;\nconst printText = (text, config) => {\n const contentColor = config.colors.content;\n return (\n contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n );\n};\nexports.printText = printText;\nconst printComment = (comment, config) => {\n const commentColor = config.colors.comment;\n return `${commentColor.open}${\n commentColor.close\n }`;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nexports.printComment = printComment;\nconst printElement = (\n type,\n printedProps,\n printedChildren,\n config,\n indentation\n) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${\n printedProps &&\n tagColor.close +\n printedProps +\n config.spacingOuter +\n indentation +\n tagColor.open\n }${\n printedChildren\n ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}${tagColor.close}`;\n};\nexports.printElement = printElement;\nconst printElementAsLeaf = (type, config) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${tagColor.close} \u2026${tagColor.open} />${tagColor.close}`;\n};\nexports.printElementAsLeaf = printElementAsLeaf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst testHasAttribute = val => {\n try {\n return typeof val.hasAttribute === 'function' && val.hasAttribute('is');\n } catch {\n return false;\n }\n};\nconst testNode = val => {\n const constructorName = val.constructor.name;\n const {nodeType, tagName} = val;\n const isCustomElement =\n (typeof tagName === 'string' && tagName.includes('-')) ||\n testHasAttribute(val);\n return (\n (nodeType === ELEMENT_NODE &&\n (ELEMENT_REGEXP.test(constructorName) || isCustomElement)) ||\n (nodeType === TEXT_NODE && constructorName === 'Text') ||\n (nodeType === COMMENT_NODE && constructorName === 'Comment') ||\n (nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment')\n );\n};\nconst test = val => val?.constructor?.name && testNode(val);\nexports.test = test;\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n if (nodeIsText(node)) {\n return (0, _markup.printText)(node.data, config);\n }\n if (nodeIsComment(node)) {\n return (0, _markup.printComment)(node.data, config);\n }\n const type = nodeIsFragment(node)\n ? 'DocumentFragment'\n : node.tagName.toLowerCase();\n if (++depth > config.maxDepth) {\n return (0, _markup.printElementAsLeaf)(type, config);\n }\n return (0, _markup.printElement)(\n type,\n (0, _markup.printProps)(\n nodeIsFragment(node)\n ? []\n : Array.from(node.attributes)\n .map(attr => attr.name)\n .sort(),\n nodeIsFragment(node)\n ? {}\n : Array.from(node.attributes).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {}),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n Array.prototype.slice.call(node.childNodes || node.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\nconst getImmutableName = name => `Immutable.${name}`;\nconst printAsLeaf = name => `[${name}]`;\nconst SPACE = ' ';\nconst LAZY = '\u2026'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}{${(0,\n _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n let i = 0;\n return {\n next() {\n if (i < val._keys.length) {\n const key = val._keys[i++];\n return {\n done: false,\n value: [key, val.get(key)]\n };\n }\n return {\n done: true,\n value: undefined\n };\n }\n };\n}\nconst printImmutableRecord = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n) => {\n // _name property is defined only for an Immutable Record instance\n // which was constructed with a second optional descriptive name arg\n const name = getImmutableName(val._name || 'Record');\n return ++depth > config.maxDepth\n ? printAsLeaf(name)\n : `${name + SPACE}{${(0, _collections.printIteratorEntries)(\n getRecordEntries(val),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n};\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n const name = getImmutableName('Seq');\n if (++depth > config.maxDepth) {\n return printAsLeaf(name);\n }\n if (val[IS_KEYED_SENTINEL]) {\n return `${name + SPACE}{${\n // from Immutable collection of entries or from ECMAScript object\n val._iter || val._object\n ? (0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }}`;\n }\n return `${name + SPACE}[${\n val._iter ||\n // from Immutable collection of values\n val._array ||\n // from ECMAScript array\n val._collection ||\n // from ECMAScript collection in immutable v4\n val._iterable // from ECMAScript collection in immutable v3\n ? (0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }]`;\n};\nconst printImmutableValues = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}[${(0,\n _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n if (val[IS_MAP_SENTINEL]) {\n return printImmutableEntries(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n );\n }\n if (val[IS_LIST_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'List'\n );\n }\n if (val[IS_SET_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n );\n }\n if (val[IS_STACK_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'Stack'\n );\n }\n if (val[IS_SEQ_SENTINEL]) {\n return printImmutableSeq(val, config, indentation, depth, refs, printer);\n }\n\n // For compatibility with immutable v3 and v4, let record be the default.\n return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nexports.serialize = serialize;\nconst test = val =>\n val &&\n (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar ReactIs = _interopRequireWildcard(require('react-is'));\nvar _markup = require('./lib/markup');\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== 'function') return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function (nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n return {default: obj};\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor =\n Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n if (Array.isArray(arg)) {\n arg.forEach(item => {\n getChildren(item, children);\n });\n } else if (arg != null && arg !== false) {\n children.push(arg);\n }\n return children;\n};\nconst getType = element => {\n const type = element.type;\n if (typeof type === 'string') {\n return type;\n }\n if (typeof type === 'function') {\n return type.displayName || type.name || 'Unknown';\n }\n if (ReactIs.isFragment(element)) {\n return 'React.Fragment';\n }\n if (ReactIs.isSuspense(element)) {\n return 'React.Suspense';\n }\n if (typeof type === 'object' && type !== null) {\n if (ReactIs.isContextProvider(element)) {\n return 'Context.Provider';\n }\n if (ReactIs.isContextConsumer(element)) {\n return 'Context.Consumer';\n }\n if (ReactIs.isForwardRef(element)) {\n if (type.displayName) {\n return type.displayName;\n }\n const functionName = type.render.displayName || type.render.name || '';\n return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';\n }\n if (ReactIs.isMemo(element)) {\n const functionName =\n type.displayName || type.type.displayName || type.type.name || '';\n return functionName !== '' ? `Memo(${functionName})` : 'Memo';\n }\n }\n return 'UNDEFINED';\n};\nconst getPropKeys = element => {\n const {props} = element;\n return Object.keys(props)\n .filter(key => key !== 'children' && props[key] !== undefined)\n .sort();\n};\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(getType(element), config)\n : (0, _markup.printElement)(\n getType(element),\n (0, _markup.printProps)(\n getPropKeys(element),\n element.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n getChildren(element.props.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val != null && ReactIs.isElement(val);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Child can be `number` in Stack renderer but not in Fiber renderer.\n\nconst testSymbol =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('react.test.json')\n : 0xea71357;\nconst getPropKeys = object => {\n const {props} = object;\n return props\n ? Object.keys(props)\n .filter(key => props[key] !== undefined)\n .sort()\n : [];\n};\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(object.type, config)\n : (0, _markup.printElement)(\n object.type,\n object.props\n ? (0, _markup.printProps)(\n getPropKeys(object),\n object.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n object.children\n ? (0, _markup.printChildren)(\n object.children,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === testSymbol;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = exports.DEFAULT_OPTIONS = void 0;\nexports.format = format;\nexports.plugins = void 0;\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\nvar _collections = require('./collections');\nvar _AsymmetricMatcher = _interopRequireDefault(\n require('./plugins/AsymmetricMatcher')\n);\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\nvar _ReactTestComponent = _interopRequireDefault(\n require('./plugins/ReactTestComponent')\n);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\nconst getConstructorName = val =>\n (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n\n/* global window */\n/** Is val is equal to global window object? Works even if it does not exist :) */\nconst isWindow = val => typeof window !== 'undefined' && val === window;\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\nclass PrettyFormatPluginError extends Error {\n constructor(message, stack) {\n super(message);\n this.stack = stack;\n this.name = this.constructor.name;\n }\n}\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\nfunction printNumber(val) {\n return Object.is(val, -0) ? '-0' : String(val);\n}\nfunction printBigInt(val) {\n return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n if (!printFunctionName) {\n return '[Function]';\n }\n return `[Function ${val.name || 'anonymous'}]`;\n}\nfunction printSymbol(val) {\n return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\nfunction printError(val) {\n return `[${errorToString.call(val)}]`;\n}\n\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n if (val === true || val === false) {\n return `${val}`;\n }\n if (val === undefined) {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n const typeOf = typeof val;\n if (typeOf === 'number') {\n return printNumber(val);\n }\n if (typeOf === 'bigint') {\n return printBigInt(val);\n }\n if (typeOf === 'string') {\n if (escapeString) {\n return `\"${val.replace(/\"|\\\\/g, '\\\\$&')}\"`;\n }\n return `\"${val}\"`;\n }\n if (typeOf === 'function') {\n return printFunction(val, printFunctionName);\n }\n if (typeOf === 'symbol') {\n return printSymbol(val);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object WeakMap]') {\n return 'WeakMap {}';\n }\n if (toStringed === '[object WeakSet]') {\n return 'WeakSet {}';\n }\n if (\n toStringed === '[object Function]' ||\n toStringed === '[object GeneratorFunction]'\n ) {\n return printFunction(val, printFunctionName);\n }\n if (toStringed === '[object Symbol]') {\n return printSymbol(val);\n }\n if (toStringed === '[object Date]') {\n return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n }\n if (toStringed === '[object Error]') {\n return printError(val);\n }\n if (toStringed === '[object RegExp]') {\n if (escapeRegex) {\n // https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n return regExpToString.call(val);\n }\n if (val instanceof Error) {\n return printError(val);\n }\n return null;\n}\n\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\nfunction printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n) {\n if (refs.indexOf(val) !== -1) {\n return '[Circular]';\n }\n refs = refs.slice();\n refs.push(val);\n const hitMaxDepth = ++depth > config.maxDepth;\n const min = config.min;\n if (\n config.callToJSON &&\n !hitMaxDepth &&\n val.toJSON &&\n typeof val.toJSON === 'function' &&\n !hasCalledToJSON\n ) {\n return printer(val.toJSON(), config, indentation, depth, refs, true);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth\n ? '[Arguments]'\n : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth\n ? `[${val.constructor.name}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && val.constructor.name === 'Array'\n ? ''\n : `${val.constructor.name} `\n }[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (toStringed === '[object Map]') {\n return hitMaxDepth\n ? '[Map]'\n : `Map {${(0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer,\n ' => '\n )}}`;\n }\n if (toStringed === '[object Set]') {\n return hitMaxDepth\n ? '[Set]'\n : `Set {${(0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n\n // Avoid failure to serialize global window object in jsdom test environment.\n // For example, not even relevant if window is prop of React element.\n return hitMaxDepth || isWindow(val)\n ? `[${getConstructorName(val)}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && getConstructorName(val) === 'Object'\n ? ''\n : `${getConstructorName(val)} `\n }{${(0, _collections.printObjectProperties)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction isNewPlugin(plugin) {\n return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n let printed;\n try {\n printed = isNewPlugin(plugin)\n ? plugin.serialize(val, config, indentation, depth, refs, printer)\n : plugin.print(\n val,\n valChild => printer(valChild, config, indentation, depth, refs),\n str => {\n const indentationNext = indentation + config.indent;\n return (\n indentationNext +\n str.replace(NEWLINE_REGEXP, `\\n${indentationNext}`)\n );\n },\n {\n edgeSpacing: config.spacingOuter,\n min: config.min,\n spacing: config.spacingInner\n },\n config.colors\n );\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n if (typeof printed !== 'string') {\n throw new Error(\n `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n );\n }\n return printed;\n}\nfunction findPlugin(plugins, val) {\n for (let p = 0; p < plugins.length; p++) {\n try {\n if (plugins[p].test(val)) {\n return plugins[p];\n }\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n }\n return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n const plugin = findPlugin(config.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, config, indentation, depth, refs);\n }\n const basicResult = printBasicValue(\n val,\n config.printFunctionName,\n config.escapeRegex,\n config.escapeString\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n );\n}\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\n\n// could be replaced by `satisfies` operator in the future: https://github.com/microsoft/TypeScript/issues/47920\nconst toOptionsSubtype = options => options;\nconst DEFAULT_OPTIONS = toOptionsSubtype({\n callToJSON: true,\n compareKeys: undefined,\n escapeRegex: false,\n escapeString: true,\n highlight: false,\n indent: 2,\n maxDepth: Infinity,\n maxWidth: Infinity,\n min: false,\n plugins: [],\n printBasicPrototype: true,\n printFunctionName: true,\n theme: DEFAULT_THEME\n});\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nfunction validateOptions(options) {\n Object.keys(options).forEach(key => {\n if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n throw new Error(`pretty-format: Unknown option \"${key}\".`);\n }\n });\n if (options.min && options.indent !== undefined && options.indent !== 0) {\n throw new Error(\n 'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n );\n }\n if (options.theme !== undefined) {\n if (options.theme === null) {\n throw new Error('pretty-format: Option \"theme\" must not be null.');\n }\n if (typeof options.theme !== 'object') {\n throw new Error(\n `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n );\n }\n }\n}\nconst getColorsHighlight = options =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n const value =\n options.theme && options.theme[key] !== undefined\n ? options.theme[key]\n : DEFAULT_THEME[key];\n const color = value && _ansiStyles.default[value];\n if (\n color &&\n typeof color.close === 'string' &&\n typeof color.open === 'string'\n ) {\n colors[key] = color;\n } else {\n throw new Error(\n `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n );\n }\n return colors;\n }, Object.create(null));\nconst getColorsEmpty = () =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n colors[key] = {\n close: '',\n open: ''\n };\n return colors;\n }, Object.create(null));\nconst getPrintFunctionName = options =>\n options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\nconst getEscapeRegex = options =>\n options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\nconst getEscapeString = options =>\n options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\nconst getConfig = options => ({\n callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n compareKeys:\n typeof options?.compareKeys === 'function' || options?.compareKeys === null\n ? options.compareKeys\n : DEFAULT_OPTIONS.compareKeys,\n escapeRegex: getEscapeRegex(options),\n escapeString: getEscapeString(options),\n indent: options?.min\n ? ''\n : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n min: options?.min ?? DEFAULT_OPTIONS.min,\n plugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n printBasicPrototype: options?.printBasicPrototype ?? true,\n printFunctionName: getPrintFunctionName(options),\n spacingInner: options?.min ? ' ' : '\\n',\n spacingOuter: options?.min ? '' : '\\n'\n});\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\nfunction format(val, options) {\n if (options) {\n validateOptions(options);\n if (options.plugins) {\n const plugin = findPlugin(options.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, getConfig(options), '', 0, []);\n }\n }\n }\n const basicResult = printBasicValue(\n val,\n getPrintFunctionName(options),\n getEscapeRegex(options),\n getEscapeString(options)\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(val, getConfig(options), '', 0, []);\n}\nconst plugins = {\n AsymmetricMatcher: _AsymmetricMatcher.default,\n DOMCollection: _DOMCollection.default,\n DOMElement: _DOMElement.default,\n Immutable: _Immutable.default,\n ReactElement: _ReactElement.default,\n ReactTestComponent: _ReactTestComponent.default\n};\nexports.plugins = plugins;\nvar _default = format;\nexports.default = _default;\n", "/**\n * @license Fraction.js v4.2.0 05/03/2022\n * https://www.xarg.org/2014/03/rational-numbers-in-javascript/\n *\n * Copyright (c) 2021, Robert Eisele (robert@xarg.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * [ n => , d => ]\n *\n * Integer form\n * - Single integer value\n *\n * Double form\n * - Single double value\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n *\n * var f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n(function(root) {\n\n \"use strict\";\n\n // Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n // Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n // If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\n var MAX_CYCLE_LEN = 2000;\n\n // Parsed data to avoid calling \"new\" all the time\n var P = {\n \"s\": 1,\n \"n\": 0,\n \"d\": 1\n };\n\n function assign(n, s) {\n\n if (isNaN(n = parseInt(n, 10))) {\n throw Fraction['InvalidParameter'];\n }\n return n * s;\n }\n\n // Creates a new Fraction internally without the need of the bulky constructor\n function newFraction(n, d) {\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n var f = Object.create(Fraction.prototype);\n f[\"s\"] = n < 0 ? -1 : 1;\n\n n = n < 0 ? -n : n;\n\n var a = gcd(n, d);\n\n f[\"n\"] = n / a;\n f[\"d\"] = d / a;\n return f;\n }\n\n function factorize(num) {\n\n var factors = {};\n\n var n = num;\n var i = 2;\n var s = 4;\n\n while (s <= n) {\n\n while (n % i === 0) {\n n/= i;\n factors[i] = (factors[i] || 0) + 1;\n }\n s+= 1 + 2 * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || 0) + 1;\n } else {\n factors[num] = (factors[num] || 0) + 1;\n }\n return factors;\n }\n\n var parse = function(p1, p2) {\n\n var n = 0, d = 1, s = 1;\n var v = 0, w = 0, x = 0, y = 1, z = 1;\n\n var A = 0, B = 1;\n var C = 1, D = 1;\n\n var N = 10000000;\n var M;\n\n if (p1 === undefined || p1 === null) {\n /* void */\n } else if (p2 !== undefined) {\n n = p1;\n d = p2;\n s = n * d;\n\n if (n % 1 !== 0 || d % 1 !== 0) {\n throw Fraction['NonIntegerParameter'];\n }\n\n } else\n switch (typeof p1) {\n\n case \"object\":\n {\n if (\"d\" in p1 && \"n\" in p1) {\n n = p1[\"n\"];\n d = p1[\"d\"];\n if (\"s\" in p1)\n n*= p1[\"s\"];\n } else if (0 in p1) {\n n = p1[0];\n if (1 in p1)\n d = p1[1];\n } else {\n throw Fraction['InvalidParameter'];\n }\n s = n * d;\n break;\n }\n case \"number\":\n {\n if (p1 < 0) {\n s = p1;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = p1;\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n if (p1 >= 1) {\n z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));\n p1/= z;\n }\n\n // Using Farey Sequences\n // http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/\n\n while (B <= N && D <= N) {\n M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A+= C;\n B+= D;\n } else {\n C+= A;\n D+= B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n*= z;\n } else if (isNaN(p1) || isNaN(p2)) {\n d = n = NaN;\n }\n break;\n }\n case \"string\":\n {\n B = p1.match(/\\d+|./g);\n\n if (B === null)\n throw Fraction['InvalidParameter'];\n\n if (B[A] === '-') {// Check for minus sign at the beginning\n s = -1;\n A++;\n } else if (B[A] === '+') {// Check for plus sign at the beginning\n A++;\n }\n\n if (B.length === A + 1) { // Check if it's just a simple number \"1234\"\n w = assign(B[A++], s);\n } else if (B[A + 1] === '.' || B[A] === '.') { // Check if it's a decimal number\n\n if (B[A] !== '.') { // Handle 0.5 and .5\n v = assign(B[A++], s);\n }\n A++;\n\n // Check for decimal places\n if (A + 1 === B.length || B[A + 1] === '(' && B[A + 3] === ')' || B[A + 1] === \"'\" && B[A + 3] === \"'\") {\n w = assign(B[A], s);\n y = Math.pow(10, B[A].length);\n A++;\n }\n\n // Check for repeating places\n if (B[A] === '(' && B[A + 2] === ')' || B[A] === \"'\" && B[A + 2] === \"'\") {\n x = assign(B[A + 1], s);\n z = Math.pow(10, B[A + 1].length) - 1;\n A+= 3;\n }\n\n } else if (B[A + 1] === '/' || B[A + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(B[A], s);\n y = assign(B[A + 2], 1);\n A+= 3;\n } else if (B[A + 3] === '/' && B[A + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(B[A], s);\n w = assign(B[A + 2], s);\n y = assign(B[A + 4], 1);\n A+= 5;\n }\n\n if (B.length <= A) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n break;\n }\n\n /* Fall through on error */\n }\n default:\n throw Fraction['InvalidParameter'];\n }\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n P[\"s\"] = s < 0 ? -1 : 1;\n P[\"n\"] = Math.abs(n);\n P[\"d\"] = Math.abs(d);\n };\n\n function modpow(b, e, m) {\n\n var r = 1;\n for (; e > 0; b = (b * b) % m, e >>= 1) {\n\n if (e & 1) {\n r = (r * b) % m;\n }\n }\n return r;\n }\n\n\n function cycleLen(n, d) {\n\n for (; d % 2 === 0;\n d/= 2) {\n }\n\n for (; d % 5 === 0;\n d/= 5) {\n }\n\n if (d === 1) // Catch non-cyclic numbers\n return 0;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n var rem = 10 % d;\n var t = 1;\n\n for (; rem !== 1; t++) {\n rem = rem * 10 % d;\n\n if (t > MAX_CYCLE_LEN)\n return 0; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return t;\n }\n\n\n function cycleStart(n, d, len) {\n\n var rem1 = 1;\n var rem2 = modpow(10, len, d);\n\n for (var t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return t;\n\n rem1 = rem1 * 10 % d;\n rem2 = rem2 * 10 % d;\n }\n return 0;\n }\n\n function gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a%= b;\n if (!a)\n return b;\n b%= a;\n if (!b)\n return a;\n }\n };\n\n /**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\n function Fraction(a, b) {\n\n parse(a, b);\n\n if (this instanceof Fraction) {\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse variable a\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n } else {\n return newFraction(P['s'] * P['n'], P['d']);\n }\n }\n\n Fraction['DivisionByZero'] = new Error(\"Division by Zero\");\n Fraction['InvalidParameter'] = new Error(\"Invalid argument\");\n Fraction['NonIntegerParameter'] = new Error(\"Parameters must be integer\");\n\n Fraction.prototype = {\n\n \"s\": 1,\n \"n\": 0,\n \"d\": 1,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function() {\n\n return newFraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function() {\n\n return newFraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function() {\n return newFraction(this['s'] * this['n'], this['d']);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n **/\n \"mod\": function(a, b) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return new Fraction(NaN);\n }\n\n if (a === undefined) {\n return newFraction(this[\"s\"] * this[\"n\"] % this[\"d\"], 1);\n }\n\n parse(a, b);\n if (0 === P[\"n\"] && 0 === this[\"d\"]) {\n throw Fraction['DivisionByZero'];\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return newFraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function(a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return newFraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function(a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === 0 && this[\"n\"] === 0) {\n return newFraction(0, 1);\n }\n return newFraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.ceil(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.floor(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational numbers\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.round(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function() {\n\n return newFraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some rational exponent, if possible\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function(a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === 1) {\n\n if (P['s'] < 0) {\n return newFraction(Math.pow(this['s'] * this[\"d\"], P['n']), Math.pow(this[\"n\"], P['n']));\n } else {\n return newFraction(Math.pow(this['s'] * this[\"n\"], P['n']), Math.pow(this[\"d\"], P['n']));\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // <=> (-1)^(c/d) * (a/b)^(c/d) = x\n // <=> (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x # rotate 1 by 180\u00B0\n // <=> (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula in Q ( https://proofwiki.org/wiki/De_Moivre%27s_Formula/Rational_Index )\n // From which follows that only for c=0 the root is non-complex. c/d is a reduced fraction, so that sin(c/dpi)=0 occurs for d=1, which is handled by our trivial case.\n if (this['s'] < 0) return null;\n\n // Now prime factor n and d\n var N = factorize(this['n']);\n var D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n var n = 1;\n var d = 1;\n for (var k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = 0;\n break;\n }\n N[k]*= P['n'];\n\n if (N[k] % P['d'] === 0) {\n N[k]/= P['d'];\n } else return null;\n n*= Math.pow(k, N[k]);\n }\n\n for (var k in D) {\n if (k === '1') continue;\n D[k]*= P['n'];\n\n if (D[k] % P['d'] === 0) {\n D[k]/= P['d'];\n } else return null;\n d*= Math.pow(k, D[k]);\n }\n\n if (P['s'] < 0) {\n return newFraction(d, n);\n }\n return newFraction(n, d);\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function(a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"]; // Same as compare() === 0\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"compare\": function(a, b) {\n\n parse(a, b);\n var t = (this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"]);\n return (0 < t) - (t < 0);\n },\n\n \"simplify\": function(eps) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return this;\n }\n\n eps = eps || 0.001;\n\n var thisABS = this['abs']();\n var cont = thisABS['toContinued']();\n\n for (var i = 1; i < cont.length; i++) {\n\n var s = newFraction(cont[i - 1], 1);\n for (var k = i - 2; k >= 0; k--) {\n s = s['inverse']()['add'](cont[k]);\n }\n\n if (s['sub'](thisABS)['abs']().valueOf() < eps) {\n return s['mul'](this['s']);\n }\n }\n return this;\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function(a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function() {\n\n return this[\"s\"] * this[\"n\"] / this[\"d\"];\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction(true) => \"4 1/3\"\n **/\n 'toFraction': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n str+= \" \";\n n%= d;\n }\n\n str+= n;\n str+= '/';\n str+= d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n n%= d;\n }\n\n str+= \"\\\\frac{\";\n str+= n;\n str+= '}{';\n str+= d;\n str+= '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function() {\n\n var t;\n var a = this['n'];\n var b = this['d'];\n var res = [];\n\n if (isNaN(a) || isNaN(b)) {\n return res;\n }\n\n do {\n res.push(Math.floor(a / b));\n t = a % b;\n a = b;\n b = t;\n } while (a !== 1);\n\n return res;\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function(dec) {\n\n var N = this[\"n\"];\n var D = this[\"d\"];\n\n if (isNaN(N) || isNaN(D)) {\n return \"NaN\";\n }\n\n dec = dec || 15; // 15 = decimal places when no repetation\n\n var cycLen = cycleLen(N, D); // Cycle length\n var cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n var str = this['s'] < 0 ? \"-\" : \"\";\n\n str+= N / D | 0;\n\n N%= D;\n N*= 10;\n\n if (N)\n str+= \".\";\n\n if (cycLen) {\n\n for (var i = cycOff; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \"(\";\n for (var i = cycLen; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \")\";\n } else {\n for (var i = dec; N && i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n }\n return str;\n }\n };\n\n if (typeof define === \"function\" && define[\"amd\"]) {\n define([], function() {\n return Fraction;\n });\n } else if (typeof exports === \"object\") {\n Object.defineProperty(Fraction, \"__esModule\", { 'value': true });\n Fraction['default'] = Fraction;\n Fraction['Fraction'] = Fraction;\n module['exports'] = Fraction;\n } else {\n root['Fraction'] = Fraction;\n }\n\n})(this);\n", "'use strict';\n\nconst ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\toverline: [53, 55],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16 +\n\t\t\t\t\t(36 * Math.round(red / 255 * 5)) +\n\t\t\t\t\t(6 * Math.round(green / 255 * 5)) +\n\t\t\t\t\tMath.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /(?[a-f\\d]{6}|[a-f\\d]{3})/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet {colorString} = matches.groups;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = colorString.split('').map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getKeysOfEnumerableProperties = (object, compareKeys) => {\n const rawKeys = Object.keys(object);\n const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(object).forEach(symbol => {\n if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n keys.push(symbol);\n }\n });\n }\n return keys;\n};\n\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printIteratorEntries(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer,\n // Too bad, so sad that separator for ECMAScript Map has been ' => '\n // What a distracting diff if you change a data structure to/from\n // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n separator = ': '\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n const name = printer(\n current.value[0],\n config,\n indentationNext,\n depth,\n refs\n );\n const value = printer(\n current.value[1],\n config,\n indentationNext,\n depth,\n refs\n );\n result += name + separator + value;\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\nfunction printIteratorValues(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n result += printer(current.value, config, indentationNext, depth, refs);\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n let result = '';\n if (list.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < list.length; i++) {\n result += indentationNext;\n if (i === config.maxWidth) {\n result += '\u2026';\n break;\n }\n if (i in list) {\n result += printer(list[i], config, indentationNext, depth, refs);\n }\n if (i < list.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n let result = '';\n const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n if (keys.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = printer(key, config, indentationNext, depth, refs);\n const value = printer(val[key], config, indentationNext, depth, refs);\n result += `${indentationNext + name}: ${value}`;\n if (i < keys.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst asymmetricMatcher =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('jest.asymmetricMatcher')\n : 0x1357a5;\nconst SPACE = ' ';\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n const stringedValue = val.toString();\n if (\n stringedValue === 'ArrayContaining' ||\n stringedValue === 'ArrayNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}[${(0, _collections.printListItems)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (\n stringedValue === 'ObjectContaining' ||\n stringedValue === 'ObjectNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n if (\n stringedValue === 'StringMatching' ||\n stringedValue === 'StringNotMatching'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (\n stringedValue === 'StringContaining' ||\n stringedValue === 'StringNotContaining'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (typeof val.toAsymmetricMatcher !== 'function') {\n throw new Error(\n `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n );\n }\n return val.toAsymmetricMatcher();\n};\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === asymmetricMatcher;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\nconst testName = name =>\n OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\nconst test = val =>\n val &&\n val.constructor &&\n !!val.constructor.name &&\n testName(val.constructor.name);\nexports.test = test;\nconst isNamedNodeMap = collection =>\n collection.constructor.name === 'NamedNodeMap';\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n const name = collection.constructor.name;\n if (++depth > config.maxDepth) {\n return `[${name}]`;\n }\n return (\n (config.min ? '' : name + SPACE) +\n (OBJECT_NAMES.indexOf(name) !== -1\n ? `{${(0, _collections.printObjectProperties)(\n isNamedNodeMap(collection)\n ? Array.from(collection).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {})\n : {\n ...collection\n },\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`\n : `[${(0, _collections.printListItems)(\n Array.from(collection),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`)\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = escapeHTML;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction escapeHTML(str) {\n return str.replace(//g, '>');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printText =\n exports.printProps =\n exports.printElementAsLeaf =\n exports.printElement =\n exports.printComment =\n exports.printChildren =\n void 0;\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n const indentationNext = indentation + config.indent;\n const colors = config.colors;\n return keys\n .map(key => {\n const value = props[key];\n let printed = printer(value, config, indentationNext, depth, refs);\n if (typeof value !== 'string') {\n if (printed.indexOf('\\n') !== -1) {\n printed =\n config.spacingOuter +\n indentationNext +\n printed +\n config.spacingOuter +\n indentation;\n }\n printed = `{${printed}}`;\n }\n return `${\n config.spacingInner +\n indentation +\n colors.prop.open +\n key +\n colors.prop.close\n }=${colors.value.open}${printed}${colors.value.close}`;\n })\n .join('');\n};\n\n// Return empty string if children is empty.\nexports.printProps = printProps;\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n children\n .map(\n child =>\n config.spacingOuter +\n indentation +\n (typeof child === 'string'\n ? printText(child, config)\n : printer(child, config, indentation, depth, refs))\n )\n .join('');\nexports.printChildren = printChildren;\nconst printText = (text, config) => {\n const contentColor = config.colors.content;\n return (\n contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n );\n};\nexports.printText = printText;\nconst printComment = (comment, config) => {\n const commentColor = config.colors.comment;\n return `${commentColor.open}${\n commentColor.close\n }`;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nexports.printComment = printComment;\nconst printElement = (\n type,\n printedProps,\n printedChildren,\n config,\n indentation\n) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${\n printedProps &&\n tagColor.close +\n printedProps +\n config.spacingOuter +\n indentation +\n tagColor.open\n }${\n printedChildren\n ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}${tagColor.close}`;\n};\nexports.printElement = printElement;\nconst printElementAsLeaf = (type, config) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${tagColor.close} \u2026${tagColor.open} />${tagColor.close}`;\n};\nexports.printElementAsLeaf = printElementAsLeaf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst testHasAttribute = val => {\n try {\n return typeof val.hasAttribute === 'function' && val.hasAttribute('is');\n } catch {\n return false;\n }\n};\nconst testNode = val => {\n const constructorName = val.constructor.name;\n const {nodeType, tagName} = val;\n const isCustomElement =\n (typeof tagName === 'string' && tagName.includes('-')) ||\n testHasAttribute(val);\n return (\n (nodeType === ELEMENT_NODE &&\n (ELEMENT_REGEXP.test(constructorName) || isCustomElement)) ||\n (nodeType === TEXT_NODE && constructorName === 'Text') ||\n (nodeType === COMMENT_NODE && constructorName === 'Comment') ||\n (nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment')\n );\n};\nconst test = val => val?.constructor?.name && testNode(val);\nexports.test = test;\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n if (nodeIsText(node)) {\n return (0, _markup.printText)(node.data, config);\n }\n if (nodeIsComment(node)) {\n return (0, _markup.printComment)(node.data, config);\n }\n const type = nodeIsFragment(node)\n ? 'DocumentFragment'\n : node.tagName.toLowerCase();\n if (++depth > config.maxDepth) {\n return (0, _markup.printElementAsLeaf)(type, config);\n }\n return (0, _markup.printElement)(\n type,\n (0, _markup.printProps)(\n nodeIsFragment(node)\n ? []\n : Array.from(node.attributes)\n .map(attr => attr.name)\n .sort(),\n nodeIsFragment(node)\n ? {}\n : Array.from(node.attributes).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {}),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n Array.prototype.slice.call(node.childNodes || node.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\nconst getImmutableName = name => `Immutable.${name}`;\nconst printAsLeaf = name => `[${name}]`;\nconst SPACE = ' ';\nconst LAZY = '\u2026'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}{${(0,\n _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n let i = 0;\n return {\n next() {\n if (i < val._keys.length) {\n const key = val._keys[i++];\n return {\n done: false,\n value: [key, val.get(key)]\n };\n }\n return {\n done: true,\n value: undefined\n };\n }\n };\n}\nconst printImmutableRecord = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n) => {\n // _name property is defined only for an Immutable Record instance\n // which was constructed with a second optional descriptive name arg\n const name = getImmutableName(val._name || 'Record');\n return ++depth > config.maxDepth\n ? printAsLeaf(name)\n : `${name + SPACE}{${(0, _collections.printIteratorEntries)(\n getRecordEntries(val),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n};\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n const name = getImmutableName('Seq');\n if (++depth > config.maxDepth) {\n return printAsLeaf(name);\n }\n if (val[IS_KEYED_SENTINEL]) {\n return `${name + SPACE}{${\n // from Immutable collection of entries or from ECMAScript object\n val._iter || val._object\n ? (0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }}`;\n }\n return `${name + SPACE}[${\n val._iter ||\n // from Immutable collection of values\n val._array ||\n // from ECMAScript array\n val._collection ||\n // from ECMAScript collection in immutable v4\n val._iterable // from ECMAScript collection in immutable v3\n ? (0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }]`;\n};\nconst printImmutableValues = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}[${(0,\n _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n if (val[IS_MAP_SENTINEL]) {\n return printImmutableEntries(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n );\n }\n if (val[IS_LIST_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'List'\n );\n }\n if (val[IS_SET_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n );\n }\n if (val[IS_STACK_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'Stack'\n );\n }\n if (val[IS_SEQ_SENTINEL]) {\n return printImmutableSeq(val, config, indentation, depth, refs, printer);\n }\n\n // For compatibility with immutable v3 and v4, let record be the default.\n return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nexports.serialize = serialize;\nconst test = val =>\n val &&\n (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar ReactIs = _interopRequireWildcard(require('react-is'));\nvar _markup = require('./lib/markup');\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== 'function') return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function (nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n return {default: obj};\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor =\n Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n if (Array.isArray(arg)) {\n arg.forEach(item => {\n getChildren(item, children);\n });\n } else if (arg != null && arg !== false) {\n children.push(arg);\n }\n return children;\n};\nconst getType = element => {\n const type = element.type;\n if (typeof type === 'string') {\n return type;\n }\n if (typeof type === 'function') {\n return type.displayName || type.name || 'Unknown';\n }\n if (ReactIs.isFragment(element)) {\n return 'React.Fragment';\n }\n if (ReactIs.isSuspense(element)) {\n return 'React.Suspense';\n }\n if (typeof type === 'object' && type !== null) {\n if (ReactIs.isContextProvider(element)) {\n return 'Context.Provider';\n }\n if (ReactIs.isContextConsumer(element)) {\n return 'Context.Consumer';\n }\n if (ReactIs.isForwardRef(element)) {\n if (type.displayName) {\n return type.displayName;\n }\n const functionName = type.render.displayName || type.render.name || '';\n return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';\n }\n if (ReactIs.isMemo(element)) {\n const functionName =\n type.displayName || type.type.displayName || type.type.name || '';\n return functionName !== '' ? `Memo(${functionName})` : 'Memo';\n }\n }\n return 'UNDEFINED';\n};\nconst getPropKeys = element => {\n const {props} = element;\n return Object.keys(props)\n .filter(key => key !== 'children' && props[key] !== undefined)\n .sort();\n};\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(getType(element), config)\n : (0, _markup.printElement)(\n getType(element),\n (0, _markup.printProps)(\n getPropKeys(element),\n element.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n getChildren(element.props.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val != null && ReactIs.isElement(val);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Child can be `number` in Stack renderer but not in Fiber renderer.\n\nconst testSymbol =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('react.test.json')\n : 0xea71357;\nconst getPropKeys = object => {\n const {props} = object;\n return props\n ? Object.keys(props)\n .filter(key => props[key] !== undefined)\n .sort()\n : [];\n};\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(object.type, config)\n : (0, _markup.printElement)(\n object.type,\n object.props\n ? (0, _markup.printProps)(\n getPropKeys(object),\n object.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n object.children\n ? (0, _markup.printChildren)(\n object.children,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === testSymbol;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = exports.DEFAULT_OPTIONS = void 0;\nexports.format = format;\nexports.plugins = void 0;\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\nvar _collections = require('./collections');\nvar _AsymmetricMatcher = _interopRequireDefault(\n require('./plugins/AsymmetricMatcher')\n);\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\nvar _ReactTestComponent = _interopRequireDefault(\n require('./plugins/ReactTestComponent')\n);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\nconst getConstructorName = val =>\n (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n\n/* global window */\n/** Is val is equal to global window object? Works even if it does not exist :) */\nconst isWindow = val => typeof window !== 'undefined' && val === window;\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\nclass PrettyFormatPluginError extends Error {\n constructor(message, stack) {\n super(message);\n this.stack = stack;\n this.name = this.constructor.name;\n }\n}\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\nfunction printNumber(val) {\n return Object.is(val, -0) ? '-0' : String(val);\n}\nfunction printBigInt(val) {\n return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n if (!printFunctionName) {\n return '[Function]';\n }\n return `[Function ${val.name || 'anonymous'}]`;\n}\nfunction printSymbol(val) {\n return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\nfunction printError(val) {\n return `[${errorToString.call(val)}]`;\n}\n\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n if (val === true || val === false) {\n return `${val}`;\n }\n if (val === undefined) {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n const typeOf = typeof val;\n if (typeOf === 'number') {\n return printNumber(val);\n }\n if (typeOf === 'bigint') {\n return printBigInt(val);\n }\n if (typeOf === 'string') {\n if (escapeString) {\n return `\"${val.replace(/\"|\\\\/g, '\\\\$&')}\"`;\n }\n return `\"${val}\"`;\n }\n if (typeOf === 'function') {\n return printFunction(val, printFunctionName);\n }\n if (typeOf === 'symbol') {\n return printSymbol(val);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object WeakMap]') {\n return 'WeakMap {}';\n }\n if (toStringed === '[object WeakSet]') {\n return 'WeakSet {}';\n }\n if (\n toStringed === '[object Function]' ||\n toStringed === '[object GeneratorFunction]'\n ) {\n return printFunction(val, printFunctionName);\n }\n if (toStringed === '[object Symbol]') {\n return printSymbol(val);\n }\n if (toStringed === '[object Date]') {\n return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n }\n if (toStringed === '[object Error]') {\n return printError(val);\n }\n if (toStringed === '[object RegExp]') {\n if (escapeRegex) {\n // https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n return regExpToString.call(val);\n }\n if (val instanceof Error) {\n return printError(val);\n }\n return null;\n}\n\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\nfunction printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n) {\n if (refs.indexOf(val) !== -1) {\n return '[Circular]';\n }\n refs = refs.slice();\n refs.push(val);\n const hitMaxDepth = ++depth > config.maxDepth;\n const min = config.min;\n if (\n config.callToJSON &&\n !hitMaxDepth &&\n val.toJSON &&\n typeof val.toJSON === 'function' &&\n !hasCalledToJSON\n ) {\n return printer(val.toJSON(), config, indentation, depth, refs, true);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth\n ? '[Arguments]'\n : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth\n ? `[${val.constructor.name}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && val.constructor.name === 'Array'\n ? ''\n : `${val.constructor.name} `\n }[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (toStringed === '[object Map]') {\n return hitMaxDepth\n ? '[Map]'\n : `Map {${(0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer,\n ' => '\n )}}`;\n }\n if (toStringed === '[object Set]') {\n return hitMaxDepth\n ? '[Set]'\n : `Set {${(0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n\n // Avoid failure to serialize global window object in jsdom test environment.\n // For example, not even relevant if window is prop of React element.\n return hitMaxDepth || isWindow(val)\n ? `[${getConstructorName(val)}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && getConstructorName(val) === 'Object'\n ? ''\n : `${getConstructorName(val)} `\n }{${(0, _collections.printObjectProperties)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction isNewPlugin(plugin) {\n return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n let printed;\n try {\n printed = isNewPlugin(plugin)\n ? plugin.serialize(val, config, indentation, depth, refs, printer)\n : plugin.print(\n val,\n valChild => printer(valChild, config, indentation, depth, refs),\n str => {\n const indentationNext = indentation + config.indent;\n return (\n indentationNext +\n str.replace(NEWLINE_REGEXP, `\\n${indentationNext}`)\n );\n },\n {\n edgeSpacing: config.spacingOuter,\n min: config.min,\n spacing: config.spacingInner\n },\n config.colors\n );\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n if (typeof printed !== 'string') {\n throw new Error(\n `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n );\n }\n return printed;\n}\nfunction findPlugin(plugins, val) {\n for (let p = 0; p < plugins.length; p++) {\n try {\n if (plugins[p].test(val)) {\n return plugins[p];\n }\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n }\n return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n const plugin = findPlugin(config.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, config, indentation, depth, refs);\n }\n const basicResult = printBasicValue(\n val,\n config.printFunctionName,\n config.escapeRegex,\n config.escapeString\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n );\n}\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\n\n// could be replaced by `satisfies` operator in the future: https://github.com/microsoft/TypeScript/issues/47920\nconst toOptionsSubtype = options => options;\nconst DEFAULT_OPTIONS = toOptionsSubtype({\n callToJSON: true,\n compareKeys: undefined,\n escapeRegex: false,\n escapeString: true,\n highlight: false,\n indent: 2,\n maxDepth: Infinity,\n maxWidth: Infinity,\n min: false,\n plugins: [],\n printBasicPrototype: true,\n printFunctionName: true,\n theme: DEFAULT_THEME\n});\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nfunction validateOptions(options) {\n Object.keys(options).forEach(key => {\n if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n throw new Error(`pretty-format: Unknown option \"${key}\".`);\n }\n });\n if (options.min && options.indent !== undefined && options.indent !== 0) {\n throw new Error(\n 'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n );\n }\n if (options.theme !== undefined) {\n if (options.theme === null) {\n throw new Error('pretty-format: Option \"theme\" must not be null.');\n }\n if (typeof options.theme !== 'object') {\n throw new Error(\n `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n );\n }\n }\n}\nconst getColorsHighlight = options =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n const value =\n options.theme && options.theme[key] !== undefined\n ? options.theme[key]\n : DEFAULT_THEME[key];\n const color = value && _ansiStyles.default[value];\n if (\n color &&\n typeof color.close === 'string' &&\n typeof color.open === 'string'\n ) {\n colors[key] = color;\n } else {\n throw new Error(\n `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n );\n }\n return colors;\n }, Object.create(null));\nconst getColorsEmpty = () =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n colors[key] = {\n close: '',\n open: ''\n };\n return colors;\n }, Object.create(null));\nconst getPrintFunctionName = options =>\n options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\nconst getEscapeRegex = options =>\n options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\nconst getEscapeString = options =>\n options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\nconst getConfig = options => ({\n callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n compareKeys:\n typeof options?.compareKeys === 'function' || options?.compareKeys === null\n ? options.compareKeys\n : DEFAULT_OPTIONS.compareKeys,\n escapeRegex: getEscapeRegex(options),\n escapeString: getEscapeString(options),\n indent: options?.min\n ? ''\n : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n min: options?.min ?? DEFAULT_OPTIONS.min,\n plugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n printBasicPrototype: options?.printBasicPrototype ?? true,\n printFunctionName: getPrintFunctionName(options),\n spacingInner: options?.min ? ' ' : '\\n',\n spacingOuter: options?.min ? '' : '\\n'\n});\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\nfunction format(val, options) {\n if (options) {\n validateOptions(options);\n if (options.plugins) {\n const plugin = findPlugin(options.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, getConfig(options), '', 0, []);\n }\n }\n }\n const basicResult = printBasicValue(\n val,\n getPrintFunctionName(options),\n getEscapeRegex(options),\n getEscapeString(options)\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(val, getConfig(options), '', 0, []);\n}\nconst plugins = {\n AsymmetricMatcher: _AsymmetricMatcher.default,\n DOMCollection: _DOMCollection.default,\n DOMElement: _DOMElement.default,\n Immutable: _Immutable.default,\n ReactElement: _ReactElement.default,\n ReactTestComponent: _ReactTestComponent.default\n};\nexports.plugins = plugins;\nvar _default = format;\nexports.default = _default;\n", "import Fraction from 'fraction.js'\n\nexport function radian(angle: string): number {\n const coefficient = piCoefficient(angle)\n const fraction = new Fraction(coefficient).valueOf()\n\n return fraction * Math.PI\n}\n\n// TODO: neverthrow \u5316\nexport function angleDenominator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return 1\n } else if (split.length === 2) {\n return parseInt(split[1])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\n// TODO: neverthrow \u5316\nexport function angleNumerator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return parseInt(split[0])\n } else if (split.length === 2) {\n return parseInt(split[0])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\nexport function isAngleLessThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() < new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isAngleGreaterThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() > new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isValidAngle(angle: string): boolean {\n if (angle === '0') return true\n if (!/\u03C0/.test(angle)) return false\n\n try {\n const coefficient = piCoefficient(angle)\n new Fraction(coefficient).valueOf()\n\n return true\n } catch (e) {\n return false\n }\n}\n\nexport function piCoefficient(angle: string): string {\n return angle.replace(/(\\d+)\u03C0/g, '$1').replace(/\u03C0/g, '1')\n}\n\nexport function reduceAngle(angle: string): string {\n try {\n const coefficient = piCoefficient(angle)\n const reduced = new Fraction(coefficient).toFraction()\n const split = reduced.split('/')\n\n let numerator: string\n if (split[0] === '0') {\n numerator = '0'\n } else if (split[0] === '1') {\n numerator = `\u03C0`\n } else if (split[0] === '-1') {\n numerator = `-\u03C0`\n } else {\n numerator = `${split[0]}\u03C0`\n }\n\n if (split.length === 1) {\n return numerator\n } else {\n return `${numerator}/${split[1]}`\n }\n } catch (e) {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n", "type UnicodeFraction = {character: string; ref: string; value: number}\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const UNICODE_FRACTIONS = [\n {character: '\\u00BD', ref: '\u00BD', expanded: '1/2', value: 1 / 2},\n {character: '\\u00BC', ref: '\u00BC', expanded: '1/4', value: 1 / 4},\n {character: '\\u00BE', ref: '\u00BE', expanded: '3/4', value: 3 / 4},\n {character: '\\u2153', ref: '\u2153', expanded: '1/3', value: 1 / 3},\n {character: '\\u2154', ref: '\u2154', expanded: '2/3', value: 2 / 3},\n {character: '\\u2155', ref: '\u2155', expanded: '1/5', value: 1 / 5},\n {character: '\\u2156', ref: '\u2156', expanded: '2/5', value: 2 / 5},\n {character: '\\u2157', ref: '\u2157', expanded: '3/5', value: 3 / 5},\n {character: '\\u2158', ref: '\u2158', expanded: '4/5', value: 4 / 5},\n {character: '\\u2159', ref: '\u2159', expanded: '1/6', value: 1 / 6},\n {character: '\\u215A', ref: '\u215A', expanded: '5/6', value: 5 / 6},\n {character: '\\u2150', ref: '\u2150', expanded: '1/7', value: 1 / 7},\n {character: '\\u215B', ref: '\u215B', expanded: '1/8', value: 1 / 8},\n {character: '\\u215C', ref: '\u215C', expanded: '3/8', value: 3 / 8},\n {character: '\\u215D', ref: '\u215D', expanded: '5/8', value: 5 / 8},\n {character: '\\u215E', ref: '\u215E', expanded: '7/8', value: 7 / 8},\n {character: '\\u2151', ref: '\u2151', expanded: '1/9', value: 1 / 9},\n {character: '\\u2152', ref: '\u2152', expanded: '1/10', value: 1 / 10},\n]\n\n/**\n * Stores formatting options, for determining what string output should look\n * like.\n */\nexport class Format {\n /**\n * Returns an approximated result, but with the constraint that when it\n * changes slightly it should \"look the same\". (It should look good when\n * varying and animated.)\n */\n static readonly CONSISTENT = new Format(false, 0, 2, ', ')\n\n /**\n * Returns an accurate result, but favoring looking nice over being small.\n */\n static readonly EXACT = new Format(true, 0, undefined, ', ')\n\n /**\n * Returns an accurate result, favoring being small over looking nice.\n */\n static readonly MINIFIED = new Format(true, 0, undefined, ',')\n\n /**\n * Returns an approximated result, strongly favoring looking nice.\n */\n static readonly SIMPLIFIED = new Format(true, 0.0005, 3, ', ')\n\n /**\n * Parses the given text into a float. Works for text created by\n * [[formatFloat]].\n */\n static parseFloat(text: string): number {\n if (text.length === 0) {\n throw new Error(`Not a number: '${text}'`)\n }\n if (text[0] === '-') {\n return -Format.parseFloat(text.substr(1))\n }\n if (text[0] === '\\u221A') {\n return Math.sqrt(Format.parseFloat(text.substr(1)))\n }\n\n const fraction = Format.matchUnicodeFraction(e => e.character === text)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const result = parseFloat(text)\n if (isNaN(result)) {\n throw new Error(`Not a number: '${text}'`)\n }\n return result\n }\n\n /**\n * Corrects a value to a nearby simple fraction or root thereof, such as\n * sqrt(1/2), so it can be printed compactly.\n *\n * @param value The value to round.\n * @param epsilon The maximum offset error introduced by the rounding.\n */\n static simplifyByRounding(value: number, epsilon: number): number {\n if (value < 0) {\n return -Format.simplifyByRounding(-value, epsilon)\n }\n\n const r = value % 1\n if (r <= epsilon || 1 - r <= epsilon) {\n return Math.round(value)\n }\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return Math.sqrt(rootFraction.value)\n }\n\n return value\n }\n\n /**\n * Returns the first element of an array matching the given predicate, or else\n * returns undefined.\n *\n * @hidden\n */\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n /**\n * @param allowAbbreviation Should outputs be shortened, if possible?\n * @param maxAbbreviationError How much error is abbreviating allowed to introduce?\n * @param fixedDigits Use toFixed? How many digits?\n * @param itemSeparator What should list items be separated by?\n */\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator: string,\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n formatFloat(f: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateFloat(f, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return f.toFixed(this.fixedDigits)\n }\n return String(f)\n }\n\n /**\n * Returns a string representation of a float, taking advantage of unicode\n * fractions and square roots.\n *\n * @param value The value to represent as a string.\n * @param epsilon The maximum error introduced by using an expression.\n * @param digits digits The number of digits to use if no expression matches.\n */\n private abbreviateFloat(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateFloat(-value, epsilon, digits)}`\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {UNICODE_FRACTIONS} from './format'\n\ntype UnicodeFraction = {character: string; ref: string; value: number}\n\nexport class NumberFormatter {\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator = ', ',\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n format(n: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateNumber(n, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return n.toFixed(this.fixedDigits)\n }\n return String(n)\n }\n\n private abbreviateNumber(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateNumber(-value, epsilon, digits)}`\n\n const fraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {NumberFormatter} from './number-formatter'\nimport {ok, err, Result} from 'neverthrow'\n\ntype FormatOptions = {\n allowAbbreviation?: boolean\n maxAbbreviationError?: number\n fixedDigits?: number | undefined\n}\n\nconst DEFAULT_FORMAT_OPTIONS = {\n allowAbbreviation: true,\n maxAbbreviationError: 0,\n fixedDigits: undefined,\n}\n\nexport class Complex {\n /**\n * Complex { real: 0, imag: 0 }\n */\n static readonly ZERO = new Complex(0, 0)\n /**\n * Complex { real: 1, imag: 0 }\n */\n static readonly ONE = new Complex(1, 0)\n /**\n * The imaginary unit.\n */\n static readonly I = new Complex(0, 1)\n\n /**\n * The real part of the Complex number.\n */\n public real: number\n /**\n * The imaginary part of the Complex number.\n */\n public imag: number\n\n /**\n * Converts the given value to a Complex value.\n *\n * @param value - The value to convert to a Complex value\n */\n static from(value: number | Complex): Complex {\n if (typeof value === 'number') {\n return new Complex(value, 0)\n }\n\n return value\n }\n\n /**\n * Returns the real part of a Complex or a number value.\n *\n * @param value - The value to get the real part of\n */\n static real(value: number | Complex): number {\n if (typeof value === 'number') {\n return value\n }\n\n return value.real\n }\n\n /**\n * Returns the imaginary part of a Complex value, or else 0 for number values.\n *\n * @param value - The value to get the imaginary part of\n */\n static imag(value: number | Complex): number {\n if (typeof value === 'number') {\n return 0\n }\n\n return value.imag\n }\n\n /**\n * Returns a new Complex number with the given magnitude and phase.\n *\n * @param magnitude - The magnitude of the Complex number\n * @param phase - The phase of the Complex number\n */\n static polar(magnitude: number, phase: number): Complex {\n const [cos, sin] = this.cosAndSin(phase)\n\n return new Complex(magnitude * cos, magnitude * sin)\n }\n\n private static cosAndSin(radians: number): number[] {\n const unit = Math.PI / 4\n const i = Math.round(radians / unit)\n if (i * unit === radians) {\n const s = Math.sqrt(0.5)\n const snaps = [\n [1, 0], // 0\n [s, s], // \u03C0/4\n [0, 1], // \u03C0/2\n [-s, s], // 3\u03C0/4\n [-1, 0], // \u03C0\n [-s, -s], // 5\u03C0/4\n [0, -1], // 3\u03C0/2\n [s, -s], // 7\u03C0/4\n ]\n return snaps[i & 7]\n }\n return [Math.cos(radians), Math.sin(radians)]\n }\n\n /**\n * @param real - The real part of the Complex number\n * @param imag - The imaginary part of the Complex number\n */\n constructor(real: number, imag: number) {\n this.real = real\n this.imag = imag\n\n this.isApproximatelyEqualTo = this.nearlyEq // alias for nearlyEq\n this.isEqualTo = this.eq // alias for eq\n this.conj = this.conjugate // alias for conjugate\n this.plus = this.add // alias for add\n // aliases for sub\n this.subtract = this.sub\n this.minus = this.sub\n // aliases for mult\n this.multiply = this.mult\n this.times = this.mult\n this.dividedBy = this.div // alias for div\n this.magnitude = this.abs // alias for abs\n this.norm2 = this.abs2 // alias for abs2\n // aliases for arg\n this.angle = this.arg\n this.phase = this.arg\n }\n\n /**\n * Returns true if complex number is equal to other.\n *\n * @param other - The other value to compare with\n */\n eq(other: unknown): boolean {\n if (typeof other === 'number') {\n return this.real === other && this.imag === 0\n }\n if (other instanceof Complex) {\n return this.real === other.real && this.imag === other.imag\n }\n return false\n }\n\n isEqualTo = this.eq.bind(this)\n\n /**\n * Returns true if the Complex number is close to the value of other.\n *\n * @param other - The other value to compare with\n */\n nearlyEq(other: number | Complex | unknown, epsilon: number): boolean {\n if (typeof other === 'number' || other instanceof Complex) {\n const d = this.sub(Complex.from(other))\n return Math.abs(d.real) <= epsilon && Math.abs(d.imag) <= epsilon && d.abs() <= epsilon\n }\n return false\n }\n\n isApproximatelyEqualTo = this.nearlyEq.bind(this)\n\n /**\n * Returns the complex conjugate.\n *\n * @returns A new Complex representing the complex conjugate of this complex number\n */\n conjugate(): Complex {\n return new Complex(this.real, -this.imag)\n }\n\n conj = this.conjugate.bind(this)\n\n /**\n * Returns negation of the value.\n *\n * @returns A new Complex representing the negation of this complex number.\n */\n neg(): Complex {\n return new Complex(-this.real, -this.imag)\n }\n\n /**\n * Returns the sum of this complex number and value.\n *\n * @param value - The addend number.\n * @returns A new Complex representing the sum of this complex number and value.\n */\n add(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real + c.real, this.imag + c.imag)\n }\n\n plus = this.add.bind(this)\n\n /**\n * Returns the subtraction of this complex number and value.\n *\n * @param value - The subtrahend number.\n * @returns A new Complex representing the subtraction of this complex number and value.\n */\n sub(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real - c.real, this.imag - c.imag)\n }\n\n subtract = this.sub.bind(this)\n minus = this.sub.bind(this)\n\n /**\n * Returns the product of this complex number and value.\n *\n * @param value - The multiplier number.\n * @returns A new Complex representing the product of this complex number and value.\n */\n mult(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real * c.real - this.imag * c.imag, this.real * c.imag + this.imag * c.real)\n }\n\n multiply = this.mult.bind(this)\n times = this.mult.bind(this)\n\n /**\n * Returns a complex number divided by value.\n * If value is zero, returns an error.\n *\n * @param value - The divisor number.\n * @returns A Result object with the result of division or a division-by-zero error.\n * @example\n * ```\n * const res = new Complex(2, 3).div(2)\n * if (res.isOk()) {\n * console.log(res.value) // Complex { real: 1, imag: 1.5 }\n * } else {\n * console.error(res.error)\n * }\n * ```\n */\n div(value: number | Complex): Result {\n const c = Complex.from(value)\n const d = c.abs2()\n if (d === 0) {\n return err(Error('Division by Zero'))\n }\n\n const n = this.mult(c.conjugate())\n return ok(new Complex(n.real / d, n.imag / d))\n }\n\n dividedBy = this.div.bind(this)\n\n /**\n * Returns the absolute part of its polar form.\n *\n * @returns A number representing the absolute part of its polar form.\n * @example\n * ```\n * new Complex(-1, 0).abs() // 1\n * new Complex(3, 4).abs() // 5\n * ```\n */\n abs(): number {\n return Math.sqrt(this.abs2())\n }\n\n magnitude = this.abs.bind(this)\n\n /**\n * Returns square of the absolute value.\n *\n * @returns A number representing the square of the absolute value.\n * @example\n * ```\n * new Complex(-1, 0).abs2() // 1\n * new Complex(3, 4).abs2() // 25\n * ```\n */\n abs2(): number {\n return this.real * this.real + this.imag * this.imag\n }\n\n norm2 = this.abs2.bind(this)\n\n /**\n * Returns the angle part of its polar form.\n *\n * @returns A number representing the angle part of its polar form in radians.\n */\n arg(): number {\n return Math.atan2(this.imag, this.real)\n }\n\n angle = this.arg.bind(this)\n phase = this.arg.bind(this)\n\n /**\n * Returns the exponentiation of a complex number. That is c.pow(x) = c^x.\n *\n * @param exponent - the exponent number\n * @returns A number representing base taken to the power of exponent\n */\n pow(exponent: number | Complex): Complex {\n if (exponent === 0.5 && this.imag === 0 && this.real >= 0) {\n return new Complex(Math.sqrt(this.real), 0)\n }\n if (this.eq(Complex.ZERO)) {\n return Complex.ZERO\n }\n return this.ln().mult(Complex.from(exponent)).exp()\n }\n\n /**\n * Returns e raised to the c power. That is c.exp() = e^c.\n */\n exp(): Complex {\n return Complex.polar(Math.exp(this.real), this.imag)\n }\n\n /**\n * Returns a string representing this complex number according to the specified format.\n *\n * @param options - An object that sets the format options for this complex number.\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).format() // '1+2i'\n * new Complex(1, 2).format({\n * allowAbbreviation: false,\n * fixedDigits: 2,\n * }) // '+1.00+2.00i'\n * ```\n */\n format(options: FormatOptions = DEFAULT_FORMAT_OPTIONS): string {\n const format = new NumberFormatter(\n options.allowAbbreviation === undefined ? DEFAULT_FORMAT_OPTIONS.allowAbbreviation : options.allowAbbreviation,\n options.maxAbbreviationError || 0,\n options.fixedDigits,\n )\n return format.allowAbbreviation ? this.toStringAllowSingleValue(format) : this.toStringBothValues(format)\n }\n\n /**\n * Returns a compact string representing this Complex number.\n *\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).toString() // '1+2i'\n * new Complex(Math.sqrt(1 / 2), -1 / 3).toString() // '\u221A\u00BD-\u2153i'\n * ```\n */\n toString(): string {\n const formatter = new NumberFormatter(\n DEFAULT_FORMAT_OPTIONS.allowAbbreviation,\n DEFAULT_FORMAT_OPTIONS.maxAbbreviationError,\n DEFAULT_FORMAT_OPTIONS.fixedDigits,\n )\n return this.toStringAllowSingleValue(formatter)\n }\n\n // log(c) = ln|c| + arg(c)i\n private ln(): Complex {\n return new Complex(Math.log(this.abs()), this.arg())\n }\n\n // If a complex number has only real or imaginary parts,\n // convert it to a string with only real or imaginary parts, such as '\u2153' or '-3i'.\n private toStringAllowSingleValue(formatter: NumberFormatter): string {\n if (this.canImagPartBeOmitted(formatter.maxAbbreviationError)) {\n return formatter.format(this.real)\n }\n\n if (this.canRealPartBeOmitted(formatter.maxAbbreviationError)) {\n let imagFactor\n\n if (this.isImagFactorCloseToOne(formatter.maxAbbreviationError)) {\n imagFactor = ''\n } else if (this.isImagFactorMinusOne(formatter.maxAbbreviationError)) {\n imagFactor = '-'\n } else {\n imagFactor = formatter.format(this.imag)\n }\n\n return `${imagFactor}i`\n }\n\n return this.toStringBothValues(formatter)\n }\n\n // Convert a complex number whose real and imaginary parts are not both zero into a string like '\u2153-3i'.\n private toStringBothValues(formatter: NumberFormatter): string {\n const imagSign = this.imag >= 0 ? '+' : '-'\n const imagFactor = this.canImagFactorBeOmitted(formatter) ? '' : formatter.format(Math.abs(this.imag))\n const realPlusSign = formatter.allowAbbreviation || formatter.fixedDigits === undefined || this.real < 0 ? '' : '+'\n\n return `${realPlusSign + formatter.format(this.real) + imagSign + imagFactor}i`\n }\n\n // Returns whether the real part of a complex number can be omitted.\n private canRealPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.real) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number can be omitted.\n private canImagPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to 1.\n private isImagFactorCloseToOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag - 1) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to -1.\n private isImagFactorMinusOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag + 1) <= maxAbbreviationError\n }\n\n // Returns true if the factor of the imaginary part can be omitted, such as i or -i.\n private canImagFactorBeOmitted(formatter: NumberFormatter): boolean {\n return formatter.allowAbbreviation && Math.abs(Math.abs(this.imag) - 1) <= formatter.maxAbbreviationError\n }\n}\n", "export const Config = {\n MAX_QUBIT_COUNT: 16,\n} as const\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {format as prettyFormat} from 'pretty-format'\n\nlet CONSTRUCTOR_CALLS_NESTING = 0\n\nexport class DetailedError extends Error {\n public details: string | undefined\n private detailsObj: unknown\n\n constructor(message: string, detailsObj: unknown) {\n super(message)\n\n this.detailsObj = detailsObj\n this.name = 'Error'\n this.message = message\n this.stack = new Error().stack\n if (this.stack !== undefined) {\n this.stack = this.stack.replace(/^Error\\n\\s+at new DetailedError (\\S+)\\s?\\n\\s+at /, '\\n ')\n }\n\n CONSTRUCTOR_CALLS_NESTING++\n try {\n this.details =\n CONSTRUCTOR_CALLS_NESTING === 1\n ? prettyFormat(this.detailsObj)\n : '(failed to prettyFormat detailsObj due to possibly re-entrancy)'\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error(ex)\n this.details = '(failed to prettyFormat detailsObj, see the console for details)'\n } finally {\n CONSTRUCTOR_CALLS_NESTING--\n }\n }\n}\n", "/**\n * Emit a custom event\n *\n * @param type The event type\n * @param detail Any details to pass along with the event\n * @param element The element to attach the event to\n */\nexport function emitEvent(type: string, detail = {}, element: Node = document): boolean {\n const event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail,\n })\n\n return element.dispatchEvent(event)\n}\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function hasOwnProperty(obj: unknown, key: K): obj is Record {\n return obj !== null && obj !== undefined && key in (obj as Record)\n}\n\nexport type ArrayIsh =\n | unknown[]\n | Float32Array\n | Float64Array\n | Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Uint8ClampedArray\n\nconst GENERIC_ARRAY_TYPES = [\n Float32Array,\n Float64Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Uint8ClampedArray,\n]\n\nexport function equate(subject: unknown, other: unknown): boolean {\n if (subject === other || (isExactlyNaN(subject) && isExactlyNaN(other))) {\n return true\n }\n\n const customEquality = tryEquateCustom(subject, other)\n if (customEquality !== undefined) {\n return customEquality\n }\n if (isAtomic(subject) || isAtomic(other) || !eqType(subject, other)) {\n return false\n }\n\n if (subject instanceof Map && other instanceof Map) {\n return equateMaps(subject, other)\n }\n if (subject instanceof Set && other instanceof Set) {\n return equateSets(subject, other)\n }\n if (isIndexable(subject) && isIndexable(other)) {\n return equateIndexables(subject, other)\n }\n\n return equateObjects(subject, other)\n}\n\nfunction isIndexable(value: unknown): value is ArrayIsh {\n return Array.isArray(value) || !GENERIC_ARRAY_TYPES.every(t => !(value instanceof t))\n}\n\nfunction isExactlyNaN(v: unknown) {\n return typeof v === 'number' && isNaN(v)\n}\n\nfunction tryEquateCustom(subject: unknown, other: unknown): boolean | undefined {\n if (!isAtomic(subject) && hasOwnProperty(subject, 'isEqualTo') && typeof subject.isEqualTo === 'function') {\n return subject.isEqualTo(other) as boolean\n }\n if (!isAtomic(other) && hasOwnProperty(other, 'isEqualTo') && typeof other.isEqualTo === 'function') {\n return other.isEqualTo(subject) as boolean\n }\n return undefined\n}\n\ntype Atomic = null | undefined | string | number | boolean\n\nfunction isAtomic(value: unknown): value is Atomic {\n return (\n value === null ||\n value === undefined ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n )\n}\n\nfunction equateMaps(subject: Map, other: Map) {\n if (subject.size !== other.size) {\n return false\n }\n for (const [k, v] of subject) {\n if (!other.has(k)) {\n return false\n }\n const otherV = other.get(k)\n if (!equate(v, otherV)) {\n return false\n }\n }\n return true\n}\n\nfunction equateSets(subject: Set, other: Set) {\n if (subject.size !== other.size) {\n return false\n }\n for (const k of subject) {\n if (!other.has(k)) {\n return false\n }\n }\n return true\n}\n\nfunction eqType(subject: unknown, other: unknown): boolean {\n return typeof subject === typeof other\n}\n\nfunction equateIndexables(subject: ArrayIsh, other: ArrayIsh) {\n if (subject.length !== other.length) {\n return false\n }\n for (let i = 0; i < subject.length; i++) {\n if (!equate(subject[i], other[i])) {\n return false\n }\n }\n return true\n}\n\nfunction objectKeys(obj: unknown) {\n const result = new Set()\n for (const k in obj as Record) {\n if (hasOwnProperty(obj, k)) {\n result.add(k)\n }\n }\n return result\n}\n\nfunction equateObjects(subject: unknown, other: unknown) {\n const keys = objectKeys(subject)\n if (!equateSets(keys, objectKeys(other))) {\n return false\n }\n\n for (const k of keys) {\n if (k === Symbol.iterator) {\n continue\n }\n if (!equate((subject as Record)[k as string], (other as Record)[k as string])) {\n return false\n }\n }\n\n const hasSubjectIter = hasOwnProperty(subject, Symbol.iterator)\n const hasOtherIter = hasOwnProperty(other, Symbol.iterator)\n if (hasSubjectIter !== hasOtherIter) {\n return false\n }\n if (hasSubjectIter && hasOtherIter) {\n if (!equateIterables(subject as Iterable, other as Iterable)) {\n return false\n }\n }\n\n return true\n}\n\nfunction equateIterables(subject: Iterable, other: Iterable) {\n const otherIter = other[Symbol.iterator]()\n for (const subjectItem of subject) {\n const otherItemDone = otherIter.next()\n if (otherItemDone.done || !equate(subjectItem, otherItemDone.value)) {\n return false\n }\n }\n return otherIter.next().done\n}\n", "import {Config} from './config'\n\nexport type CreateArrayWithLengthX = ACC['length'] extends LENGTH\n ? ACC\n : CreateArrayWithLengthX\n\nexport type NumericRange<\n START_ARR extends number[],\n END extends number,\n ACC extends number = never,\n> = START_ARR['length'] extends END ? ACC | END : NumericRange<[...START_ARR, 1], END, ACC | START_ARR['length']>\n\nexport type ResizeableSpan = NumericRange, typeof Config.MAX_QUBIT_COUNT>\n\nexport const isResizeableSpan = (arg: unknown): arg is ResizeableSpan =>\n typeof arg == 'number' && 1 <= arg && arg <= Config.MAX_QUBIT_COUNT\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Result} from 'neverthrow'\n\ntype ParseError = {message: string}\nconst toParseError = (): ParseError => ({message: 'Parse Error'})\n\nexport class Util {\n static need(expression: boolean, message: string, args?: unknown[]): asserts expression {\n if (expression !== true) {\n const argDesc = args === undefined ? '(not provided)' : `[${Array.prototype.slice.call(args).join(', ')}]`\n const msgDesc = message === undefined ? '(not provided)' : message\n const msg = `Precondition failed\\n\\nMessage: ${msgDesc}\\n\\nArgs: ${argDesc}`\n throw new Error(msg)\n }\n }\n\n static notNull(v: T): asserts v is NonNullable {\n Util.need(v !== null && v !== undefined, 'notNull')\n }\n\n // \u73FE\u5728\u306E URL \u3092\u30D1\u30FC\u30B9\u3057\u3001\u6700\u5F8C\u306E / \u4EE5\u964D\u3092\u30C7\u30B3\u30FC\u30C9\u3057\u305F\u3082\u306E\u3092\u8FD4\u3059\n static get urlJson(): string {\n const url = new URL(location.href, window.location.origin)\n const path = decodeURIComponent(url.pathname)\n const lastSlashIndex = path.lastIndexOf('/')\n\n return path.substring(lastSlashIndex + 1)\n }\n\n static safeJsonParse = Result.fromThrowable(JSON.parse, toParseError)\n}\n", "export const SerializedAntiControlGateType = '\u25E6'\n\nexport type SerializedAntiControlGate = {\n type: typeof SerializedAntiControlGateType\n targets: number[]\n}\n", "export const SerializedBlochDisplayType = 'Bloch'\n\nexport type SerializedBlochDisplay = {\n type: typeof SerializedBlochDisplayType\n targets: number[]\n}\n", "export const SerializedControlGateType = '\u2022'\n\nexport type SerializedControlGate = {\n type: typeof SerializedControlGateType\n targets: number[]\n}\n", "export const SerializedHGateType = 'H'\n\nexport type SerializedHGate = {\n type: typeof SerializedHGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedMeasurementGateType = 'Measure'\n\nexport type SerializedMeasurementGate = {\n type: typeof SerializedMeasurementGateType\n targets: number[]\n flag?: string\n}\n", "export const SerializedPhaseGateType = 'P'\n\nexport type SerializedPhaseGate = {\n type: typeof SerializedPhaseGateType\n angle?: string\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftDaggerGateType = 'QFT\u2020'\n\nexport type SerializedQftDaggerGate = {\n type: typeof SerializedQftDaggerGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftGateType = 'QFT'\n\nexport type SerializedQftGate = {\n type: typeof SerializedQftGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "export const SerializedRnotGateType = 'X^\u00BD'\n\nexport type SerializedRnotGate = {\n type: typeof SerializedRnotGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRxGateType = 'Rx'\n\nexport type SerializedRxGate = {\n type: typeof SerializedRxGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRyGateType = 'Ry'\n\nexport type SerializedRyGate = {\n type: typeof SerializedRyGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRzGateType = 'Rz'\n\nexport type SerializedRzGate = {\n type: typeof SerializedRzGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSDaggerGateType = 'S\u2020'\n\nexport type SerializedSDaggerGate = {\n type: typeof SerializedSDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSGateType = 'S'\n\nexport type SerializedSGate = {\n type: typeof SerializedSGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSpacerGateType = '\u2026'\n\nexport type SerializedSpacerGate = {\n type: typeof SerializedSpacerGateType\n targets: number[]\n}\n", "export const SerializedSwapGateType = 'Swap'\n\nexport type SerializedSwapGate = {\n type: typeof SerializedSwapGateType\n targets: [number, number]\n controls?: number[]\n}\n", "export const SerializedTDaggerGateType = 'T\u2020'\n\nexport type SerializedTDaggerGate = {\n type: typeof SerializedTDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedTGateType = 'T'\n\nexport type SerializedTGate = {\n type: typeof SerializedTGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedWrite0GateType = '|0>'\nexport const SerializedWrite1GateType = '|1>'\n\nexport type SerializedWriteGate = {\n type: typeof SerializedWrite0GateType | typeof SerializedWrite1GateType\n targets: number[]\n}\n", "export const SerializedXGateType = 'X'\n\nexport type SerializedXGate = {\n type: typeof SerializedXGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedYGateType = 'Y'\n\nexport type SerializedYGate = {\n type: typeof SerializedYGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedZGateType = 'Z'\n\nexport type SerializedZGate = {\n type: typeof SerializedZGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar defaultErrorConfig = {\r\n withStackTrace: false\r\n};\r\n// Custom error object\r\n// Context / discussion: https://github.com/supermacro/neverthrow/pull/215\r\nvar createNeverThrowError = function (message, result, config) {\r\n if (config === void 0) { config = defaultErrorConfig; }\r\n var data = result.isOk()\r\n ? { type: 'Ok', value: result.value }\r\n : { type: 'Err', value: result.error };\r\n var maybeStack = config.withStackTrace ? new Error().stack : undefined;\r\n return {\r\n data: data,\r\n message: message,\r\n stack: maybeStack\r\n };\r\n};\n\nvar ResultAsync = /** @class */ (function () {\r\n function ResultAsync(res) {\r\n this._promise = res;\r\n }\r\n ResultAsync.fromSafePromise = function (promise) {\r\n var newPromise = promise.then(function (value) { return new Ok(value); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.fromPromise = function (promise, errorFn) {\r\n var newPromise = promise\r\n .then(function (value) { return new Ok(value); })[\"catch\"](function (e) { return new Err(errorFn(e)); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.combine = function (asyncResultList) {\r\n return combineResultAsyncList(asyncResultList);\r\n };\r\n ResultAsync.combineWithAllErrors = function (asyncResultList) {\r\n return combineResultAsyncListWithAllErrors(asyncResultList);\r\n };\r\n ResultAsync.prototype.map = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isErr()) {\r\n return [2 /*return*/, new Err(res.error)];\r\n }\r\n _a = Ok.bind;\r\n return [4 /*yield*/, f(res.value)];\r\n case 1: return [2 /*return*/, new (_a.apply(Ok, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.mapErr = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isOk()) {\r\n return [2 /*return*/, new Ok(res.value)];\r\n }\r\n _a = Err.bind;\r\n return [4 /*yield*/, f(res.error)];\r\n case 1: return [2 /*return*/, new (_a.apply(Err, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.andThen = function (f) {\r\n return new ResultAsync(this._promise.then(function (res) {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n var newValue = f(res.value);\r\n return newValue instanceof ResultAsync ? newValue._promise : newValue;\r\n }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.orElse = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (res.isErr()) {\r\n return [2 /*return*/, f(res.error)];\r\n }\r\n return [2 /*return*/, new Ok(res.value)];\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.match = function (ok, _err) {\r\n return this._promise.then(function (res) { return res.match(ok, _err); });\r\n };\r\n ResultAsync.prototype.unwrapOr = function (t) {\r\n return this._promise.then(function (res) { return res.unwrapOr(t); });\r\n };\r\n // Makes ResultAsync implement PromiseLike\r\n ResultAsync.prototype.then = function (successCallback, failureCallback) {\r\n return this._promise.then(successCallback, failureCallback);\r\n };\r\n return ResultAsync;\r\n}());\r\nvar okAsync = function (value) {\r\n return new ResultAsync(Promise.resolve(new Ok(value)));\r\n};\r\nvar errAsync = function (err) {\r\n return new ResultAsync(Promise.resolve(new Err(err)));\r\n};\r\nvar fromPromise = ResultAsync.fromPromise;\r\nvar fromSafePromise = ResultAsync.fromSafePromise;\n\nvar appendValueToEndOfList = function (value) { return function (list) { return __spreadArray(__spreadArray([], __read(list), false), [value], false); }; };\r\n/**\r\n * Short circuits on the FIRST Err value that we find\r\n */\r\nvar combineResultList = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return acc.isOk()\r\n ? result.isErr()\r\n ? err(result.error)\r\n : acc.map(appendValueToEndOfList(result.value))\r\n : acc;\r\n }, ok([]));\r\n};\r\n/* This is the typesafe version of Promise.all\r\n *\r\n * Takes a list of ResultAsync and success if all inner results are Ok values\r\n * or fails if one (or more) of the inner results are Err values\r\n */\r\nvar combineResultAsyncList = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList);\r\n};\r\n/**\r\n * Give a list of all the errors we find\r\n */\r\nvar combineResultListWithAllErrors = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return result.isErr()\r\n ? acc.isErr()\r\n ? err(__spreadArray(__spreadArray([], __read(acc.error), false), [result.error], false))\r\n : err([result.error])\r\n : acc.isErr()\r\n ? acc\r\n : ok(__spreadArray(__spreadArray([], __read(acc.value), false), [result.value], false));\r\n }, ok([]));\r\n};\r\nvar combineResultAsyncListWithAllErrors = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors);\r\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nvar Result;\r\n(function (Result) {\r\n /**\r\n * Wraps a function with a try catch, creating a new function with the same\r\n * arguments but returning `Ok` if successful, `Err` if the function throws\r\n *\r\n * @param fn function to wrap with ok on success or err on failure\r\n * @param errorFn when an error is thrown, this will wrap the error result if provided\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function fromThrowable(fn, errorFn) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n try {\r\n var result = fn.apply(void 0, __spreadArray([], __read(args), false));\r\n return ok(result);\r\n }\r\n catch (e) {\r\n return err(errorFn ? errorFn(e) : e);\r\n }\r\n };\r\n }\r\n Result.fromThrowable = fromThrowable;\r\n function combine(resultList) {\r\n return combineResultList(resultList);\r\n }\r\n Result.combine = combine;\r\n function combineWithAllErrors(resultList) {\r\n return combineResultListWithAllErrors(resultList);\r\n }\r\n Result.combineWithAllErrors = combineWithAllErrors;\r\n})(Result || (Result = {}));\r\nvar ok = function (value) { return new Ok(value); };\r\nvar err = function (err) { return new Err(err); };\r\nvar Ok = /** @class */ (function () {\r\n function Ok(value) {\r\n this.value = value;\r\n }\r\n Ok.prototype.isOk = function () {\r\n return true;\r\n };\r\n Ok.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n Ok.prototype.map = function (f) {\r\n return ok(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.mapErr = function (_f) {\r\n return ok(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.andThen = function (f) {\r\n return f(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.orElse = function (_f) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype.asyncAndThen = function (f) {\r\n return f(this.value);\r\n };\r\n Ok.prototype.asyncMap = function (f) {\r\n return ResultAsync.fromSafePromise(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.unwrapOr = function (_v) {\r\n return this.value;\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.match = function (ok, _err) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype._unsafeUnwrap = function (_) {\r\n return this.value;\r\n };\r\n Ok.prototype._unsafeUnwrapErr = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrapErr` on an Ok', this, config);\r\n };\r\n return Ok;\r\n}());\r\nvar Err = /** @class */ (function () {\r\n function Err(error) {\r\n this.error = error;\r\n }\r\n Err.prototype.isOk = function () {\r\n return false;\r\n };\r\n Err.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.map = function (_f) {\r\n return err(this.error);\r\n };\r\n Err.prototype.mapErr = function (f) {\r\n return err(f(this.error));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.andThen = function (_f) {\r\n return err(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.orElse = function (f) {\r\n return f(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncAndThen = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncMap = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n Err.prototype.unwrapOr = function (v) {\r\n return v;\r\n };\r\n Err.prototype.match = function (_ok, err) {\r\n return err(this.error);\r\n };\r\n Err.prototype._unsafeUnwrap = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrap` on an Err', this, config);\r\n };\r\n Err.prototype._unsafeUnwrapErr = function (_) {\r\n return this.error;\r\n };\r\n return Err;\r\n}());\r\nvar fromThrowable = Result.fromThrowable;\r\n//#endregion\n\nexport { Err, Ok, Result, ResultAsync, err, errAsync, fromPromise, fromSafePromise, fromThrowable, ok, okAsync };\n", "import {Complex, DetailedError, Format, Util, radian} from '@qni/common'\nimport {Eq} from 'fp-ts/number'\nimport {isNonEmpty} from 'fp-ts/lib/Array'\nimport {range} from 'fp-ts/NonEmptyArray'\nimport {uniq} from 'fp-ts/lib/ReadonlyNonEmptyArray'\n\ntype FormatOptions = {\n allowAbbreviation?: boolean\n maxAbbreviationError?: number\n fixedDigits?: number | undefined\n itemSeparator?: string\n}\n\nconst DEFAULT_FORMAT_OPTIONS: FormatOptions = {\n allowAbbreviation: true,\n maxAbbreviationError: 0,\n fixedDigits: undefined,\n itemSeparator: ', ',\n}\n\nexport class Matrix {\n /**\n * Hadamard gate.\n *\n * ```\n * H = 1/\u221A2 * | 1 1 |\n * | 1 -1 |\n * ```\n */\n static readonly H = Matrix.square(1, 1, 1, -1).times(Math.sqrt(0.5))\n\n /**\n * Pauli X gate.\n *\n * ```\n * X = | 0 1 |\n * | 1 0 |\n * ```\n */\n static readonly PAULI_X = Matrix.square(0, 1, 1, 0)\n\n /**\n * Pauli Y gate.\n *\n * ```\n * Y = | 0 -i |\n * | i 0 |\n * ```\n */\n static readonly PAULI_Y = Matrix.square(0, new Complex(0, -1), Complex.I, 0)\n\n /**\n * Pauli Z gate.\n *\n * ```\n * Z = | 1 0 |\n * | 0 -1 |\n * ```\n */\n static readonly PAULI_Z = Matrix.square(1, 0, 0, -1)\n\n /**\n * S gate.\n *\n * ```\n * S = | 1 0 |\n * | 0 i |\n * ```\n */\n static readonly S = Matrix.square(1, 0, 0, Complex.I)\n\n /**\n * S\u2020 gate.\n *\n * ```\n * S\u2020 = | 1 0 |\n * | 0 -i |\n * ```\n */\n static readonly SDagger = Matrix.square(1, 0, 0, Complex.I.neg())\n\n /**\n * T gate.\n *\n * ```\n * T = | 1 0 |\n * | 0 exp(i\u03C0/4) |\n * ```\n */\n static readonly T = Matrix.square(1, 0, 0, Complex.I.times(Math.PI / 4).exp())\n\n /**\n * T\u2020 gate.\n *\n * ```\n * T = | 1 0 |\n * | 0 exp(-i\u03C0/4) |\n * ```\n */\n static readonly TDagger = Matrix.square(1, 0, 0, Complex.I.times(Math.PI / -4).exp())\n\n /**\n * Phase (P) gate.\n *\n * ```\n * P(\u03C6) = | 1 0 |\n * | 0 exp(i\u03C6) |\n * ```\n */\n static PHASE(phi: string): Matrix {\n const \u03C6 = radian(phi)\n const e = Complex.from(Math.E)\n\n return Matrix.square(1, 0, 0, e.pow(Complex.I.times(\u03C6)))\n }\n\n /**\n * RNOT (\u221AX) gate.\n *\n * ```\n * \u221AX = 1/2 * | 1+i 1-i |\n * | 1-i 1+i |\n * ```\n */\n static get RNOT(): Matrix {\n const i = Complex.I\n const mi = i.neg()\n\n return Matrix.square(i.plus(1), mi.plus(1), mi.plus(1), i.plus(1)).times(0.5)\n }\n\n /**\n * Rx gate.\n *\n * ```\n * Rx(\u03B8) = | cos(\u03B8/2) -isin(\u03B8/2) |\n * | -isin(\u03B8/2) cos(\u03B8/2) |\n *\n * e.g.,\n * Rx(\u03C0/2) = | cos(\u03C0/4) -isin(\u03C0/4) |\n * | -isin(\u03C0/4) cos(\u03C0/4) |\n *\n * = 1/\u221A2 * | 1 -i |\n * | -i 1 |\n * ```\n */\n static RX(theta: string): Matrix {\n const \u03B8 = radian(theta)\n const mi = Complex.I.neg()\n const cos\u03B82 = Math.cos(\u03B8 / 2)\n const sin\u03B82 = Math.sin(\u03B8 / 2)\n\n return Matrix.square(cos\u03B82, mi.times(sin\u03B82), mi.times(sin\u03B82), cos\u03B82)\n }\n\n /**\n * Ry gate.\n *\n * ```\n * Ry(\u03B8) = | cos(\u03B8/2) -sin(\u03B8/2) |\n * | sin(\u03B8/2) cos(\u03B8/2) |\n *\n * e.g.,\n * Ry(\u03C0/2) = | cos(\u03C0/4) -sin(\u03C0/4) |\n * | sin(\u03C0/4) cos(\u03C0/4) |\n *\n * = 1/\u221A2 * | 1 -1 |\n * | 1 1 |\n * ```\n */\n static RY(theta: string): Matrix {\n const \u03B8 = radian(theta)\n const cos\u03B82 = Math.cos(\u03B8 / 2)\n const sin\u03B82 = Math.sin(\u03B8 / 2)\n\n return Matrix.square(cos\u03B82, -sin\u03B82, sin\u03B82, cos\u03B82)\n }\n\n /**\n * Rz gate.\n *\n * ```\n * Rz(\u03B8) = | exp(-i\u03B8/2) 0 |\n * | 0 exp(i\u03B8/2) |\n *\n * e.g.,\n * Rz(\u03C0/2) = | exp(-i\u03C0/4) 0 |\n * | 0 exp(i\u03C0/4) |\n *\n * = 1/\u221A2 * | 1-i 0 |\n * | 0 1+i |\n * ```\n */\n static RZ(theta: string): Matrix {\n const \u03B8 = radian(theta)\n const i = Complex.I\n\n return Matrix.square(\n i\n .neg()\n .times(\u03B8 / 2)\n .exp(),\n 0,\n 0,\n i.times(\u03B8 / 2).exp(),\n )\n }\n\n static fromRows(rows: Complex[][]): Matrix {\n const h = rows.length\n const rowWidths = rows.map(e => e.length)\n if (!isNonEmpty(rowWidths)) throw new DetailedError('Zero height', {rows})\n\n const ws = uniq(Eq)(rowWidths)\n if (ws.length !== 1) throw new DetailedError('Inconsistent row widths.', {rows})\n const w = ws[0]\n\n const buffer = new Float64Array(w * h * 2)\n let i = 0\n for (const row of rows) {\n for (const cell of row) {\n buffer[i] = Complex.real(cell)\n buffer[i + 1] = Complex.imag(cell)\n i += 2\n }\n }\n return new Matrix(w, h, buffer)\n }\n\n static generate(\n width: number,\n height: number,\n coefficientRowColGenerator: (row: number, col: number) => number | Complex,\n ): Matrix {\n const buf = new Float64Array(width * height * 2)\n for (let r = 0; r < height; r++) {\n for (let c = 0; c < width; c++) {\n const k = (r * width + c) * 2\n const v = coefficientRowColGenerator(r, c)\n buf[k] = Complex.real(v)\n buf[k + 1] = Complex.imag(v)\n }\n }\n return new Matrix(width, height, buf)\n }\n\n static solo(coef: number | Complex): Matrix {\n return new Matrix(1, 1, new Float64Array([Complex.real(coef), Complex.imag(coef)]))\n }\n\n static square(...coefs: Array): Matrix {\n Util.need(Array.isArray(coefs), 'Array.isArray(coefs)', coefs)\n const n = Math.round(Math.sqrt(coefs.length))\n Util.need(n * n === coefs.length, 'Matrix.square: non-square number of arguments')\n return Matrix.generate(n, n, (r, c) => coefs[r * n + c])\n }\n\n static col(...coefs: Array): Matrix {\n Util.need(Array.isArray(coefs), 'Array.isArray(coefs)', coefs)\n return Matrix.generate(1, coefs.length, r => coefs[r])\n }\n\n static row(...coefs: Array): Matrix {\n Util.need(Array.isArray(coefs), 'Array.isArray(coefs)', coefs)\n return Matrix.generate(coefs.length, 1, (r, c) => coefs[c])\n }\n\n static identity(size: number): Matrix {\n if (!Number.isInteger(size) || size <= 0) {\n throw new DetailedError('Bad size', {size})\n }\n const buf = new Float64Array(size * size * 2)\n for (let k = 0; k < size; k++) {\n buf[k * (size + 1) * 2] = 1\n }\n return new Matrix(size, size, buf)\n }\n\n static zero(width: number, height: number): Matrix {\n return new Matrix(width, height, new Float64Array(width * height * 2))\n }\n\n public width: number\n public height: number\n public buffer: Float64Array | Float32Array\n\n constructor(width: number, height: number, buffer: Float64Array | Float32Array) {\n if (width * height * 2 !== buffer.length) {\n throw new DetailedError('width*height*2 !== buffer.length', {\n width,\n height,\n len: buffer.length,\n })\n }\n this.width = width\n this.height = height\n this.buffer = buffer\n }\n\n columnAt(colIndex: number): Complex[] {\n Util.need(colIndex >= 0 && colIndex <= this.width, 'colIndex >= 0 && colIndex <= this.width')\n const col = []\n for (let r = 0; r < this.height; r++) {\n col.push(this.cell(colIndex, r))\n }\n return col\n }\n\n adjoint(): Matrix {\n const w = this.height\n const h = this.width\n const newBuf = new Float64Array(w * h * 2)\n for (let r = 0; r < h; r++) {\n for (let c = 0; c < w; c++) {\n const kIn = (c * this.width + r) * 2\n const kOut = (r * w + c) * 2\n newBuf[kOut] = this.buffer[kIn]\n newBuf[kOut + 1] = -this.buffer[kIn + 1]\n }\n }\n return new Matrix(w, h, newBuf)\n }\n\n times(other: Matrix | number | Complex): Matrix {\n return other instanceof Matrix ? this.timesMatrix(other) : this.timesScalar(other)\n }\n\n private timesMatrix(other: Matrix): Matrix {\n if (this.width !== other.height) {\n throw new DetailedError('Incompatible sizes.', {this: this, other})\n }\n const w = other.width\n const h = this.height\n const n = this.width\n const newBuffer = new Float64Array(w * h * 2)\n for (let r = 0; r < h; r++) {\n for (let c = 0; c < w; c++) {\n const k3 = (r * w + c) * 2\n for (let k = 0; k < n; k++) {\n const k1 = (r * n + k) * 2\n const k2 = (k * w + c) * 2\n const r1 = this.buffer[k1]\n const i1 = this.buffer[k1 + 1]\n const r2 = other.buffer[k2]\n const i2 = other.buffer[k2 + 1]\n const r3 = r1 * r2 - i1 * i2\n const i3 = r1 * i2 + r2 * i1\n newBuffer[k3] += r3\n newBuffer[k3 + 1] += i3\n }\n }\n }\n return new Matrix(w, h, newBuffer)\n }\n\n private timesScalar(v: number | Complex): Matrix {\n const newBuffer = new Float64Array(this.buffer.length)\n const sr = Complex.real(v)\n const si = Complex.imag(v)\n for (let i = 0; i < newBuffer.length; i += 2) {\n const vr = this.buffer[i]\n const vi = this.buffer[i + 1]\n newBuffer[i] = vr * sr - vi * si\n newBuffer[i + 1] = vr * si + vi * sr\n }\n return new Matrix(this.width, this.height, newBuffer)\n }\n\n isEqualTo(obj: Matrix | unknown): boolean {\n if (this === obj) return true\n if (!(obj instanceof Matrix)) return false\n\n const other = obj\n return (\n this.width === other.width &&\n this.height === other.height &&\n range(0, this.buffer.length - 1).every(i => this.buffer[i] === other.buffer[i])\n )\n }\n\n isApproximatelyEqualTo(other: Matrix | unknown, epsilon: number): boolean {\n return (\n other instanceof Matrix &&\n this.width === other.width &&\n this.height === other.height &&\n Math.sqrt(this.minus(other).norm2()) <= epsilon\n )\n }\n\n minus(other: Matrix): Matrix {\n const {width: w, height: h, buffer: b1} = this\n const b2 = other.buffer\n Util.need(other.width === w && other.height === h, 'Matrix.minus: compatible sizes')\n\n const newBuffer = new Float64Array(this.buffer.length)\n for (let i = 0; i < newBuffer.length; i++) {\n newBuffer[i] = b1[i] - b2[i]\n }\n return new Matrix(w, h, newBuffer)\n }\n\n norm2(): number {\n let t = 0\n for (const e of this.buffer) {\n t += e * e\n }\n return t\n }\n\n format(options = DEFAULT_FORMAT_OPTIONS): string {\n const format = new Format(\n options.allowAbbreviation === undefined ? true : options.allowAbbreviation,\n options.maxAbbreviationError || 0,\n options.fixedDigits,\n options.itemSeparator || ', ',\n )\n return this.toString(format)\n }\n\n toString(options = DEFAULT_FORMAT_OPTIONS): string {\n const data = this.rows()\n .map(row => row.map(e => e.format(options)).join(options.itemSeparator))\n .join(`}${options.itemSeparator}{`)\n return `{{${data}}}`\n }\n\n rows(): Complex[][] {\n return range(0, this.height - 1).map(row =>\n range(0, this.width - 1).map(col => this.cell(col, row)),\n )\n }\n\n cell(col: number, row: number): Complex {\n if (col < 0 || row < 0 || col >= this.width || row >= this.height) {\n throw new DetailedError('Cell out of range', {\n col,\n row,\n width: this.width,\n height: this.height,\n })\n }\n const i = (this.width * row + col) * 2\n return new Complex(this.buffer[i], this.buffer[i + 1])\n }\n\n set(col: number, row: number, value: Complex): void {\n if (col < 0 || row < 0 || col >= this.width || row >= this.height) {\n throw new DetailedError('Cell out of range', {\n col,\n row,\n width: this.width,\n height: this.height,\n })\n }\n const i = (this.width * row + col) * 2\n this.buffer[i] = value.real\n this.buffer[i + 1] = value.imag\n }\n\n isApproximatelyHermitian(epsilon: number): boolean {\n if (this.width !== this.height) {\n return false\n }\n for (let c = 0; c < this.width; c++) {\n for (let r = 0; r < this.height; r++) {\n const i = (this.width * r + c) * 2\n const j = (this.width * c + r) * 2\n if (Math.abs(this.buffer[i] - this.buffer[j]) > epsilon) {\n return false\n }\n if (Math.abs(this.buffer[i + 1] + this.buffer[j + 1]) > epsilon) {\n return false\n }\n }\n }\n return true\n }\n\n plus(other: Matrix): Matrix {\n const {width: w, height: h, buffer: b1} = this\n const b2 = other.buffer\n Util.need(other.width === w && other.height === h, 'Matrix.plus: compatible sizes')\n\n const newBuffer = new Float64Array(this.buffer.length)\n for (let i = 0; i < newBuffer.length; i++) {\n newBuffer[i] = b1[i] + b2[i]\n }\n return new Matrix(w, h, newBuffer)\n }\n\n tensorProduct(other: Matrix): Matrix {\n const w1 = this.width\n const h1 = this.height\n const w2 = other.width\n const h2 = other.height\n const w = w1 * w2\n const h = h1 * h2\n const newBuffer = new Float64Array(w * h * 2)\n for (let r1 = 0; r1 < h1; r1++) {\n for (let r2 = 0; r2 < h2; r2++) {\n for (let c1 = 0; c1 < w1; c1++) {\n for (let c2 = 0; c2 < w2; c2++) {\n const k1 = (r1 * w1 + c1) * 2\n const k2 = (r2 * w2 + c2) * 2\n const k3 = ((r1 * h2 + r2) * w + (c1 * w2 + c2)) * 2\n const cr1 = this.buffer[k1]\n const ci1 = this.buffer[k1 + 1]\n const cr2 = other.buffer[k2]\n const ci2 = other.buffer[k2 + 1]\n const cr3 = cr1 * cr2 - ci1 * ci2\n const ci3 = cr1 * ci2 + ci1 * cr2\n newBuffer[k3] = cr3\n newBuffer[k3 + 1] = ci3\n }\n }\n }\n }\n return new Matrix(w, h, newBuffer)\n }\n\n timesQubitOperation(operation2x2: Matrix, qubitIndex: number, controlMask: number, desiredValueMask: number): Matrix {\n Util.need((controlMask & (1 << qubitIndex)) === 0, 'Matrix.timesQubitOperation: self-controlled')\n Util.need(operation2x2.width === 2 && operation2x2.height === 2, 'Matrix.timesQubitOperation: not 2x2')\n\n const {width: w, height: h, buffer: old} = this\n const [ar, ai, br, bi, cr, ci, dr, di] = operation2x2.buffer\n\n Util.need(h >= 2 << qubitIndex, 'Matrix.timesQubitOperation: qubit index out of range')\n\n const buf = new Float64Array(old)\n let i = 0\n for (let r = 0; r < h; r++) {\n const isControlled = ((controlMask & r) ^ desiredValueMask) !== 0\n const qubitVal = (r & (1 << qubitIndex)) !== 0\n for (let c = 0; c < w; c++) {\n if (!isControlled && !qubitVal) {\n const j = i + (1 << qubitIndex) * 2 * w\n const xr = buf[i]\n const xi = buf[i + 1]\n const yr = buf[j]\n const yi = buf[j + 1]\n\n buf[i] = xr * ar - xi * ai + yr * br - yi * bi\n buf[i + 1] = xr * ai + xi * ar + yr * bi + yi * br\n buf[j] = xr * cr - xi * ci + yr * dr - yi * di\n buf[j + 1] = xr * ci + xi * cr + yr * di + yi * dr\n }\n i += 2\n }\n }\n return new Matrix(w, h, buf)\n }\n\n trace(): Complex {\n let total_r = 0\n let total_i = 0\n const d = this.width * 2 + 2\n for (let i = 0; i < this.buffer.length; i += d) {\n total_r += this.buffer[i]\n total_i += this.buffer[i + 1]\n }\n return new Complex(total_r, total_i)\n }\n\n qubitDensityMatrixToBlochVector(): [number, number, number] {\n if (this.width !== 2 || this.height !== 2) {\n throw new DetailedError('Need a 2x2 density matrix.', this)\n }\n if (!this.isApproximatelyHermitian(0.01)) {\n throw new DetailedError('Density matrix should be Hermitian.', this)\n }\n if (!this.trace().nearlyEq(1, 0.01)) {\n throw new DetailedError('Density matrix should have unit trace.', this)\n }\n\n // Density matrix from bloch vector equation: M = 1/2 (I + v\u03C3)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [ar, ai, br, bi, cr, ci, dr, di] = this.buffer\n const x = cr + br\n const y = ci - bi\n const z = ar - dr\n return [x, y, z]\n }\n\n clone(): Matrix {\n return new Matrix(this.width, this.height, this.buffer.slice())\n }\n}\n", "import {Complex, DetailedError} from '@qni/common'\nimport {Matrix} from './matrix'\n\nexport class StateVector {\n public matrix: Matrix\n public size: number\n public nqubit: number\n\n get bra(): Matrix {\n return this.matrix.adjoint()\n }\n\n get ket(): Matrix {\n return this.matrix\n }\n\n constructor(bits: string | Matrix) {\n if ('string' === typeof bits) {\n this.matrix = this.bitstringToMatrix(bits)\n } else {\n this.matrix = bits\n }\n\n this.size = this.matrix.height\n this.nqubit = Math.log2(this.size)\n }\n\n amplifier(index: number): Complex {\n return this.matrix.cell(0, index)\n }\n\n setAmplifier(index: number, value: Complex): void {\n this.matrix.set(0, index, value)\n }\n\n blochVector(bit: number): [number, number, number] {\n return this.qubitDensityMatrix(bit).qubitDensityMatrixToBlochVector()\n }\n\n isApproximatelyEqualTo(other: StateVector | unknown, epsilon: number): boolean {\n return other instanceof StateVector && this.matrix.isApproximatelyEqualTo(other.matrix, epsilon)\n }\n\n timesQubitOperation(operation2x2: Matrix, qubitIndex: number, controlMask: number): void {\n this.matrix = this.matrix.timesQubitOperation(operation2x2, qubitIndex, controlMask, controlMask)\n }\n\n toString(): string {\n return this.matrix.toString()\n }\n\n private bitstringToMatrix(bitString: string): Matrix {\n let paren = false\n let parenToken = ''\n const kets = []\n const invalidBitStringError = new DetailedError('Invalid StateVector bit string', bitString)\n\n for (const char of bitString.split('')) {\n switch (char) {\n case '0': {\n if (paren) throw invalidBitStringError\n kets.push(Matrix.col(1, 0))\n break\n }\n case '1': {\n if (paren) throw invalidBitStringError\n kets.push(Matrix.col(0, 1))\n break\n }\n case '+': {\n if (paren) throw invalidBitStringError\n kets.push(Matrix.col(1, 1).times(Math.sqrt(0.5)))\n break\n }\n case '-': {\n if (paren) {\n parenToken += '-'\n } else {\n kets.push(Matrix.col(1, -1).times(Math.sqrt(0.5)))\n }\n break\n }\n case 'i': {\n if (paren) {\n parenToken += 'i'\n } else {\n kets.push(Matrix.col(1, new Complex(0, 1)).times(Math.sqrt(0.5)))\n }\n break\n }\n case '(': {\n if (paren) throw invalidBitStringError\n paren = true\n parenToken = ''\n break\n }\n case ')': {\n if (!paren) throw invalidBitStringError\n if (parenToken !== '-i') throw invalidBitStringError\n kets.push(Matrix.col(1, new Complex(0, -1)).times(Math.sqrt(0.5)))\n paren = false\n break\n }\n default:\n throw invalidBitStringError\n }\n }\n\n if (kets.length === 0) throw invalidBitStringError\n return kets.reduce((result, each) => result.tensorProduct(each))\n }\n\n qubitDensityMatrix(qubitIndex: number): Matrix {\n if (qubitIndex < 0 || qubitIndex >= this.nqubit) {\n throw new DetailedError('Qubit index out of range', qubitIndex)\n }\n\n const traceBits = [...Array(Math.log2(this.matrix.height)).keys()].filter(each => each !== qubitIndex)\n const removeBits = (num: number, bits: number[]) => {\n return bits\n .sort()\n .reverse()\n .reduce((result, each) => {\n let mask = result >> (each + 1)\n mask = mask << each\n const right = ((1 << each) - 1) & result\n\n return mask | right\n }, num)\n }\n\n let densityMatrix = Matrix.zero(2, 2)\n\n for (let bra = 0; bra < this.matrix.height; bra++) {\n for (let ket = 0; ket < this.matrix.height; ket++) {\n const survived = traceBits.every(b => {\n return ((bra >> b) & 1) === ((ket >> b) & 1)\n })\n if (!survived) continue\n\n const amp = this.matrix.cell(0, ket).times(this.matrix.cell(0, bra).conjugate())\n if (amp.isEqualTo(0)) continue\n\n const ketMat = removeBits(ket, traceBits) === 0 ? Matrix.col(1, 0) : Matrix.col(0, 1)\n const braMat = removeBits(bra, traceBits) === 0 ? Matrix.row(1, 0) : Matrix.row(0, 1)\n const ketBra = ketMat.times(braMat)\n\n densityMatrix = densityMatrix.plus(ketBra.times(amp))\n }\n }\n\n return densityMatrix\n }\n}\n", "export function round(n: number, decimal: number): number {\n return Math.round(n * Math.pow(10, decimal)) / Math.pow(10, decimal)\n}\n", "import {\n Complex,\n ResizeableSpan,\n SerializedBlochDisplayType,\n SerializedCircuitStep,\n SerializedControlGateType,\n SerializedHGateType,\n SerializedMeasurementGateType,\n SerializedPhaseGateType,\n SerializedQftDaggerGateType,\n SerializedQftGateType,\n SerializedRnotGateType,\n SerializedRxGateType,\n SerializedRyGateType,\n SerializedRzGateType,\n SerializedSDaggerGateType,\n SerializedSGateType,\n SerializedSpacerGateType,\n SerializedSwapGateType,\n SerializedTDaggerGateType,\n SerializedTGateType,\n SerializedWrite0GateType,\n SerializedWrite1GateType,\n SerializedXGateType,\n SerializedYGateType,\n SerializedZGateType,\n} from '@qni/common'\nimport {Matrix} from './matrix'\nimport {StateVector} from './state-vector'\nimport {round} from './util'\n\nexport class Simulator {\n public state: StateVector\n public blochVectors!: {[bit: number]: [number, number, number]}\n public measuredBits: {[bit: number]: number}\n public flags: {[key: string]: boolean}\n\n constructor(bits: string | StateVector) {\n if ('string' === typeof bits) {\n this.state = new StateVector(bits)\n } else {\n this.state = bits\n }\n\n this.measuredBits = {}\n this.flags = {}\n }\n\n runStep(operations: SerializedCircuitStep): Simulator {\n this.blochVectors = {}\n\n for (const each of operations) {\n switch (each.type) {\n case SerializedWrite0GateType:\n this.write(0, ...each.targets)\n break\n case SerializedWrite1GateType:\n this.write(1, ...each.targets)\n break\n case SerializedBlochDisplayType:\n for (const target of each.targets) {\n this.blochVectors[target] = this.state.blochVector(target)\n }\n break\n case SerializedHGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.ach(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.h(...each.targets)\n }\n break\n case SerializedXGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acnot(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.x(...each.targets)\n }\n break\n case SerializedYGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acy(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.y(...each.targets)\n }\n break\n case SerializedZGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acz(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.z(...each.targets)\n }\n break\n case SerializedSpacerGateType:\n break\n case SerializedPhaseGateType: {\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acphase(each.controls || [], each.antiControls || [], each.angle, each.targets[0])\n } else {\n this.cphase(each.targets.slice(1), each.angle, each.targets[0])\n }\n break\n }\n case SerializedSGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acs(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.s(...each.targets)\n }\n break\n }\n case SerializedSDaggerGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acsDagger(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.sDagger(...each.targets)\n }\n break\n }\n case SerializedTGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.act(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.t(...each.targets)\n }\n break\n }\n case SerializedTDaggerGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.actDagger(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.tDagger(...each.targets)\n }\n break\n }\n case SerializedQftGateType:\n this.qft(each.span, ...each.targets)\n break\n case SerializedQftDaggerGateType:\n this.qftDagger(each.span, ...each.targets)\n break\n case SerializedControlGateType: {\n this.cz(each.targets.slice(1), each.targets[0])\n break\n }\n case SerializedSwapGateType: {\n // TODO: controls \u304C\u8907\u6570\u306E\u5834\u5408\u306B\u3082\u5BFE\u5FDC\n if (each.controls && each.controls.length === 1) {\n this.cswap(each.controls[0], each.targets[0], each.targets[1])\n } else {\n this.swap(each.targets[0], each.targets[1])\n }\n break\n }\n case SerializedRnotGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acrnot(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.rnot(...each.targets)\n }\n break\n case SerializedRxGateType:\n if (each.if && !this.flags[each.if]) break\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acrx(each.controls || [], each.antiControls || [], each.angle, ...each.targets)\n } else {\n this.rx(each.angle, ...each.targets)\n }\n break\n case SerializedRyGateType:\n if (each.if && !this.flags[each.if]) break\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acry(each.controls || [], each.antiControls || [], each.angle, ...each.targets)\n } else {\n this.ry(each.angle, ...each.targets)\n }\n break\n case SerializedRzGateType:\n if (each.if && !this.flags[each.if]) break\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acrz(each.controls || [], each.antiControls || [], each.angle, ...each.targets)\n } else {\n this.rz(each.angle, ...each.targets)\n }\n break\n case SerializedMeasurementGateType:\n for (const target of each.targets) {\n this.measure(target)\n if (each.flag) this.flags[each.flag] = this.measuredBits[target] === 1\n }\n break\n default:\n throw new Error('Unknown instruction')\n }\n }\n\n return this\n }\n\n write(value: number, ...targets: number[]): Simulator {\n for (const t of targets) {\n const pZero = round(this.pZero(t), 5)\n\n if ((value === 0 && pZero === 0) || (value === 1 && pZero === 1)) {\n this.x(t)\n }\n }\n return this\n }\n\n h(...targets: number[]): Simulator {\n this.u(Matrix.H, ...targets)\n return this\n }\n\n ch(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Matrix.H, ...targets)\n return this\n }\n\n ach(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.H, ...targets)\n this.x(...antiControls)\n return this\n }\n\n x(...targets: number[]): Simulator {\n this.u(Matrix.PAULI_X, ...targets)\n return this\n }\n\n cnot(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Matrix.PAULI_X, ...targets)\n\n return this\n }\n\n acnot(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.PAULI_X, ...targets)\n this.x(...antiControls)\n\n return this\n }\n\n y(...targets: number[]): Simulator {\n this.u(Matrix.PAULI_Y, ...targets)\n return this\n }\n\n cy(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Matrix.PAULI_Y, ...targets)\n return this\n }\n\n acy(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.PAULI_Y, ...targets)\n this.x(...antiControls)\n return this\n }\n\n z(...targets: number[]): Simulator {\n this.u(Matrix.PAULI_Z, ...targets)\n return this\n }\n\n cz(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Matrix.PAULI_Z, ...targets)\n return this\n }\n\n acz(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.PAULI_Z, ...targets)\n this.x(...antiControls)\n return this\n }\n\n phase(phi: string, ...targets: number[]): Simulator {\n this.u(Matrix.PHASE(phi), ...targets)\n return this\n }\n\n cphase(controls: number | number[], phi: string, ...targets: number[]): Simulator {\n this.cu(controls, Matrix.PHASE(phi), ...targets)\n return this\n }\n\n acphase(controls: number | number[], antiControls: number[], phi: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.PHASE(phi), ...targets)\n this.x(...antiControls)\n return this\n }\n\n s(...targets: number[]): Simulator {\n this.u(Matrix.S, ...targets)\n return this\n }\n\n acs(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.S, ...targets)\n this.x(...antiControls)\n return this\n }\n\n sDagger(...targets: number[]): Simulator {\n this.u(Matrix.SDagger, ...targets)\n return this\n }\n\n acsDagger(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.SDagger, ...targets)\n this.x(...antiControls)\n return this\n }\n\n t(...targets: number[]): Simulator {\n this.u(Matrix.T, ...targets)\n return this\n }\n\n ct(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Matrix.T, ...targets)\n return this\n }\n\n act(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.T, ...targets)\n this.x(...antiControls)\n return this\n }\n\n tDagger(...targets: number[]): Simulator {\n this.u(Matrix.TDagger, ...targets)\n return this\n }\n\n actDagger(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.TDagger, ...targets)\n this.x(...antiControls)\n return this\n }\n\n swap(target0: number, target1: number): Simulator {\n this.cnot(target0, target1).cnot(target1, target0).cnot(target0, target1)\n return this\n }\n\n cswap(control: number, target0: number, target1: number): Simulator {\n this.cnot([control, target0], target1).cnot([control, target1], target0).cnot([control, target0], target1)\n return this\n }\n\n rnot(...targets: number[]): Simulator {\n this.u(Matrix.RNOT, ...targets)\n return this\n }\n\n crnot(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.RNOT, ...targets)\n this.x(...antiControls)\n return this\n }\n\n acrnot(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.RNOT, ...targets)\n this.x(...antiControls)\n return this\n }\n\n rx(theta: string, ...targets: number[]): Simulator {\n this.u(Matrix.RX(theta), ...targets)\n return this\n }\n\n acrx(controls: number | number[], antiControls: number[], theta: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.RX(theta), ...targets)\n this.x(...antiControls)\n return this\n }\n\n crx(controls: number | number[], theta: string, ...targets: number[]): Simulator {\n this.cu(controls, Matrix.RX(theta), ...targets)\n return this\n }\n\n ry(theta: string, ...targets: number[]): Simulator {\n this.u(Matrix.RY(theta), ...targets)\n return this\n }\n\n cry(controls: number | number[], theta: string, ...targets: number[]): Simulator {\n this.cu(controls, Matrix.RY(theta), ...targets)\n return this\n }\n\n acry(controls: number | number[], antiControls: number[], theta: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.RY(theta), ...targets)\n this.x(...antiControls)\n return this\n }\n\n rz(theta: string, ...targets: number[]): Simulator {\n this.u(Matrix.RZ(theta), ...targets)\n return this\n }\n\n crz(controls: number | number[], theta: string, ...targets: number[]): Simulator {\n this.cu(controls, Matrix.RZ(theta), ...targets)\n return this\n }\n\n acrz(controls: number | number[], antiControls: number[], theta: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Matrix.RZ(theta), ...targets)\n this.x(...antiControls)\n return this\n }\n\n qft(span: ResizeableSpan, ...targets: number[]): Simulator {\n for (const each of targets) {\n this.qftSingleTargetBit(span, each)\n }\n return this\n }\n\n private qftSingleTargetBit(span: ResizeableSpan, target: number): Simulator {\n switch (span) {\n case 1: {\n this.h(target)\n break\n }\n case 2: {\n this.swap(target, target + 1)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .h(target + 1)\n break\n }\n case 3: {\n this.swap(target, target + 2)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .h(target + 2)\n break\n }\n case 4: {\n this.swap(target, target + 3)\n .swap(target + 1, target + 2)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .h(target + 3)\n break\n }\n case 5: {\n this.swap(target, target + 4)\n .swap(target + 1, target + 3)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .h(target + 4)\n break\n }\n case 6: {\n this.swap(target, target + 5)\n .swap(target + 1, target + 4)\n .swap(target + 2, target + 3)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .h(target + 5)\n break\n }\n case 7: {\n this.swap(target, target + 6)\n .swap(target + 1, target + 5)\n .swap(target + 2, target + 4)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .h(target + 6)\n break\n }\n case 8: {\n this.swap(target, target + 7)\n .swap(target + 1, target + 6)\n .swap(target + 2, target + 5)\n .swap(target + 3, target + 4)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .h(target + 7)\n break\n }\n case 9: {\n this.swap(target, target + 8)\n .swap(target + 1, target + 7)\n .swap(target + 2, target + 6)\n .swap(target + 3, target + 5)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .h(target + 8)\n break\n }\n case 10: {\n this.swap(target, target + 9)\n .swap(target + 1, target + 8)\n .swap(target + 2, target + 7)\n .swap(target + 3, target + 6)\n .swap(target + 4, target + 5)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .h(target + 9)\n break\n }\n case 11: {\n this.swap(target, target + 10)\n .swap(target + 1, target + 9)\n .swap(target + 2, target + 8)\n .swap(target + 3, target + 7)\n .swap(target + 4, target + 6)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .h(target + 10)\n break\n }\n case 12: {\n this.swap(target, target + 11)\n .swap(target + 1, target + 10)\n .swap(target + 2, target + 9)\n .swap(target + 3, target + 8)\n .swap(target + 4, target + 7)\n .swap(target + 5, target + 6)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .h(target + 11)\n break\n }\n case 13: {\n this.swap(target, target + 12)\n .swap(target + 1, target + 11)\n .swap(target + 2, target + 10)\n .swap(target + 3, target + 9)\n .swap(target + 4, target + 8)\n .swap(target + 5, target + 7)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .h(target + 12)\n break\n }\n case 14: {\n this.swap(target, target + 13)\n .swap(target + 1, target + 12)\n .swap(target + 2, target + 11)\n .swap(target + 3, target + 10)\n .swap(target + 4, target + 9)\n .swap(target + 5, target + 8)\n .swap(target + 6, target + 7)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .cphase(target + 13, '\u03C0/8192', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .cphase(target + 13, '\u03C0/4096', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .cphase(target + 13, '\u03C0/2048', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .cphase(target + 13, '\u03C0/1024', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .cphase(target + 13, '\u03C0/512', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .cphase(target + 13, '\u03C0/256', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .cphase(target + 13, '\u03C0/128', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .cphase(target + 13, '\u03C0/64', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .cphase(target + 13, '\u03C0/32', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .cphase(target + 13, '\u03C0/16', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .cphase(target + 13, '\u03C0/8', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .cphase(target + 14, '\u03C0/4', target + 10)\n .h(target + 12)\n .cphase(target + 14, '\u03C0/2', target + 11)\n .h(target + 13)\n break\n }\n case 15: {\n this.swap(target, target + 14)\n .swap(target + 1, target + 13)\n .swap(target + 2, target + 12)\n .swap(target + 3, target + 11)\n .swap(target + 4, target + 10)\n .swap(target + 5, target + 9)\n .swap(target + 6, target + 8)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .cphase(target + 13, '\u03C0/8192', target)\n .cphase(target + 14, '\u03C0/16384', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .cphase(target + 13, '\u03C0/4096', target + 1)\n .cphase(target + 14, '\u03C0/8192', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .cphase(target + 13, '\u03C0/2048', target + 2)\n .cphase(target + 14, '\u03C0/4096', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .cphase(target + 13, '\u03C0/1024', target + 3)\n .cphase(target + 14, '\u03C0/2048', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .cphase(target + 13, '\u03C0/512', target + 4)\n .cphase(target + 14, '\u03C0/1024', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .cphase(target + 13, '\u03C0/256', target + 5)\n .cphase(target + 14, '\u03C0/512', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .cphase(target + 13, '\u03C0/128', target + 6)\n .cphase(target + 14, '\u03C0/256', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .cphase(target + 13, '\u03C0/64', target + 7)\n .cphase(target + 14, '\u03C0/128', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .cphase(target + 13, '\u03C0/32', target + 8)\n .cphase(target + 14, '\u03C0/64', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .cphase(target + 13, '\u03C0/16', target + 8)\n .cphase(target + 14, '\u03C0/32', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .cphase(target + 13, '\u03C0/8', target + 9)\n .cphase(target + 14, '\u03C0/16', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .cphase(target + 14, '\u03C0/4', target + 10)\n .cphase(target + 15, '\u03C0/8', target + 10)\n .h(target + 12)\n .cphase(target + 14, '\u03C0/2', target + 11)\n .cphase(target + 15, '\u03C0/4', target + 11)\n .h(target + 13)\n .cphase(target + 15, '\u03C0/2', target + 12)\n .h(target + 14)\n break\n }\n case 16: {\n this.swap(target, target + 15)\n .swap(target + 1, target + 14)\n .swap(target + 2, target + 13)\n .swap(target + 3, target + 12)\n .swap(target + 4, target + 11)\n .swap(target + 5, target + 10)\n .swap(target + 6, target + 9)\n .swap(target + 7, target + 8)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .cphase(target + 13, '\u03C0/8192', target)\n .cphase(target + 14, '\u03C0/16384', target)\n .cphase(target + 15, '\u03C0/32768', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .cphase(target + 13, '\u03C0/4096', target + 1)\n .cphase(target + 14, '\u03C0/8192', target + 1)\n .cphase(target + 15, '\u03C0/16384', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .cphase(target + 13, '\u03C0/2048', target + 2)\n .cphase(target + 14, '\u03C0/4096', target + 2)\n .cphase(target + 15, '\u03C0/8192', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .cphase(target + 13, '\u03C0/1024', target + 3)\n .cphase(target + 14, '\u03C0/2048', target + 3)\n .cphase(target + 15, '\u03C0/4096', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .cphase(target + 13, '\u03C0/512', target + 4)\n .cphase(target + 14, '\u03C0/1024', target + 4)\n .cphase(target + 15, '\u03C0/2048', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .cphase(target + 13, '\u03C0/256', target + 5)\n .cphase(target + 14, '\u03C0/512', target + 5)\n .cphase(target + 15, '\u03C0/1024', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .cphase(target + 13, '\u03C0/128', target + 6)\n .cphase(target + 14, '\u03C0/256', target + 6)\n .cphase(target + 15, '\u03C0/512', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .cphase(target + 13, '\u03C0/64', target + 7)\n .cphase(target + 14, '\u03C0/128', target + 7)\n .cphase(target + 15, '\u03C0/256', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .cphase(target + 13, '\u03C0/32', target + 8)\n .cphase(target + 14, '\u03C0/64', target + 8)\n .cphase(target + 15, '\u03C0/128', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .cphase(target + 13, '\u03C0/16', target + 8)\n .cphase(target + 14, '\u03C0/32', target + 8)\n .cphase(target + 15, '\u03C0/64', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .cphase(target + 13, '\u03C0/8', target + 9)\n .cphase(target + 14, '\u03C0/16', target + 9)\n .cphase(target + 15, '\u03C0/32', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .cphase(target + 14, '\u03C0/4', target + 10)\n .cphase(target + 15, '\u03C0/8', target + 10)\n .cphase(target + 16, '\u03C0/16', target + 10)\n .h(target + 12)\n .cphase(target + 14, '\u03C0/2', target + 11)\n .cphase(target + 15, '\u03C0/4', target + 11)\n .cphase(target + 16, '\u03C0/8', target + 11)\n .h(target + 13)\n .cphase(target + 15, '\u03C0/2', target + 12)\n .cphase(target + 16, '\u03C0/4', target + 12)\n .h(target + 14)\n .cphase(target + 16, '\u03C0/2', target + 13)\n .h(target + 15)\n break\n }\n default: {\n throw new Error(`Invalid span: ${span}`)\n }\n }\n return this\n }\n\n qftDagger(span: ResizeableSpan, ...targets: number[]): Simulator {\n for (const each of targets) {\n this.qftDaggerSingleTargetBit(span, each)\n }\n return this\n }\n\n private qftDaggerSingleTargetBit(span: ResizeableSpan, target: number): Simulator {\n switch (span) {\n case 1: {\n this.h(target)\n break\n }\n case 2: {\n this.h(target + 1)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 1)\n break\n }\n case 3: {\n this.h(target + 2)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 2)\n break\n }\n case 4: {\n this.h(target + 3)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 3)\n .swap(target + 1, target + 2)\n break\n }\n case 5: {\n this.h(target + 4)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 4)\n .swap(target + 1, target + 3)\n break\n }\n case 6: {\n this.h(target + 5)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 5)\n .swap(target + 1, target + 4)\n .swap(target + 2, target + 3)\n break\n }\n case 7: {\n this.h(target + 6)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 6)\n .swap(target + 1, target + 5)\n .swap(target + 2, target + 4)\n break\n }\n case 8: {\n this.h(target + 7)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 7)\n .swap(target + 1, target + 6)\n .swap(target + 2, target + 5)\n .swap(target + 3, target + 4)\n break\n }\n case 9: {\n this.h(target + 8)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 8)\n .swap(target + 1, target + 7)\n .swap(target + 2, target + 6)\n .swap(target + 3, target + 5)\n break\n }\n case 10: {\n this.h(target + 9)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 9)\n .swap(target + 1, target + 8)\n .swap(target + 2, target + 7)\n .swap(target + 3, target + 6)\n .swap(target + 4, target + 5)\n break\n }\n case 11: {\n this.h(target + 10)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 10)\n .swap(target + 1, target + 9)\n .swap(target + 2, target + 8)\n .swap(target + 3, target + 7)\n .swap(target + 4, target + 6)\n break\n }\n case 12: {\n this.h(target + 11)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 11)\n .swap(target + 1, target + 10)\n .swap(target + 2, target + 9)\n .swap(target + 3, target + 8)\n .swap(target + 4, target + 7)\n .swap(target + 5, target + 6)\n break\n }\n case 13: {\n this.h(target + 12)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 12)\n .swap(target + 1, target + 11)\n .swap(target + 2, target + 10)\n .swap(target + 3, target + 9)\n .swap(target + 4, target + 8)\n .swap(target + 5, target + 7)\n break\n }\n case 14: {\n this.h(target + 13)\n .cphase(target + 13, '-\u03C0/2', target + 12)\n .h(target + 12)\n .cphase(target + 13, '-\u03C0/4', target + 11)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 13, '-\u03C0/8', target + 10)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target)\n .h(target + 10)\n .cphase(target + 13, '-\u03C0/16', target + 9)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 13, '-\u03C0/32', target + 8)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 13, '-\u03C0/64', target + 7)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 13, '-\u03C0/128', target + 6)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 13, '-\u03C0/256', target + 5)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 13, '-\u03C0/512', target + 4)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 13, '-\u03C0/1024', target + 3)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 13, '-\u03C0/2048', target + 2)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 13, '-\u03C0/4096', target + 1)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 13, '-\u03C0/8192', target)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 13)\n .swap(target + 1, target + 12)\n .swap(target + 2, target + 11)\n .swap(target + 3, target + 10)\n .swap(target + 4, target + 9)\n .swap(target + 5, target + 8)\n .swap(target + 6, target + 7)\n break\n }\n case 15: {\n this.h(target + 14)\n .cphase(target + 14, '-\u03C0/2', target + 13)\n .h(target + 13)\n .cphase(target + 14, '-\u03C0/4', target + 12)\n .cphase(target + 13, '-\u03C0/2', target + 12)\n .h(target + 12)\n .cphase(target + 14, '-\u03C0/8', target + 11)\n .cphase(target + 13, '-\u03C0/4', target + 11)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 14, '-\u03C0/16', target + 10)\n .cphase(target + 13, '-\u03C0/8', target + 10)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 14, '-\u03C0/32', target + 9)\n .cphase(target + 13, '-\u03C0/16', target + 9)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 14, '-\u03C0/64', target + 8)\n .cphase(target + 13, '-\u03C0/32', target + 8)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 14, '-\u03C0/128', target + 7)\n .cphase(target + 13, '-\u03C0/64', target + 7)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 14, '-\u03C0/256', target + 6)\n .cphase(target + 13, '-\u03C0/128', target + 6)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 14, '-\u03C0/512', target + 5)\n .cphase(target + 13, '-\u03C0/256', target + 5)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 14, '-\u03C0/1024', target + 4)\n .cphase(target + 13, '-\u03C0/512', target + 4)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 14, '-\u03C0/2048', target + 3)\n .cphase(target + 13, '-\u03C0/1024', target + 3)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 14, '-\u03C0/4096', target + 2)\n .cphase(target + 13, '-\u03C0/2048', target + 2)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 14, '-\u03C0/8192', target + 1)\n .cphase(target + 13, '-\u03C0/4096', target + 1)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 14, '-\u03C0/16384', target)\n .cphase(target + 13, '-\u03C0/8192', target)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 14)\n .swap(target + 1, target + 13)\n .swap(target + 2, target + 12)\n .swap(target + 3, target + 11)\n .swap(target + 4, target + 10)\n .swap(target + 5, target + 9)\n .swap(target + 6, target + 8)\n break\n }\n case 16: {\n this.h(target + 15)\n .cphase(target + 15, '-\u03C0/2', target + 14)\n .h(target + 14)\n .cphase(target + 15, '-\u03C0/4', target + 13)\n .cphase(target + 14, '-\u03C0/4', target + 13)\n .h(target + 13)\n .cphase(target + 15, '-\u03C0/8', target + 12)\n .cphase(target + 14, '-\u03C0/4', target + 12)\n .cphase(target + 13, '-\u03C0/2', target + 12)\n .h(target + 12)\n .cphase(target + 15, '-\u03C0/16', target + 11)\n .cphase(target + 14, '-\u03C0/8', target + 11)\n .cphase(target + 13, '-\u03C0/4', target + 11)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 15, '-\u03C0/32', target + 10)\n .cphase(target + 14, '-\u03C0/16', target + 10)\n .cphase(target + 13, '-\u03C0/8', target + 10)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 15, '-\u03C0/64', target + 9)\n .cphase(target + 14, '-\u03C0/32', target + 9)\n .cphase(target + 13, '-\u03C0/16', target + 9)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 15, '-\u03C0/128', target + 8)\n .cphase(target + 14, '-\u03C0/64', target + 8)\n .cphase(target + 13, '-\u03C0/32', target + 8)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 15, '-\u03C0/256', target + 7)\n .cphase(target + 14, '-\u03C0/128', target + 7)\n .cphase(target + 13, '-\u03C0/64', target + 7)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 15, '-\u03C0/512', target + 6)\n .cphase(target + 14, '-\u03C0/256', target + 6)\n .cphase(target + 13, '-\u03C0/128', target + 6)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 15, '-\u03C0/1024', target + 5)\n .cphase(target + 14, '-\u03C0/512', target + 5)\n .cphase(target + 13, '-\u03C0/256', target + 5)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 15, '-\u03C0/2048', target + 4)\n .cphase(target + 14, '-\u03C0/1024', target + 4)\n .cphase(target + 13, '-\u03C0/512', target + 4)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 15, '-\u03C0/4096', target + 3)\n .cphase(target + 14, '-\u03C0/2048', target + 3)\n .cphase(target + 13, '-\u03C0/1024', target + 3)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 15, '-\u03C0/8192', target + 2)\n .cphase(target + 14, '-\u03C0/4096', target + 2)\n .cphase(target + 13, '-\u03C0/2048', target + 2)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 15, '-\u03C0/16384', target + 1)\n .cphase(target + 14, '-\u03C0/8192', target + 1)\n .cphase(target + 13, '-\u03C0/4096', target + 1)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 15, '-\u03C0/32768', target)\n .cphase(target + 14, '-\u03C0/16384', target)\n .cphase(target + 13, '-\u03C0/8192', target)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target + 1, target + 15)\n .swap(target + 2, target + 14)\n .swap(target + 3, target + 13)\n .swap(target + 4, target + 12)\n .swap(target + 5, target + 11)\n .swap(target + 6, target + 10)\n .swap(target + 7, target + 9)\n .swap(target + 8, target + 8)\n .swap(target + 9, target + 7)\n .swap(target + 10, target + 6)\n break\n }\n default: {\n throw new Error(`Invalid span: ${span}`)\n }\n }\n return this\n }\n\n measure(...targets: number[]): Simulator {\n for (const t of targets) {\n const pZero = this.pZero(t)\n const rand = Math.random()\n\n if (rand <= pZero) {\n for (let bit = 0; bit < 1 << this.state.nqubit; bit++) {\n if ((bit & (1 << t)) !== 0) this.state.setAmplifier(bit, Complex.ZERO)\n const res = this.state.amplifier(bit).div(Math.sqrt(pZero))\n if (res.isOk()) {\n this.state.setAmplifier(bit, res.value)\n } else {\n throw Error(res.error.message)\n }\n }\n this.measuredBits[t] = 0\n } else {\n for (let bit = 0; bit < 1 << this.state.nqubit; bit++) {\n if ((bit & (1 << t)) === 0) this.state.setAmplifier(bit, Complex.ZERO)\n const res = this.state.amplifier(bit).div(Math.sqrt(1 - pZero))\n if (res.isOk()) {\n this.state.setAmplifier(bit, res.value)\n } else {\n throw Error(res.error.message)\n }\n }\n this.measuredBits[t] = 1\n }\n }\n return this\n }\n\n amplitudes(): Complex[] {\n return this.state.matrix.columnAt(0)\n }\n\n private u(u: Matrix, ...targets: number[]): void {\n for (const t of targets) {\n this.state.timesQubitOperation(u, t, 0)\n }\n }\n\n private cu(controls: number | number[], u: Matrix, ...targets: number[]): void {\n const cs = typeof controls === 'number' ? [controls] : controls\n const controlMask = cs.reduce((result, each) => {\n return result | (1 << each)\n }, 0)\n\n for (const t of targets) {\n this.state.timesQubitOperation(u, t, controlMask)\n }\n }\n\n private pZero(target: number): number {\n let p = 0\n for (let bit = 0; bit < 1 << this.state.nqubit; bit++) {\n if ((bit & (1 << target)) === 0) {\n p += Math.pow(this.state.amplifier(bit).abs(), 2)\n }\n }\n return p\n }\n}\n", "import Fraction from 'fraction.js'\n\nexport function radian(angle: string): number {\n const coefficient = piCoefficient(angle)\n const fraction = new Fraction(coefficient).valueOf()\n\n return fraction * Math.PI\n}\n\n// TODO: neverthrow \u5316\nexport function angleDenominator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return 1\n } else if (split.length === 2) {\n return parseInt(split[1])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\n// TODO: neverthrow \u5316\nexport function angleNumerator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return parseInt(split[0])\n } else if (split.length === 2) {\n return parseInt(split[0])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\nexport function isAngleLessThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() < new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isAngleGreaterThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() > new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isValidAngle(angle: string): boolean {\n if (angle === '0') return true\n if (!/\u03C0/.test(angle)) return false\n\n try {\n const coefficient = piCoefficient(angle)\n new Fraction(coefficient).valueOf()\n\n return true\n } catch (e) {\n return false\n }\n}\n\nexport function piCoefficient(angle: string): string {\n return angle.replace(/(\\d+)\u03C0/g, '$1').replace(/\u03C0/g, '1')\n}\n\nexport function reduceAngle(angle: string): string {\n try {\n const coefficient = piCoefficient(angle)\n const reduced = new Fraction(coefficient).toFraction()\n const split = reduced.split('/')\n\n let numerator: string\n if (split[0] === '0') {\n numerator = '0'\n } else if (split[0] === '1') {\n numerator = `\u03C0`\n } else if (split[0] === '-1') {\n numerator = `-\u03C0`\n } else {\n numerator = `${split[0]}\u03C0`\n }\n\n if (split.length === 1) {\n return numerator\n } else {\n return `${numerator}/${split[1]}`\n }\n } catch (e) {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n", "type UnicodeFraction = {character: string; ref: string; value: number}\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const UNICODE_FRACTIONS = [\n {character: '\\u00BD', ref: '\u00BD', expanded: '1/2', value: 1 / 2},\n {character: '\\u00BC', ref: '\u00BC', expanded: '1/4', value: 1 / 4},\n {character: '\\u00BE', ref: '\u00BE', expanded: '3/4', value: 3 / 4},\n {character: '\\u2153', ref: '\u2153', expanded: '1/3', value: 1 / 3},\n {character: '\\u2154', ref: '\u2154', expanded: '2/3', value: 2 / 3},\n {character: '\\u2155', ref: '\u2155', expanded: '1/5', value: 1 / 5},\n {character: '\\u2156', ref: '\u2156', expanded: '2/5', value: 2 / 5},\n {character: '\\u2157', ref: '\u2157', expanded: '3/5', value: 3 / 5},\n {character: '\\u2158', ref: '\u2158', expanded: '4/5', value: 4 / 5},\n {character: '\\u2159', ref: '\u2159', expanded: '1/6', value: 1 / 6},\n {character: '\\u215A', ref: '\u215A', expanded: '5/6', value: 5 / 6},\n {character: '\\u2150', ref: '\u2150', expanded: '1/7', value: 1 / 7},\n {character: '\\u215B', ref: '\u215B', expanded: '1/8', value: 1 / 8},\n {character: '\\u215C', ref: '\u215C', expanded: '3/8', value: 3 / 8},\n {character: '\\u215D', ref: '\u215D', expanded: '5/8', value: 5 / 8},\n {character: '\\u215E', ref: '\u215E', expanded: '7/8', value: 7 / 8},\n {character: '\\u2151', ref: '\u2151', expanded: '1/9', value: 1 / 9},\n {character: '\\u2152', ref: '\u2152', expanded: '1/10', value: 1 / 10},\n]\n\n/**\n * Stores formatting options, for determining what string output should look\n * like.\n */\nexport class Format {\n /**\n * Returns an approximated result, but with the constraint that when it\n * changes slightly it should \"look the same\". (It should look good when\n * varying and animated.)\n */\n static readonly CONSISTENT = new Format(false, 0, 2, ', ')\n\n /**\n * Returns an accurate result, but favoring looking nice over being small.\n */\n static readonly EXACT = new Format(true, 0, undefined, ', ')\n\n /**\n * Returns an accurate result, favoring being small over looking nice.\n */\n static readonly MINIFIED = new Format(true, 0, undefined, ',')\n\n /**\n * Returns an approximated result, strongly favoring looking nice.\n */\n static readonly SIMPLIFIED = new Format(true, 0.0005, 3, ', ')\n\n /**\n * Parses the given text into a float. Works for text created by\n * [[formatFloat]].\n */\n static parseFloat(text: string): number {\n if (text.length === 0) {\n throw new Error(`Not a number: '${text}'`)\n }\n if (text[0] === '-') {\n return -Format.parseFloat(text.substr(1))\n }\n if (text[0] === '\\u221A') {\n return Math.sqrt(Format.parseFloat(text.substr(1)))\n }\n\n const fraction = Format.matchUnicodeFraction(e => e.character === text)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const result = parseFloat(text)\n if (isNaN(result)) {\n throw new Error(`Not a number: '${text}'`)\n }\n return result\n }\n\n /**\n * Corrects a value to a nearby simple fraction or root thereof, such as\n * sqrt(1/2), so it can be printed compactly.\n *\n * @param value The value to round.\n * @param epsilon The maximum offset error introduced by the rounding.\n */\n static simplifyByRounding(value: number, epsilon: number): number {\n if (value < 0) {\n return -Format.simplifyByRounding(-value, epsilon)\n }\n\n const r = value % 1\n if (r <= epsilon || 1 - r <= epsilon) {\n return Math.round(value)\n }\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return Math.sqrt(rootFraction.value)\n }\n\n return value\n }\n\n /**\n * Returns the first element of an array matching the given predicate, or else\n * returns undefined.\n *\n * @hidden\n */\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n /**\n * @param allowAbbreviation Should outputs be shortened, if possible?\n * @param maxAbbreviationError How much error is abbreviating allowed to introduce?\n * @param fixedDigits Use toFixed? How many digits?\n * @param itemSeparator What should list items be separated by?\n */\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator: string,\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n formatFloat(f: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateFloat(f, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return f.toFixed(this.fixedDigits)\n }\n return String(f)\n }\n\n /**\n * Returns a string representation of a float, taking advantage of unicode\n * fractions and square roots.\n *\n * @param value The value to represent as a string.\n * @param epsilon The maximum error introduced by using an expression.\n * @param digits digits The number of digits to use if no expression matches.\n */\n private abbreviateFloat(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateFloat(-value, epsilon, digits)}`\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {UNICODE_FRACTIONS} from './format'\n\ntype UnicodeFraction = {character: string; ref: string; value: number}\n\nexport class NumberFormatter {\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator = ', ',\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n format(n: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateNumber(n, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return n.toFixed(this.fixedDigits)\n }\n return String(n)\n }\n\n private abbreviateNumber(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateNumber(-value, epsilon, digits)}`\n\n const fraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {NumberFormatter} from './number-formatter'\nimport {ok, err, Result} from 'neverthrow'\n\ntype FormatOptions = {\n allowAbbreviation?: boolean\n maxAbbreviationError?: number\n fixedDigits?: number | undefined\n}\n\nconst DEFAULT_FORMAT_OPTIONS = {\n allowAbbreviation: true,\n maxAbbreviationError: 0,\n fixedDigits: undefined,\n}\n\nexport class Complex {\n /**\n * Complex { real: 0, imag: 0 }\n */\n static readonly ZERO = new Complex(0, 0)\n /**\n * Complex { real: 1, imag: 0 }\n */\n static readonly ONE = new Complex(1, 0)\n /**\n * The imaginary unit.\n */\n static readonly I = new Complex(0, 1)\n\n /**\n * The real part of the Complex number.\n */\n public real: number\n /**\n * The imaginary part of the Complex number.\n */\n public imag: number\n\n /**\n * Converts the given value to a Complex value.\n *\n * @param value - The value to convert to a Complex value\n */\n static from(value: number | Complex): Complex {\n if (typeof value === 'number') {\n return new Complex(value, 0)\n }\n\n return value\n }\n\n /**\n * Returns the real part of a Complex or a number value.\n *\n * @param value - The value to get the real part of\n */\n static real(value: number | Complex): number {\n if (typeof value === 'number') {\n return value\n }\n\n return value.real\n }\n\n /**\n * Returns the imaginary part of a Complex value, or else 0 for number values.\n *\n * @param value - The value to get the imaginary part of\n */\n static imag(value: number | Complex): number {\n if (typeof value === 'number') {\n return 0\n }\n\n return value.imag\n }\n\n /**\n * Returns a new Complex number with the given magnitude and phase.\n *\n * @param magnitude - The magnitude of the Complex number\n * @param phase - The phase of the Complex number\n */\n static polar(magnitude: number, phase: number): Complex {\n const [cos, sin] = this.cosAndSin(phase)\n\n return new Complex(magnitude * cos, magnitude * sin)\n }\n\n private static cosAndSin(radians: number): number[] {\n const unit = Math.PI / 4\n const i = Math.round(radians / unit)\n if (i * unit === radians) {\n const s = Math.sqrt(0.5)\n const snaps = [\n [1, 0], // 0\n [s, s], // \u03C0/4\n [0, 1], // \u03C0/2\n [-s, s], // 3\u03C0/4\n [-1, 0], // \u03C0\n [-s, -s], // 5\u03C0/4\n [0, -1], // 3\u03C0/2\n [s, -s], // 7\u03C0/4\n ]\n return snaps[i & 7]\n }\n return [Math.cos(radians), Math.sin(radians)]\n }\n\n /**\n * @param real - The real part of the Complex number\n * @param imag - The imaginary part of the Complex number\n */\n constructor(real: number, imag: number) {\n this.real = real\n this.imag = imag\n\n this.isApproximatelyEqualTo = this.nearlyEq // alias for nearlyEq\n this.isEqualTo = this.eq // alias for eq\n this.conj = this.conjugate // alias for conjugate\n this.plus = this.add // alias for add\n // aliases for sub\n this.subtract = this.sub\n this.minus = this.sub\n // aliases for mult\n this.multiply = this.mult\n this.times = this.mult\n this.dividedBy = this.div // alias for div\n this.magnitude = this.abs // alias for abs\n this.norm2 = this.abs2 // alias for abs2\n // aliases for arg\n this.angle = this.arg\n this.phase = this.arg\n }\n\n /**\n * Returns true if complex number is equal to other.\n *\n * @param other - The other value to compare with\n */\n eq(other: unknown): boolean {\n if (typeof other === 'number') {\n return this.real === other && this.imag === 0\n }\n if (other instanceof Complex) {\n return this.real === other.real && this.imag === other.imag\n }\n return false\n }\n\n isEqualTo = this.eq.bind(this)\n\n /**\n * Returns true if the Complex number is close to the value of other.\n *\n * @param other - The other value to compare with\n */\n nearlyEq(other: number | Complex | unknown, epsilon: number): boolean {\n if (typeof other === 'number' || other instanceof Complex) {\n const d = this.sub(Complex.from(other))\n return Math.abs(d.real) <= epsilon && Math.abs(d.imag) <= epsilon && d.abs() <= epsilon\n }\n return false\n }\n\n isApproximatelyEqualTo = this.nearlyEq.bind(this)\n\n /**\n * Returns the complex conjugate.\n *\n * @returns A new Complex representing the complex conjugate of this complex number\n */\n conjugate(): Complex {\n return new Complex(this.real, -this.imag)\n }\n\n conj = this.conjugate.bind(this)\n\n /**\n * Returns negation of the value.\n *\n * @returns A new Complex representing the negation of this complex number.\n */\n neg(): Complex {\n return new Complex(-this.real, -this.imag)\n }\n\n /**\n * Returns the sum of this complex number and value.\n *\n * @param value - The addend number.\n * @returns A new Complex representing the sum of this complex number and value.\n */\n add(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real + c.real, this.imag + c.imag)\n }\n\n plus = this.add.bind(this)\n\n /**\n * Returns the subtraction of this complex number and value.\n *\n * @param value - The subtrahend number.\n * @returns A new Complex representing the subtraction of this complex number and value.\n */\n sub(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real - c.real, this.imag - c.imag)\n }\n\n subtract = this.sub.bind(this)\n minus = this.sub.bind(this)\n\n /**\n * Returns the product of this complex number and value.\n *\n * @param value - The multiplier number.\n * @returns A new Complex representing the product of this complex number and value.\n */\n mult(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real * c.real - this.imag * c.imag, this.real * c.imag + this.imag * c.real)\n }\n\n multiply = this.mult.bind(this)\n times = this.mult.bind(this)\n\n /**\n * Returns a complex number divided by value.\n * If value is zero, returns an error.\n *\n * @param value - The divisor number.\n * @returns A Result object with the result of division or a division-by-zero error.\n * @example\n * ```\n * const res = new Complex(2, 3).div(2)\n * if (res.isOk()) {\n * console.log(res.value) // Complex { real: 1, imag: 1.5 }\n * } else {\n * console.error(res.error)\n * }\n * ```\n */\n div(value: number | Complex): Result {\n const c = Complex.from(value)\n const d = c.abs2()\n if (d === 0) {\n return err(Error('Division by Zero'))\n }\n\n const n = this.mult(c.conjugate())\n return ok(new Complex(n.real / d, n.imag / d))\n }\n\n dividedBy = this.div.bind(this)\n\n /**\n * Returns the absolute part of its polar form.\n *\n * @returns A number representing the absolute part of its polar form.\n * @example\n * ```\n * new Complex(-1, 0).abs() // 1\n * new Complex(3, 4).abs() // 5\n * ```\n */\n abs(): number {\n return Math.sqrt(this.abs2())\n }\n\n magnitude = this.abs.bind(this)\n\n /**\n * Returns square of the absolute value.\n *\n * @returns A number representing the square of the absolute value.\n * @example\n * ```\n * new Complex(-1, 0).abs2() // 1\n * new Complex(3, 4).abs2() // 25\n * ```\n */\n abs2(): number {\n return this.real * this.real + this.imag * this.imag\n }\n\n norm2 = this.abs2.bind(this)\n\n /**\n * Returns the angle part of its polar form.\n *\n * @returns A number representing the angle part of its polar form in radians.\n */\n arg(): number {\n return Math.atan2(this.imag, this.real)\n }\n\n angle = this.arg.bind(this)\n phase = this.arg.bind(this)\n\n /**\n * Returns the exponentiation of a complex number. That is c.pow(x) = c^x.\n *\n * @param exponent - the exponent number\n * @returns A number representing base taken to the power of exponent\n */\n pow(exponent: number | Complex): Complex {\n if (exponent === 0.5 && this.imag === 0 && this.real >= 0) {\n return new Complex(Math.sqrt(this.real), 0)\n }\n if (this.eq(Complex.ZERO)) {\n return Complex.ZERO\n }\n return this.ln().mult(Complex.from(exponent)).exp()\n }\n\n /**\n * Returns e raised to the c power. That is c.exp() = e^c.\n */\n exp(): Complex {\n return Complex.polar(Math.exp(this.real), this.imag)\n }\n\n /**\n * Returns a string representing this complex number according to the specified format.\n *\n * @param options - An object that sets the format options for this complex number.\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).format() // '1+2i'\n * new Complex(1, 2).format({\n * allowAbbreviation: false,\n * fixedDigits: 2,\n * }) // '+1.00+2.00i'\n * ```\n */\n format(options: FormatOptions = DEFAULT_FORMAT_OPTIONS): string {\n const format = new NumberFormatter(\n options.allowAbbreviation === undefined ? DEFAULT_FORMAT_OPTIONS.allowAbbreviation : options.allowAbbreviation,\n options.maxAbbreviationError || 0,\n options.fixedDigits,\n )\n return format.allowAbbreviation ? this.toStringAllowSingleValue(format) : this.toStringBothValues(format)\n }\n\n /**\n * Returns a compact string representing this Complex number.\n *\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).toString() // '1+2i'\n * new Complex(Math.sqrt(1 / 2), -1 / 3).toString() // '\u221A\u00BD-\u2153i'\n * ```\n */\n toString(): string {\n const formatter = new NumberFormatter(\n DEFAULT_FORMAT_OPTIONS.allowAbbreviation,\n DEFAULT_FORMAT_OPTIONS.maxAbbreviationError,\n DEFAULT_FORMAT_OPTIONS.fixedDigits,\n )\n return this.toStringAllowSingleValue(formatter)\n }\n\n // log(c) = ln|c| + arg(c)i\n private ln(): Complex {\n return new Complex(Math.log(this.abs()), this.arg())\n }\n\n // If a complex number has only real or imaginary parts,\n // convert it to a string with only real or imaginary parts, such as '\u2153' or '-3i'.\n private toStringAllowSingleValue(formatter: NumberFormatter): string {\n if (this.canImagPartBeOmitted(formatter.maxAbbreviationError)) {\n return formatter.format(this.real)\n }\n\n if (this.canRealPartBeOmitted(formatter.maxAbbreviationError)) {\n let imagFactor\n\n if (this.isImagFactorCloseToOne(formatter.maxAbbreviationError)) {\n imagFactor = ''\n } else if (this.isImagFactorMinusOne(formatter.maxAbbreviationError)) {\n imagFactor = '-'\n } else {\n imagFactor = formatter.format(this.imag)\n }\n\n return `${imagFactor}i`\n }\n\n return this.toStringBothValues(formatter)\n }\n\n // Convert a complex number whose real and imaginary parts are not both zero into a string like '\u2153-3i'.\n private toStringBothValues(formatter: NumberFormatter): string {\n const imagSign = this.imag >= 0 ? '+' : '-'\n const imagFactor = this.canImagFactorBeOmitted(formatter) ? '' : formatter.format(Math.abs(this.imag))\n const realPlusSign = formatter.allowAbbreviation || formatter.fixedDigits === undefined || this.real < 0 ? '' : '+'\n\n return `${realPlusSign + formatter.format(this.real) + imagSign + imagFactor}i`\n }\n\n // Returns whether the real part of a complex number can be omitted.\n private canRealPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.real) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number can be omitted.\n private canImagPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to 1.\n private isImagFactorCloseToOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag - 1) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to -1.\n private isImagFactorMinusOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag + 1) <= maxAbbreviationError\n }\n\n // Returns true if the factor of the imaginary part can be omitted, such as i or -i.\n private canImagFactorBeOmitted(formatter: NumberFormatter): boolean {\n return formatter.allowAbbreviation && Math.abs(Math.abs(this.imag) - 1) <= formatter.maxAbbreviationError\n }\n}\n", "export const Config = {\n MAX_QUBIT_COUNT: 16,\n} as const\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {format as prettyFormat} from 'pretty-format'\n\nlet CONSTRUCTOR_CALLS_NESTING = 0\n\nexport class DetailedError extends Error {\n public details: string | undefined\n private detailsObj: unknown\n\n constructor(message: string, detailsObj: unknown) {\n super(message)\n\n this.detailsObj = detailsObj\n this.name = 'Error'\n this.message = message\n this.stack = new Error().stack\n if (this.stack !== undefined) {\n this.stack = this.stack.replace(/^Error\\n\\s+at new DetailedError (\\S+)\\s?\\n\\s+at /, '\\n ')\n }\n\n CONSTRUCTOR_CALLS_NESTING++\n try {\n this.details =\n CONSTRUCTOR_CALLS_NESTING === 1\n ? prettyFormat(this.detailsObj)\n : '(failed to prettyFormat detailsObj due to possibly re-entrancy)'\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error(ex)\n this.details = '(failed to prettyFormat detailsObj, see the console for details)'\n } finally {\n CONSTRUCTOR_CALLS_NESTING--\n }\n }\n}\n", "/**\n * Emit a custom event\n *\n * @param type The event type\n * @param detail Any details to pass along with the event\n * @param element The element to attach the event to\n */\nexport function emitEvent(type: string, detail = {}, element: Node = document): boolean {\n const event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail,\n })\n\n return element.dispatchEvent(event)\n}\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function hasOwnProperty(obj: unknown, key: K): obj is Record {\n return obj !== null && obj !== undefined && key in (obj as Record)\n}\n\nexport type ArrayIsh =\n | unknown[]\n | Float32Array\n | Float64Array\n | Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Uint8ClampedArray\n\nconst GENERIC_ARRAY_TYPES = [\n Float32Array,\n Float64Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Uint8ClampedArray,\n]\n\nexport function equate(subject: unknown, other: unknown): boolean {\n if (subject === other || (isExactlyNaN(subject) && isExactlyNaN(other))) {\n return true\n }\n\n const customEquality = tryEquateCustom(subject, other)\n if (customEquality !== undefined) {\n return customEquality\n }\n if (isAtomic(subject) || isAtomic(other) || !eqType(subject, other)) {\n return false\n }\n\n if (subject instanceof Map && other instanceof Map) {\n return equateMaps(subject, other)\n }\n if (subject instanceof Set && other instanceof Set) {\n return equateSets(subject, other)\n }\n if (isIndexable(subject) && isIndexable(other)) {\n return equateIndexables(subject, other)\n }\n\n return equateObjects(subject, other)\n}\n\nfunction isIndexable(value: unknown): value is ArrayIsh {\n return Array.isArray(value) || !GENERIC_ARRAY_TYPES.every(t => !(value instanceof t))\n}\n\nfunction isExactlyNaN(v: unknown) {\n return typeof v === 'number' && isNaN(v)\n}\n\nfunction tryEquateCustom(subject: unknown, other: unknown): boolean | undefined {\n if (!isAtomic(subject) && hasOwnProperty(subject, 'isEqualTo') && typeof subject.isEqualTo === 'function') {\n return subject.isEqualTo(other) as boolean\n }\n if (!isAtomic(other) && hasOwnProperty(other, 'isEqualTo') && typeof other.isEqualTo === 'function') {\n return other.isEqualTo(subject) as boolean\n }\n return undefined\n}\n\ntype Atomic = null | undefined | string | number | boolean\n\nfunction isAtomic(value: unknown): value is Atomic {\n return (\n value === null ||\n value === undefined ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n )\n}\n\nfunction equateMaps(subject: Map, other: Map) {\n if (subject.size !== other.size) {\n return false\n }\n for (const [k, v] of subject) {\n if (!other.has(k)) {\n return false\n }\n const otherV = other.get(k)\n if (!equate(v, otherV)) {\n return false\n }\n }\n return true\n}\n\nfunction equateSets(subject: Set, other: Set) {\n if (subject.size !== other.size) {\n return false\n }\n for (const k of subject) {\n if (!other.has(k)) {\n return false\n }\n }\n return true\n}\n\nfunction eqType(subject: unknown, other: unknown): boolean {\n return typeof subject === typeof other\n}\n\nfunction equateIndexables(subject: ArrayIsh, other: ArrayIsh) {\n if (subject.length !== other.length) {\n return false\n }\n for (let i = 0; i < subject.length; i++) {\n if (!equate(subject[i], other[i])) {\n return false\n }\n }\n return true\n}\n\nfunction objectKeys(obj: unknown) {\n const result = new Set()\n for (const k in obj as Record) {\n if (hasOwnProperty(obj, k)) {\n result.add(k)\n }\n }\n return result\n}\n\nfunction equateObjects(subject: unknown, other: unknown) {\n const keys = objectKeys(subject)\n if (!equateSets(keys, objectKeys(other))) {\n return false\n }\n\n for (const k of keys) {\n if (k === Symbol.iterator) {\n continue\n }\n if (!equate((subject as Record)[k as string], (other as Record)[k as string])) {\n return false\n }\n }\n\n const hasSubjectIter = hasOwnProperty(subject, Symbol.iterator)\n const hasOtherIter = hasOwnProperty(other, Symbol.iterator)\n if (hasSubjectIter !== hasOtherIter) {\n return false\n }\n if (hasSubjectIter && hasOtherIter) {\n if (!equateIterables(subject as Iterable, other as Iterable)) {\n return false\n }\n }\n\n return true\n}\n\nfunction equateIterables(subject: Iterable, other: Iterable) {\n const otherIter = other[Symbol.iterator]()\n for (const subjectItem of subject) {\n const otherItemDone = otherIter.next()\n if (otherItemDone.done || !equate(subjectItem, otherItemDone.value)) {\n return false\n }\n }\n return otherIter.next().done\n}\n", "import {Config} from './config'\n\nexport type CreateArrayWithLengthX = ACC['length'] extends LENGTH\n ? ACC\n : CreateArrayWithLengthX\n\nexport type NumericRange<\n START_ARR extends number[],\n END extends number,\n ACC extends number = never,\n> = START_ARR['length'] extends END ? ACC | END : NumericRange<[...START_ARR, 1], END, ACC | START_ARR['length']>\n\nexport type ResizeableSpan = NumericRange, typeof Config.MAX_QUBIT_COUNT>\n\nexport const isResizeableSpan = (arg: unknown): arg is ResizeableSpan =>\n typeof arg == 'number' && 1 <= arg && arg <= Config.MAX_QUBIT_COUNT\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Result} from 'neverthrow'\n\ntype ParseError = {message: string}\nconst toParseError = (): ParseError => ({message: 'Parse Error'})\n\nexport class Util {\n static need(expression: boolean, message: string, args?: unknown[]): asserts expression {\n if (expression !== true) {\n const argDesc = args === undefined ? '(not provided)' : `[${Array.prototype.slice.call(args).join(', ')}]`\n const msgDesc = message === undefined ? '(not provided)' : message\n const msg = `Precondition failed\\n\\nMessage: ${msgDesc}\\n\\nArgs: ${argDesc}`\n throw new Error(msg)\n }\n }\n\n static notNull(v: T): asserts v is NonNullable {\n Util.need(v !== null && v !== undefined, 'notNull')\n }\n\n // \u73FE\u5728\u306E URL \u3092\u30D1\u30FC\u30B9\u3057\u3001\u6700\u5F8C\u306E / \u4EE5\u964D\u3092\u30C7\u30B3\u30FC\u30C9\u3057\u305F\u3082\u306E\u3092\u8FD4\u3059\n static get urlJson(): string {\n const url = new URL(location.href, window.location.origin)\n const path = decodeURIComponent(url.pathname)\n const lastSlashIndex = path.lastIndexOf('/')\n\n return path.substring(lastSlashIndex + 1)\n }\n\n static safeJsonParse = Result.fromThrowable(JSON.parse, toParseError)\n}\n", "export const SerializedAntiControlGateType = '\u25E6'\n\nexport type SerializedAntiControlGate = {\n type: typeof SerializedAntiControlGateType\n targets: number[]\n}\n", "export const SerializedBlochDisplayType = 'Bloch'\n\nexport type SerializedBlochDisplay = {\n type: typeof SerializedBlochDisplayType\n targets: number[]\n}\n", "export const SerializedControlGateType = '\u2022'\n\nexport type SerializedControlGate = {\n type: typeof SerializedControlGateType\n targets: number[]\n}\n", "export const SerializedHGateType = 'H'\n\nexport type SerializedHGate = {\n type: typeof SerializedHGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedMeasurementGateType = 'Measure'\n\nexport type SerializedMeasurementGate = {\n type: typeof SerializedMeasurementGateType\n targets: number[]\n flag?: string\n}\n", "export const SerializedPhaseGateType = 'P'\n\nexport type SerializedPhaseGate = {\n type: typeof SerializedPhaseGateType\n angle?: string\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftDaggerGateType = 'QFT\u2020'\n\nexport type SerializedQftDaggerGate = {\n type: typeof SerializedQftDaggerGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftGateType = 'QFT'\n\nexport type SerializedQftGate = {\n type: typeof SerializedQftGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "export const SerializedRnotGateType = 'X^\u00BD'\n\nexport type SerializedRnotGate = {\n type: typeof SerializedRnotGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRxGateType = 'Rx'\n\nexport type SerializedRxGate = {\n type: typeof SerializedRxGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRyGateType = 'Ry'\n\nexport type SerializedRyGate = {\n type: typeof SerializedRyGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRzGateType = 'Rz'\n\nexport type SerializedRzGate = {\n type: typeof SerializedRzGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSDaggerGateType = 'S\u2020'\n\nexport type SerializedSDaggerGate = {\n type: typeof SerializedSDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSGateType = 'S'\n\nexport type SerializedSGate = {\n type: typeof SerializedSGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSpacerGateType = '\u2026'\n\nexport type SerializedSpacerGate = {\n type: typeof SerializedSpacerGateType\n targets: number[]\n}\n", "export const SerializedSwapGateType = 'Swap'\n\nexport type SerializedSwapGate = {\n type: typeof SerializedSwapGateType\n targets: [number, number]\n controls?: number[]\n}\n", "export const SerializedTDaggerGateType = 'T\u2020'\n\nexport type SerializedTDaggerGate = {\n type: typeof SerializedTDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedTGateType = 'T'\n\nexport type SerializedTGate = {\n type: typeof SerializedTGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedWrite0GateType = '|0>'\nexport const SerializedWrite1GateType = '|1>'\n\nexport type SerializedWriteGate = {\n type: typeof SerializedWrite0GateType | typeof SerializedWrite1GateType\n targets: number[]\n}\n", "export const SerializedXGateType = 'X'\n\nexport type SerializedXGate = {\n type: typeof SerializedXGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedYGateType = 'Y'\n\nexport type SerializedYGate = {\n type: typeof SerializedYGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedZGateType = 'Z'\n\nexport type SerializedZGate = {\n type: typeof SerializedZGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar defaultErrorConfig = {\r\n withStackTrace: false\r\n};\r\n// Custom error object\r\n// Context / discussion: https://github.com/supermacro/neverthrow/pull/215\r\nvar createNeverThrowError = function (message, result, config) {\r\n if (config === void 0) { config = defaultErrorConfig; }\r\n var data = result.isOk()\r\n ? { type: 'Ok', value: result.value }\r\n : { type: 'Err', value: result.error };\r\n var maybeStack = config.withStackTrace ? new Error().stack : undefined;\r\n return {\r\n data: data,\r\n message: message,\r\n stack: maybeStack\r\n };\r\n};\n\nvar ResultAsync = /** @class */ (function () {\r\n function ResultAsync(res) {\r\n this._promise = res;\r\n }\r\n ResultAsync.fromSafePromise = function (promise) {\r\n var newPromise = promise.then(function (value) { return new Ok(value); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.fromPromise = function (promise, errorFn) {\r\n var newPromise = promise\r\n .then(function (value) { return new Ok(value); })[\"catch\"](function (e) { return new Err(errorFn(e)); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.combine = function (asyncResultList) {\r\n return combineResultAsyncList(asyncResultList);\r\n };\r\n ResultAsync.combineWithAllErrors = function (asyncResultList) {\r\n return combineResultAsyncListWithAllErrors(asyncResultList);\r\n };\r\n ResultAsync.prototype.map = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isErr()) {\r\n return [2 /*return*/, new Err(res.error)];\r\n }\r\n _a = Ok.bind;\r\n return [4 /*yield*/, f(res.value)];\r\n case 1: return [2 /*return*/, new (_a.apply(Ok, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.mapErr = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isOk()) {\r\n return [2 /*return*/, new Ok(res.value)];\r\n }\r\n _a = Err.bind;\r\n return [4 /*yield*/, f(res.error)];\r\n case 1: return [2 /*return*/, new (_a.apply(Err, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.andThen = function (f) {\r\n return new ResultAsync(this._promise.then(function (res) {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n var newValue = f(res.value);\r\n return newValue instanceof ResultAsync ? newValue._promise : newValue;\r\n }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.orElse = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (res.isErr()) {\r\n return [2 /*return*/, f(res.error)];\r\n }\r\n return [2 /*return*/, new Ok(res.value)];\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.match = function (ok, _err) {\r\n return this._promise.then(function (res) { return res.match(ok, _err); });\r\n };\r\n ResultAsync.prototype.unwrapOr = function (t) {\r\n return this._promise.then(function (res) { return res.unwrapOr(t); });\r\n };\r\n // Makes ResultAsync implement PromiseLike\r\n ResultAsync.prototype.then = function (successCallback, failureCallback) {\r\n return this._promise.then(successCallback, failureCallback);\r\n };\r\n return ResultAsync;\r\n}());\r\nvar okAsync = function (value) {\r\n return new ResultAsync(Promise.resolve(new Ok(value)));\r\n};\r\nvar errAsync = function (err) {\r\n return new ResultAsync(Promise.resolve(new Err(err)));\r\n};\r\nvar fromPromise = ResultAsync.fromPromise;\r\nvar fromSafePromise = ResultAsync.fromSafePromise;\n\nvar appendValueToEndOfList = function (value) { return function (list) { return __spreadArray(__spreadArray([], __read(list), false), [value], false); }; };\r\n/**\r\n * Short circuits on the FIRST Err value that we find\r\n */\r\nvar combineResultList = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return acc.isOk()\r\n ? result.isErr()\r\n ? err(result.error)\r\n : acc.map(appendValueToEndOfList(result.value))\r\n : acc;\r\n }, ok([]));\r\n};\r\n/* This is the typesafe version of Promise.all\r\n *\r\n * Takes a list of ResultAsync and success if all inner results are Ok values\r\n * or fails if one (or more) of the inner results are Err values\r\n */\r\nvar combineResultAsyncList = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList);\r\n};\r\n/**\r\n * Give a list of all the errors we find\r\n */\r\nvar combineResultListWithAllErrors = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return result.isErr()\r\n ? acc.isErr()\r\n ? err(__spreadArray(__spreadArray([], __read(acc.error), false), [result.error], false))\r\n : err([result.error])\r\n : acc.isErr()\r\n ? acc\r\n : ok(__spreadArray(__spreadArray([], __read(acc.value), false), [result.value], false));\r\n }, ok([]));\r\n};\r\nvar combineResultAsyncListWithAllErrors = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors);\r\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nvar Result;\r\n(function (Result) {\r\n /**\r\n * Wraps a function with a try catch, creating a new function with the same\r\n * arguments but returning `Ok` if successful, `Err` if the function throws\r\n *\r\n * @param fn function to wrap with ok on success or err on failure\r\n * @param errorFn when an error is thrown, this will wrap the error result if provided\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function fromThrowable(fn, errorFn) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n try {\r\n var result = fn.apply(void 0, __spreadArray([], __read(args), false));\r\n return ok(result);\r\n }\r\n catch (e) {\r\n return err(errorFn ? errorFn(e) : e);\r\n }\r\n };\r\n }\r\n Result.fromThrowable = fromThrowable;\r\n function combine(resultList) {\r\n return combineResultList(resultList);\r\n }\r\n Result.combine = combine;\r\n function combineWithAllErrors(resultList) {\r\n return combineResultListWithAllErrors(resultList);\r\n }\r\n Result.combineWithAllErrors = combineWithAllErrors;\r\n})(Result || (Result = {}));\r\nvar ok = function (value) { return new Ok(value); };\r\nvar err = function (err) { return new Err(err); };\r\nvar Ok = /** @class */ (function () {\r\n function Ok(value) {\r\n this.value = value;\r\n }\r\n Ok.prototype.isOk = function () {\r\n return true;\r\n };\r\n Ok.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n Ok.prototype.map = function (f) {\r\n return ok(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.mapErr = function (_f) {\r\n return ok(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.andThen = function (f) {\r\n return f(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.orElse = function (_f) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype.asyncAndThen = function (f) {\r\n return f(this.value);\r\n };\r\n Ok.prototype.asyncMap = function (f) {\r\n return ResultAsync.fromSafePromise(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.unwrapOr = function (_v) {\r\n return this.value;\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.match = function (ok, _err) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype._unsafeUnwrap = function (_) {\r\n return this.value;\r\n };\r\n Ok.prototype._unsafeUnwrapErr = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrapErr` on an Ok', this, config);\r\n };\r\n return Ok;\r\n}());\r\nvar Err = /** @class */ (function () {\r\n function Err(error) {\r\n this.error = error;\r\n }\r\n Err.prototype.isOk = function () {\r\n return false;\r\n };\r\n Err.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.map = function (_f) {\r\n return err(this.error);\r\n };\r\n Err.prototype.mapErr = function (f) {\r\n return err(f(this.error));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.andThen = function (_f) {\r\n return err(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.orElse = function (f) {\r\n return f(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncAndThen = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncMap = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n Err.prototype.unwrapOr = function (v) {\r\n return v;\r\n };\r\n Err.prototype.match = function (_ok, err) {\r\n return err(this.error);\r\n };\r\n Err.prototype._unsafeUnwrap = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrap` on an Err', this, config);\r\n };\r\n Err.prototype._unsafeUnwrapErr = function (_) {\r\n return this.error;\r\n };\r\n return Err;\r\n}());\r\nvar fromThrowable = Result.fromThrowable;\r\n//#endregion\n\nexport { Err, Ok, Result, ResultAsync, err, errAsync, fromPromise, fromSafePromise, fromThrowable, ok, okAsync };\n", "import { Simulator } from '@qni/simulator'\nimport { Util } from '@qni/common'\n\nlet resultCache = {}\n\nfunction runSimulator(e) {\n const circuitJson = e.data.circuitJson\n const qubitCount = e.data.qubitCount\n const stepIndex = e.data.stepIndex\n const steps = e.data.steps\n const targets = e.data.targets\n const invalidateCaches = e.data.invalidateCaches\n const simulator = new Simulator('0'.repeat(qubitCount))\n\n Util.notNull(qubitCount)\n Util.notNull(stepIndex)\n Util.notNull(steps)\n Util.notNull(targets)\n\n // const s_time = new Date()\n\n if (resultCache[circuitJson] === undefined || invalidateCaches) {\n resultCache = {}\n resultCache[circuitJson] = {}\n }\n\n // let cacheHit = false\n\n for (const [i, operations] of steps.entries()) {\n let stepResult = {}\n\n if (resultCache[circuitJson][i] === undefined) {\n resultCache[circuitJson][i] = {}\n }\n const cachedStepResult = resultCache[circuitJson][i]\n\n if (\n cachedStepResult === undefined ||\n cachedStepResult.targets === undefined ||\n cachedStepResult.targets.length < targets.length\n ) {\n // cacheHit = false\n\n simulator.runStep(operations)\n\n const allAmplitudes = simulator.state.matrix.clone()\n const blochVectors = Object.assign({}, simulator.blochVectors)\n const measuredBits = Object.assign({}, simulator.measuredBits)\n const flags = Object.assign({}, simulator.flags)\n\n resultCache[circuitJson][i] = {\n type: 'step',\n step: i,\n amplitudes: allAmplitudes,\n targets,\n blochVectors,\n measuredBits,\n flags,\n }\n\n if (i === stepIndex) {\n const amplitudes = pickTargetAmplitudes(targets, allAmplitudes)\n\n stepResult = {\n type: 'step',\n step: i,\n amplitudes,\n blochVectors,\n measuredBits,\n flags,\n }\n } else {\n stepResult = {\n type: 'step',\n step: i,\n amplitudes: [],\n blochVectors,\n measuredBits,\n flags,\n }\n }\n } else {\n // cacheHit = true\n\n stepResult = {\n type: 'step',\n step: i,\n amplitudes: [],\n blochVectors: cachedStepResult.blochVectors,\n measuredBits: cachedStepResult.measuredBits,\n flags: cachedStepResult.flags,\n }\n\n if (i === stepIndex) {\n stepResult.amplitudes = pickTargetAmplitudes(targets, cachedStepResult.amplitudes)\n }\n }\n\n self.postMessage(stepResult)\n }\n\n // const e_time = new Date()\n // const diff = e_time.getTime() - s_time.getTime()\n // const cacheDesc = cacheHit ? \"\uD83C\uDFAF CACHE HIT\" : \"\uD83D\uDCA6 CACHE MISS\"\n // console.log(`\u23F1 simulation took ${diff} msec (${cacheDesc})`)\n\n self.postMessage({ type: 'finish' })\n}\n\nconst pickTargetAmplitudes = (targets, amplitudes) => {\n return targets.reduce((map, each) => {\n if (each >= amplitudes.height) {\n map[each] = [0, 0]\n } else {\n const c = amplitudes.cell(0, each)\n map[each] = [c.real, c.imag]\n }\n return map\n }, {})\n}\n\nself.addEventListener('message', runSimulator)\n"], + "mappings": "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", "names": ["require_number", "__commonJSMin", "exports", "isNumber", "__name", "u", "first", "second", "n", "_", "require_function", "__commonJSMin", "exports", "getBooleanAlgebra", "__name", "B", "x", "y", "a", "getSemigroup", "S", "f", "g", "getMonoid", "M", "getSemigroupM", "getSemiring", "getRing", "R", "apply", "identity", "constant", "flip", "b", "flow", "ab", "bc", "cd", "de", "ef", "fg", "gh", "hi", "ij", "tuple", "_i", "increment", "n", "decrement", "absurd", "_", "tupled", "untupled", "pipe", "ret", "i", "SK", "not", "predicate", "getEndomorphismMonoid", "first", "second", "require_Apply", "__commonJSMin", "exports", "function_1", "ap", "F", "G", "fa", "fab", "gab", "ga", "__name", "apFirst", "A", "second", "first", "a", "apSecond", "b", "apS", "name", "fb", "_a", "getApplySemigroup", "S", "x", "y", "curried", "f", "n", "acc", "combined", "i", "tupleConstructors", "c", "d", "e", "getTupleConstructor", "len", "sequenceT", "args", "_i", "fas", "getRecordConstructor", "keys", "r", "sequenceS", "fr", "require_Chain", "__commonJSMin", "exports", "chainFirst", "M", "f", "first", "a", "__name", "bind", "name", "ma", "b", "_a", "require_internal", "__commonJSMin", "exports", "__spreadArray", "to", "from", "i", "il", "j", "isNone", "__name", "fa", "isSome", "some", "a", "isLeft", "ma", "isRight", "left", "e", "right", "singleton", "isNonEmpty", "as", "head", "tail", "fromReadonlyNonEmptyArray", "require_FromEither", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "__setModuleDefault", "v", "__importStar", "mod", "result", "function_1", "_", "fromOption", "F", "onNone", "ma", "__name", "fromPredicate", "predicate", "onFalse", "a", "fromOptionK", "fromOptionF", "from", "f", "chainOptionK", "M", "fromOptionKF", "fromEitherK", "chainEitherK", "fromEitherKF", "filterOrElse", "require_Functor", "__commonJSMin", "exports", "function_1", "map", "F", "G", "f", "fa", "ga", "__name", "flap", "a", "fab", "bindTo", "name", "_a", "getFunctorComposition", "_map", "fga", "require_Eq", "__commonJSMin", "exports", "function_1", "fromEquals", "__name", "equals", "x", "y", "struct", "eqs", "first", "second", "key", "tuple", "_i", "E", "i", "contramap_", "fa", "f", "contramap", "a", "b", "empty", "getSemigroup", "getMonoid", "require_Ord", "__commonJSMin", "exports", "Eq_1", "function_1", "equalsDefault", "__name", "compare", "first", "second", "fromCompare", "tuple", "ords", "_i", "r", "reverse", "O", "contramap_", "fa", "f", "contramap", "getSemigroup", "a", "b", "ox", "getMonoid", "equals", "lt", "gt", "leq", "geq", "min", "max", "clamp", "minO", "maxO", "low", "hi", "between", "ltO", "gtO", "strictOrd", "date", "require_Magma", "__commonJSMin", "exports", "reverse", "__name", "M", "first", "second", "filterFirst", "predicate", "filterSecond", "endo", "f", "concatAll", "startWith", "as", "a", "acc", "require_Semigroup", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "__setModuleDefault", "v", "__importStar", "mod", "result", "function_1", "_", "M", "Or", "min", "__name", "O", "max", "constant", "a", "struct", "semigroups", "first", "second", "r", "tuple", "_i", "s", "i", "intercalate", "middle", "S", "x", "y", "last", "getObjectSemigroup", "fold", "concatAllS", "startWith", "as", "require_ReadonlyNonEmptyArray", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "__setModuleDefault", "v", "__importStar", "mod", "result", "__spreadArray", "to", "from", "i", "il", "j", "Apply_1", "Chain_1", "Eq_1", "function_1", "Functor_1", "_", "Ord_1", "Se", "isOutOfBound", "__name", "as", "prependW", "head", "tail", "appendW", "end", "init", "unsafeInsertAt", "a", "xs", "unsafeUpdateAt", "uniq", "E", "out", "rest", "_loop_1", "_i", "rest_1", "sortBy", "ords", "M", "union", "uniqE", "second", "first", "concat", "rotate", "n", "len", "_a", "f", "s", "fromReadonlyArray", "makeBy", "replicate", "range", "start", "unprepend", "unappend", "fromArray", "concatW", "x", "y", "reverse", "group", "nea", "groupBy", "as_1", "sort", "O", "updateAt", "modifyAt", "zipWith", "bs", "cs", "zip", "b", "unzip", "abs", "fa", "fb", "prependAll", "middle", "intersperse", "chainWithIndex", "chop", "next", "_b", "b_1", "rest_2", "splitAt", "chunksOf", "_map", "_mapWithIndex", "_ap", "fab", "_chain", "ma", "_extend", "wa", "_reduce", "_foldMap", "foldMapM", "_reduceRight", "_traverse", "F", "traverseF", "ta", "_alt", "that", "_reduceWithIndex", "_foldMapWithIndex", "foldMapWithIndexM", "_reduceRightWithIndex", "_traverseWithIndex", "traverseWithIndexF", "altW", "ap", "chain", "extend", "map", "mapWithIndex", "reduce", "foldMap", "S", "reduceRight", "reduceWithIndex", "foldMapWithIndex", "reduceRightWithIndex", "traverse", "sequence", "traverseWithIndex", "getShow", "getSemigroup", "getEq", "ys", "getUnionSemigroup", "unionE", "last", "min", "max", "concatAll", "matchLeft", "matchRight", "modifyHead", "updateHead", "modifyLast", "updateLast", "groupSort", "sortO", "groupO", "filter", "predicate", "filterWithIndex", "cons", "snoc", "insertAt", "require_NonEmptyArray", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "__setModuleDefault", "v", "__importStar", "mod", "result", "__spreadArray", "to", "from", "i", "il", "j", "Apply_1", "Chain_1", "function_1", "Functor_1", "_", "Ord_1", "RNEA", "isNonEmpty", "__name", "as", "isOutOfBound", "prependW", "head", "tail", "appendW", "end", "init", "unsafeInsertAt", "a", "xs", "unsafeUpdateAt", "uniq", "E", "out", "rest", "_loop_1", "_i", "rest_1", "sortBy", "ords", "M", "union", "uniqE", "second", "first", "concat", "rotate", "n", "len", "_a", "f", "s", "fromArray", "makeBy", "replicate", "range", "start", "unprepend", "unappend", "concatW", "x", "y", "reverse", "group", "nea", "groupBy", "as_1", "sort", "O", "insertAt", "updateAt", "modifyAt", "of", "zipWith", "bs", "cs", "zip", "b", "unzip", "abs", "fa", "fb", "prependAll", "middle", "intersperse", "chainWithIndex", "chop", "next", "_b", "b_1", "rest_2", "splitAt", "chunksOf", "_map", "_mapWithIndex", "_ap", "fab", "_chain", "ma", "_extend", "wa", "_reduce", "_foldMap", "foldMapM", "_reduceRight", "_traverse", "F", "traverseF", "ta", "_alt", "that", "_reduceWithIndex", "_foldMapWithIndex", "foldMapWithIndexM", "_reduceRightWithIndex", "_traverseWithIndex", "traverseWithIndexF", "altW", "ap", "chain", "extend", "map", "mapWithIndex", "traverse", "sequence", "traverseWithIndex", "getSemigroup", "getUnionSemigroup", "unionE", "concatAll", "S", "matchLeft", "matchRight", "modifyHead", "updateHead", "modifyLast", "updateLast", "groupSort", "sortO", "groupO", "filter", "predicate", "filterWithIndex", "cons", "snoc", "require_Separated", "__commonJSMin", "exports", "function_1", "Functor_1", "separated", "__name", "left", "right", "_map", "fa", "f", "_mapLeft", "_bimap", "g", "map", "mapLeft", "bimap", "s", "require_Witherable", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "__setModuleDefault", "v", "__importStar", "mod", "result", "_", "wiltDefault", "T", "C", "F", "traverseF", "wa", "f", "__name", "witherDefault", "filterE", "W", "witherF", "predicate", "ga", "a", "b", "require_Zero", "__commonJSMin", "exports", "guard", "F", "P", "b", "__name", "require_ReadonlyArray", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "__setModuleDefault", "v", "__importStar", "mod", "result", "__spreadArray", "to", "from", "i", "il", "j", "Apply_1", "Chain_1", "Eq_1", "FromEither_1", "function_1", "Functor_1", "_", "N", "Ord_1", "RNEA", "Separated_1", "Witherable_1", "Zero_1", "isEmpty", "__name", "as", "makeBy", "n", "f", "replicate", "a", "fromPredicate", "predicate", "fromOption", "ma", "fromEither", "e", "matchW", "onEmpty", "onNonEmpty", "matchLeftW", "matchRightW", "chainWithIndex", "out", "scanLeft", "b", "len", "scanRight", "size", "lookup", "head", "last", "tail", "init", "takeLeft", "takeRight", "takeLeftWhile", "_i", "as_1", "spanLeftIndex", "l", "spanLeft", "_a", "rest", "dropLeft", "dropRight", "dropLeftWhile", "findIndex", "findFirst", "findFirstMap", "findLast", "findLastMap", "findLastIndex", "insertAt", "updateAt", "deleteAt", "modifyAt", "reverse", "rights", "r", "lefts", "sort", "O", "zipWith", "fa", "fb", "fc", "zip", "bs", "unzip", "prependAll", "middle", "intersperse", "rotate", "elem", "E", "elemE_1", "element", "uniq", "sortBy", "ords", "chop", "g", "splitAt", "chunksOf", "fromOptionK", "comprehension", "input", "go", "scope", "x", "concatW", "second", "first", "union", "unionE", "unionE_1", "intersection", "elemE", "xs", "ys", "intersectionE_1", "difference", "differenceE_1", "_map", "_mapWithIndex", "_ap", "fab", "_chain", "_filter", "_filterMap", "_partition", "_partitionMap", "_partitionWithIndex", "predicateWithIndex", "_partitionMapWithIndex", "_alt", "that", "_reduce", "_foldMap", "M", "foldMapM", "_reduceRight", "_reduceWithIndex", "_foldMapWithIndex", "foldMapWithIndexM", "_reduceRightWithIndex", "_filterMapWithIndex", "_filterWithIndex", "_extend", "_traverse", "F", "traverseF", "ta", "_traverseWithIndex", "traverseWithIndexF", "_chainRecDepthFirst", "_chainRecBreadthFirst", "zero", "altW", "ap", "chain", "map", "mapWithIndex", "separate", "left", "right", "fa_1", "filter", "filterMapWithIndex", "optionB", "filterMap", "partition", "partitionWithIndex", "partitionMap", "partitionMapWithIndex", "filterWithIndex", "extend", "wa", "foldMapWithIndex", "reduce", "foldMap", "reduceWithIndex", "reduceRight", "reduceRightWithIndex", "traverse", "sequence", "fas", "traverseWithIndex", "fbs", "wither", "_witherF", "_wither", "wilt", "_wiltF", "_wilt", "unfold", "bb", "mt", "b_1", "getShow", "S", "getSemigroup", "getMonoid", "getEq", "getOrd", "aLen", "bLen", "ordering", "getUnionSemigroup", "getUnionMonoid", "getIntersectionSemigroup", "intersectionE", "getDifferenceMagma", "differenceE", "chainRecDepthFirst", "todo", "chainRecBreadthFirst", "initial", "initial_1", "unsafeUpdateAt", "unsafeDeleteAt", "toArray", "fromArray", "every", "some", "require_Array", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "__setModuleDefault", "v", "__importStar", "mod", "result", "Apply_1", "Chain_1", "FromEither_1", "function_1", "Functor_1", "_", "NEA", "RA", "Separated_1", "Witherable_1", "Zero_1", "isEmpty", "__name", "as", "makeBy", "n", "f", "replicate", "a", "fromPredicate", "predicate", "fromOption", "ma", "fromEither", "e", "matchW", "onEmpty", "onNonEmpty", "matchLeftW", "matchRightW", "chainWithIndex", "out", "i", "scanLeft", "b", "len", "scanRight", "size", "tail", "init", "takeLeft", "takeRight", "takeLeftWhile", "_i", "as_1", "spanLeftIndex", "l", "spanLeft", "_a", "rest", "dropLeft", "dropRight", "dropLeftWhile", "findFirst", "findLast", "copy", "insertAt", "updateAt", "deleteAt", "modifyAt", "reverse", "rights", "r", "lefts", "sort", "O", "zipWith", "fa", "fb", "fc", "zip", "bs", "unzip", "prependAll", "middle", "intersperse", "rotate", "uniq", "E", "sortBy", "ords", "chop", "g", "splitAt", "chunksOf", "fromOptionK", "comprehension", "input", "go", "scope", "x", "concatW", "second", "first", "union", "unionE", "unionE_1", "intersection", "elemE", "xs", "ys", "intersectionE_1", "difference", "differenceE_1", "_map", "_mapWithIndex", "_ap", "fab", "_chain", "_filter", "_filterMap", "_partition", "_partitionMap", "_partitionWithIndex", "predicateWithIndex", "_partitionMapWithIndex", "_alt", "that", "_reduce", "_foldMap", "M", "foldMapM", "_reduceRight", "_reduceWithIndex", "_foldMapWithIndex", "foldMapWithIndexM", "_reduceRightWithIndex", "_filterMapWithIndex", "_filterWithIndex", "_extend", "_traverse", "F", "traverseF", "ta", "_traverseWithIndex", "traverseWithIndexF", "_chainRecDepthFirst", "_chainRecBreadthFirst", "zero", "map", "ap", "chain", "mapWithIndex", "filterMapWithIndex", "optionB", "filterMap", "separate", "left", "right", "fa_1", "filter", "partition", "partitionWithIndex", "partitionMap", "partitionMapWithIndex", "altW", "filterWithIndex", "extend", "wa", "traverse", "sequence", "fas", "traverseWithIndex", "fbs", "wither", "_witherF", "_wither", "wilt", "_wiltF", "_wilt", "unfold", "bb", "mt", "b_1", "getSemigroup", "getMonoid", "getUnionSemigroup", "getUnionMonoid", "getIntersectionSemigroup", "intersectionE", "getDifferenceMagma", "differenceE", "unsafeUpdateAt", "unsafeDeleteAt", "some", "require_fraction", "__commonJSMin", "exports", "module", "root", "MAX_CYCLE_LEN", "P", "assign", "n", "s", "Fraction", "__name", "newFraction", "d", "f", "a", "gcd", "factorize", "num", "factors", "i", "parse", "p1", "p2", "v", "w", "x", "y", "z", "A", "B", "C", "D", "N", "M", "modpow", "b", "e", "m", "r", "cycleLen", "rem", "t", "cycleStart", "len", "rem1", "rem2", "places", "k", "eps", "thisABS", "cont", "excludeWhole", "whole", "str", "res", "dec", "cycLen", "cycOff", "require_ansi_styles", "__commonJSMin", "exports", "module", "wrapAnsi256", "__name", "offset", "code", "wrapAnsi16m", "red", "green", "blue", "assembleStyles", "codes", "styles", "groupName", "group", "styleName", "style", "hex", "matches", "colorString", "character", "integer", "require_collections", "__commonJSMin", "exports", "printIteratorEntries", "printIteratorValues", "printListItems", "printObjectProperties", "getKeysOfEnumerableProperties", "__name", "object", "compareKeys", "rawKeys", "keys", "symbol", "iterator", "config", "indentation", "depth", "refs", "printer", "separator", "result", "width", "current", "indentationNext", "name", "value", "list", "i", "val", "key", "require_AsymmetricMatcher", "__commonJSMin", "exports", "_collections", "Symbol", "asymmetricMatcher", "SPACE", "serialize", "__name", "val", "config", "indentation", "depth", "refs", "printer", "stringedValue", "test", "plugin", "_default", "require_DOMCollection", "__commonJSMin", "exports", "_collections", "SPACE", "OBJECT_NAMES", "ARRAY_REGEXP", "testName", "__name", "name", "test", "val", "isNamedNodeMap", "collection", "serialize", "config", "indentation", "depth", "refs", "printer", "props", "attribute", "plugin", "_default", "require_escapeHTML", "__commonJSMin", "exports", "escapeHTML", "str", "__name", "require_markup", "__commonJSMin", "exports", "_escapeHTML", "_interopRequireDefault", "obj", "__name", "printProps", "keys", "props", "config", "indentation", "depth", "refs", "printer", "indentationNext", "colors", "key", "value", "printed", "printChildren", "children", "child", "printText", "text", "contentColor", "printComment", "comment", "commentColor", "printElement", "type", "printedProps", "printedChildren", "tagColor", "printElementAsLeaf", "require_DOMElement", "__commonJSMin", "exports", "_markup", "ELEMENT_NODE", "TEXT_NODE", "COMMENT_NODE", "FRAGMENT_NODE", "ELEMENT_REGEXP", "testHasAttribute", "__name", "val", "testNode", "constructorName", "nodeType", "tagName", "isCustomElement", "test", "nodeIsText", "node", "nodeIsComment", "nodeIsFragment", "serialize", "config", "indentation", "depth", "refs", "printer", "type", "attr", "props", "attribute", "plugin", "_default", "require_Immutable", "__commonJSMin", "exports", "_collections", "IS_ITERABLE_SENTINEL", "IS_LIST_SENTINEL", "IS_KEYED_SENTINEL", "IS_MAP_SENTINEL", "IS_ORDERED_SENTINEL", "IS_RECORD_SENTINEL", "IS_SEQ_SENTINEL", "IS_SET_SENTINEL", "IS_STACK_SENTINEL", "getImmutableName", "__name", "name", "printAsLeaf", "SPACE", "LAZY", "printImmutableEntries", "val", "config", "indentation", "depth", "refs", "printer", "type", "getRecordEntries", "i", "key", "printImmutableRecord", "printImmutableSeq", "printImmutableValues", "serialize", "test", "plugin", "_default", "require_react_is_production_min", "__commonJSMin", "exports", "b", "c", "d", "e", "f", "g", "h", "k", "l", "m", "n", "p", "q", "t", "u", "v", "a", "r", "__name", "require_react_is", "__commonJSMin", "exports", "module", "require_ReactElement", "__commonJSMin", "exports", "ReactIs", "_interopRequireWildcard", "_markup", "_getRequireWildcardCache", "nodeInterop", "cacheBabelInterop", "cacheNodeInterop", "__name", "obj", "cache", "newObj", "hasPropertyDescriptor", "key", "desc", "getChildren", "arg", "children", "item", "getType", "element", "type", "functionName", "getPropKeys", "props", "serialize", "config", "indentation", "depth", "refs", "printer", "test", "val", "plugin", "_default", "require_ReactTestComponent", "__commonJSMin", "exports", "_markup", "Symbol", "testSymbol", "getPropKeys", "__name", "object", "props", "key", "serialize", "config", "indentation", "depth", "refs", "printer", "test", "val", "plugin", "_default", "require_build", "__commonJSMin", "exports", "format", "_ansiStyles", "_interopRequireDefault", "_collections", "_AsymmetricMatcher", "_DOMCollection", "_DOMElement", "_Immutable", "_ReactElement", "_ReactTestComponent", "obj", "__name", "toString", "toISOString", "errorToString", "regExpToString", "getConstructorName", "val", "isWindow", "SYMBOL_REGEXP", "NEWLINE_REGEXP", "PrettyFormatPluginError", "message", "stack", "isToStringedArrayType", "toStringed", "printNumber", "printBigInt", "printFunction", "printFunctionName", "printSymbol", "printError", "printBasicValue", "escapeRegex", "escapeString", "typeOf", "printComplexValue", "config", "indentation", "depth", "refs", "hasCalledToJSON", "hitMaxDepth", "min", "printer", "isNewPlugin", "plugin", "printPlugin", "printed", "valChild", "str", "indentationNext", "error", "findPlugin", "plugins", "p", "basicResult", "DEFAULT_THEME", "DEFAULT_THEME_KEYS", "toOptionsSubtype", "options", "DEFAULT_OPTIONS", "validateOptions", "key", "getColorsHighlight", "colors", "value", "color", "getColorsEmpty", "getPrintFunctionName", "getEscapeRegex", "getEscapeString", "getConfig", "createIndent", "indent", "_default", "import_number", "import_Array", "import_NonEmptyArray", "import_ReadonlyNonEmptyArray", "require_fraction", "__commonJSMin", "exports", "module", "root", "MAX_CYCLE_LEN", "P", "assign", "n", "s", "Fraction", "newFraction", "d", "f", "a", "gcd", "factorize", "num", "factors", "i", "parse", "__name", "p1", "p2", "v", "w", "x", "y", "z", "A", "B", "C", "D", "N", "M", "modpow", "b", "e", "m", "r", "cycleLen", "rem", "t", "cycleStart", "len", "rem1", "rem2", "places", "k", "eps", "thisABS", "cont", "excludeWhole", "whole", "str", "res", "dec", "cycLen", "cycOff", "require_ansi_styles", "wrapAnsi256", "offset", "code", "wrapAnsi16m", "red", "green", "blue", "assembleStyles", "codes", "styles", "groupName", "group", "styleName", "style", "hex", "matches", "colorString", "character", "integer", "require_collections", "printIteratorEntries", "printIteratorValues", "printListItems", "printObjectProperties", "getKeysOfEnumerableProperties", "object", "compareKeys", "rawKeys", "keys", "symbol", "iterator", "config", "indentation", "depth", "refs", "printer", "separator", "result", "width", "current", "indentationNext", "name", "value", "list", "val", "key", "require_AsymmetricMatcher", "_collections", "os", "Symbol", "asymmetricMatcher", "SPACE", "serialize", "stringedValue", "test", "plugin", "_default", "require_DOMCollection", "OBJECT_NAMES", "ARRAY_REGEXP", "testName", "isNamedNodeMap", "collection", "props", "attribute", "__spreadValues", "require_escapeHTML", "escapeHTML", "require_markup", "_escapeHTML", "_interopRequireDefault", "vh", "obj", "printProps", "colors", "printed", "printChildren", "children", "child", "printText", "text", "contentColor", "printComment", "comment", "commentColor", "printElement", "type", "printedProps", "printedChildren", "tagColor", "printElementAsLeaf", "require_DOMElement", "_markup", "ys", "ELEMENT_NODE", "TEXT_NODE", "COMMENT_NODE", "FRAGMENT_NODE", "ELEMENT_REGEXP", "testHasAttribute", "testNode", "constructorName", "nodeType", "tagName", "isCustomElement", "_a", "nodeIsText", "node", "nodeIsComment", "nodeIsFragment", "attr", "require_Immutable", "IS_ITERABLE_SENTINEL", "IS_LIST_SENTINEL", "IS_KEYED_SENTINEL", "IS_MAP_SENTINEL", "IS_ORDERED_SENTINEL", "IS_RECORD_SENTINEL", "IS_SEQ_SENTINEL", "IS_SET_SENTINEL", "IS_STACK_SENTINEL", "getImmutableName", "printAsLeaf", "LAZY", "printImmutableEntries", "getRecordEntries", "printImmutableRecord", "printImmutableSeq", "printImmutableValues", "require_react_is_production_min", "c", "g", "h", "l", "p", "q", "u", "require_react_is", "Ph", "require_ReactElement", "ReactIs", "_interopRequireWildcard", "Fh", "_getRequireWildcardCache", "nodeInterop", "cacheBabelInterop", "cacheNodeInterop", "cache", "newObj", "hasPropertyDescriptor", "desc", "getChildren", "arg", "item", "getType", "element", "functionName", "getPropKeys", "require_ReactTestComponent", "testSymbol", "require_build", "format", "_ansiStyles", "uh", "_AsymmetricMatcher", "bh", "_DOMCollection", "rh", "_DOMElement", "Nh", "_Immutable", "_h", "_ReactElement", "Uh", "_ReactTestComponent", "Wh", "toString", "toISOString", "errorToString", "regExpToString", "getConstructorName", "isWindow", "SYMBOL_REGEXP", "NEWLINE_REGEXP", "PrettyFormatPluginError", "message", "stack", "isToStringedArrayType", "toStringed", "printNumber", "printBigInt", "printFunction", "printFunctionName", "printSymbol", "printError", "printBasicValue", "escapeRegex", "escapeString", "typeOf", "printComplexValue", "hasCalledToJSON", "hitMaxDepth", "min", "isNewPlugin", "printPlugin", "valChild", "error", "findPlugin", "plugins", "basicResult", "DEFAULT_THEME", "DEFAULT_THEME_KEYS", "toOptionsSubtype", "options", "DEFAULT_OPTIONS", "validateOptions", "getColorsHighlight", "color", "getColorsEmpty", "getPrintFunctionName", "getEscapeRegex", "getEscapeString", "getConfig", "_b", "_c", "_d", "_e", "_f", "_g", "createIndent", "indent", "import_fraction", "ts", "sh", "__awaiter", "thisArg", "_arguments", "generator", "adopt", "resolve", "reject", "fulfilled", "step", "rejected", "__generator", "body", "_", "verb", "op", "__read", "o", "ar", "__spreadArray", "to", "from", "pack", "defaultErrorConfig", "createNeverThrowError", "data", "maybeStack", "ResultAsync", "promise", "newPromise", "Ok", "errorFn", "Err", "asyncResultList", "combineResultAsyncList", "combineResultAsyncListWithAllErrors", "_this", "newValue", "ok", "_err", "successCallback", "failureCallback", "errAsync", "err", "fromPromise", "fromSafePromise", "appendValueToEndOfList", "combineResultList", "resultList", "acc", "combineResultListWithAllErrors", "Result", "fromThrowable", "fn", "args", "_i", "combine", "combineWithAllErrors", "_v", "_ok", "import_pretty_format", "ec", "radian", "angle", "coefficient", "piCoefficient", "UNICODE_FRACTIONS", "_Format", "fraction", "epsilon", "rootFraction", "predicate", "each", "allowAbbreviation", "maxAbbreviationError", "fixedDigits", "itemSeparator", "digits", "Format", "NumberFormatter", "_NumberFormatter", "DEFAULT_FORMAT_OPTIONS", "_Complex", "real", "imag", "magnitude", "phase", "cos", "sin", "radians", "unit", "other", "exponent", "formatter", "imagFactor", "imagSign", "Complex", "CONSTRUCTOR_CALLS_NESTING", "DetailedError", "detailsObj", "prettyFormat", "ex", "toParseError", "_Util", "expression", "argDesc", "msg", "url", "path", "lastSlashIndex", "Util", "SerializedBlochDisplayType", "SerializedControlGateType", "SerializedHGateType", "SerializedMeasurementGateType", "SerializedPhaseGateType", "SerializedQftDaggerGateType", "SerializedQftGateType", "SerializedRnotGateType", "SerializedRxGateType", "SerializedRyGateType", "SerializedRzGateType", "SerializedSDaggerGateType", "SerializedSGateType", "SerializedSpacerGateType", "SerializedSwapGateType", "SerializedTDaggerGateType", "SerializedTGateType", "SerializedWrite0GateType", "SerializedWrite1GateType", "SerializedXGateType", "SerializedYGateType", "SerializedZGateType", "_Matrix", "phi", "\u03C6", "$", "S", "mi", "theta", "\u03B8", "cos\u03B82", "sin\u03B82", "rows", "rowWidths", "isNonEmpty", "ws", "uniq", "Eq", "buffer", "row", "cell", "height", "coefficientRowColGenerator", "buf", "coef", "coefs", "G", "size", "colIndex", "col", "newBuf", "kIn", "kOut", "newBuffer", "k3", "k1", "k2", "r1", "i1", "r2", "i2", "r3", "i3", "sr", "si", "vr", "vi", "range", "b1", "b2", "j", "w1", "h1", "w2", "h2", "c1", "c2", "cr1", "ci1", "cr2", "ci2", "cr3", "ci3", "operation2x2", "qubitIndex", "controlMask", "desiredValueMask", "old", "ai", "br", "bi", "cr", "ci", "dr", "di", "isControlled", "qubitVal", "xr", "xi", "yr", "yi", "total_r", "total_i", "Matrix", "StateVector", "_StateVector", "bits", "index", "bit", "bitString", "paren", "parenToken", "kets", "invalidBitStringError", "char", "traceBits", "removeBits", "mask", "right", "densityMatrix", "bra", "ket", "amp", "ketMat", "braMat", "ketBra", "round", "decimal", "Simulator", "operations", "Ke", "Ye", "be", "target", "xe", "je", "et", "rt", "$e", "Te", "Pe", "qe", "Ze", "Ve", "Ge", "Ce", "ge", "Xe", "Re", "Ie", "ke", "Oe", "we", "targets", "pZero", "controls", "antiControls", "allControls", "target0", "target1", "control", "span", "import_fraction", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "__name", "reject", "fulfilled", "step", "e", "rejected", "result", "__generator", "body", "_", "t", "f", "y", "g", "verb", "n", "v", "op", "__read", "o", "m", "i", "r", "ar", "error", "__spreadArray", "to", "from", "pack", "l", "defaultErrorConfig", "createNeverThrowError", "message", "config", "data", "maybeStack", "ResultAsync", "res", "promise", "newPromise", "Ok", "errorFn", "Err", "asyncResultList", "combineResultAsyncList", "combineResultAsyncListWithAllErrors", "_this", "_a", "_b", "newValue", "ok", "_err", "successCallback", "failureCallback", "errAsync", "__name", "err", "ResultAsync", "Err", "fromPromise", "fromSafePromise", "appendValueToEndOfList", "value", "list", "__spreadArray", "__read", "combineResultList", "resultList", "acc", "result", "ok", "combineResultAsyncList", "asyncResultList", "combineResultListWithAllErrors", "combineResultAsyncListWithAllErrors", "Result", "fromThrowable", "fn", "errorFn", "args", "_i", "e", "combine", "combineWithAllErrors", "Ok", "f", "_f", "_v", "_err", "_", "config", "createNeverThrowError", "error", "v", "_ok", "import_pretty_format", "UNICODE_FRACTIONS", "_Format", "__name", "text", "fraction", "e", "result", "value", "epsilon", "r", "rootFraction", "predicate", "each", "allowAbbreviation", "maxAbbreviationError", "fixedDigits", "itemSeparator", "f", "digits", "NumberFormatter", "_NumberFormatter", "__name", "predicate", "each", "UNICODE_FRACTIONS", "allowAbbreviation", "maxAbbreviationError", "fixedDigits", "itemSeparator", "n", "value", "epsilon", "digits", "fraction", "e", "rootFraction", "DEFAULT_FORMAT_OPTIONS", "_Complex", "real", "imag", "magnitude", "phase", "cos", "sin", "radians", "unit", "i", "s", "other", "d", "c", "err", "ok", "exponent", "options", "format", "formatter", "imagFactor", "imagSign", "toParseError", "__name", "_Util", "expression", "message", "args", "argDesc", "msg", "v", "url", "path", "lastSlashIndex", "Result", "Util", "resultCache", "runSimulator", "e", "circuitJson", "qubitCount", "stepIndex", "steps", "targets", "invalidateCaches", "simulator", "zc", "G", "i", "operations", "stepResult", "cachedStepResult", "allAmplitudes", "blochVectors", "measuredBits", "flags", "amplitudes", "pickTargetAmplitudes", "__name", "map", "each", "c"] }