UNPKG

extra-array

Version:

An array is a collection of values, stored contiguously.

1,075 lines (1,069 loc) 99 kB
function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } var _build$1 = {}; var extraMath = {exports: {}}; (function (module) { function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } var _build$1 = {}; var extraNumber = {}; Object.defineProperty(extraNumber, '__esModule', { value: true }); var _build = {}; Object.defineProperty(_build, "__esModule", { value: true }); extraNumber.mean = _build.mean = extraNumber.arithmeticMean = _build.arithmeticMean = extraNumber.variance = _build.variance = extraNumber.range = _build.range = extraNumber.modes = _build.modes = extraNumber.median = _build.median = extraNumber.product = _build.product = extraNumber.sum = _build.sum = extraNumber.radians = _build.radians = extraNumber.degrees = _build.degrees = extraNumber.multinomial = _build.multinomial = extraNumber.binomial = _build.binomial = extraNumber.factorial = _build.factorial = extraNumber.lcm = _build.lcm = extraNumber.hcf = _build.hcf = extraNumber.gcd = _build.gcd = extraNumber.isPrime = _build.isPrime = extraNumber.primeExponentials = _build.primeExponentials = extraNumber.primeFactors = _build.primeFactors = extraNumber.greatestPrimeFactor = _build.greatestPrimeFactor = extraNumber.maxPrimeFactor = _build.maxPrimeFactor = extraNumber.leastPrimeFactor = _build.leastPrimeFactor = extraNumber.minPrimeFactor = _build.minPrimeFactor = extraNumber.aliquotSum = _build.aliquotSum = extraNumber.aliquotParts = _build.aliquotParts = extraNumber.properDivisors = _build.properDivisors = extraNumber.log = _build.log = extraNumber.root = _build.root = extraNumber.nextPow = _build.nextPow = extraNumber.prevPow = _build.prevPow = extraNumber.isPow = _build.isPow = extraNumber.lerp = _build.lerp = extraNumber.map = _build.map = extraNumber.remap = _build.remap = extraNumber.norm = _build.norm = extraNumber.normalize = _build.normalize = extraNumber.clamp = _build.clamp = extraNumber.constrain = _build.constrain = extraNumber.modp = _build.modp = extraNumber.mod = _build.mod = extraNumber.rem = _build.rem = extraNumber.roundDiv = _build.roundDiv = extraNumber.ceilDiv = _build.ceilDiv = extraNumber.floorDiv = _build.floorDiv = extraNumber.round = _build.round = extraNumber.ceil = _build.ceil = extraNumber.floor = _build.floor = extraNumber.compare = _build.compare = extraNumber.significantDigits = _build.significantDigits = extraNumber.is = _build.is = void 0; extraNumber.toRoman = _build.toRoman = extraNumber.toRomanNumerals = _build.toRomanNumerals = extraNumber.fromRoman = _build.fromRoman = extraNumber.fromRomanNumerals = _build.fromRomanNumerals = extraNumber.cubicMean = _build.cubicMean = extraNumber.rootMeanSquare = _build.rootMeanSquare = extraNumber.quadriaticMean = _build.quadriaticMean = extraNumber.harmonicMean = _build.harmonicMean = extraNumber.geometricMean = _build.geometricMean = void 0; function is(v) { return typeof v === "number"; } extraNumber.is = _build.is = is; function significantDigits(x) { var a = x.toExponential(); return a.replace(/e[\+\-0-9]*$/, "").replace(/^0\.?0*|\./, "").length; } extraNumber.significantDigits = _build.significantDigits = significantDigits; function compare(x, y) { return x - y; } extraNumber.compare = _build.compare = compare; function floor(x, pre = 1) { return Math.floor(x / pre) * pre; } extraNumber.floor = _build.floor = floor; function ceil(x, pre = 1) { return Math.ceil(x / pre) * pre; } extraNumber.ceil = _build.ceil = ceil; function round(x, pre = 1) { return Math.round(x / pre) * pre; } extraNumber.round = _build.round = round; function floorDiv(x, y) { return Math.floor(x / y); } extraNumber.floorDiv = _build.floorDiv = floorDiv; function ceilDiv(x, y) { return Math.ceil(x / y); } extraNumber.ceilDiv = _build.ceilDiv = ceilDiv; function roundDiv(x, y) { return Math.round(x / y); } extraNumber.roundDiv = _build.roundDiv = roundDiv; function rem(x, y) { return x % y; } extraNumber.rem = _build.rem = rem; function mod(x, y) { return x - y * Math.floor(x / y); } extraNumber.mod = _build.mod = mod; function modp(x, y) { return x - Math.abs(y) * Math.floor(x / Math.abs(y)); } extraNumber.modp = _build.modp = modp; function constrain(x, min, max) { return Math.min(Math.max(x, min), max); } extraNumber.constrain = _build.constrain = constrain; extraNumber.clamp = _build.clamp = constrain; function normalize(x, r, R) { return (x - r) / (R - r); } extraNumber.normalize = _build.normalize = normalize; extraNumber.norm = _build.norm = normalize; function remap(x, r, R, t, T) { return t + ((x - r) / (R - r)) * (T - t); } extraNumber.remap = _build.remap = remap; extraNumber.map = _build.map = remap; function lerp(x, y, t) { return x + t * (y - x); } extraNumber.lerp = _build.lerp = lerp; function isPow(x, n) { if (n === 0) return x === 0; var p = log(Math.abs(x), Math.abs(n)); if (p !== Math.floor(p)) return false; return x < 0 ? n < 0 && (p & 1) === 1 : n > 0 || (p & 1) === 0; } extraNumber.isPow = _build.isPow = isPow; function prevPow(x, n) { if (x <= 1) return 0; var p = Math.floor(Math.log(x) / Math.log(n)); return Math.pow(n, p); } extraNumber.prevPow = _build.prevPow = prevPow; function nextPow(x, n) { if (x <= 0) return 1; var p = Math.ceil(Math.log(x) / Math.log(n)); return Math.pow(n, p); } extraNumber.nextPow = _build.nextPow = nextPow; function root(x, n) { if ((n & 1) === 0) return Math.pow(x, 1 / n); return Math.sign(x) * Math.pow(Math.abs(x), 1 / n); } extraNumber.root = _build.root = root; function log(x, b = Math.E) { return Math.log(x) / Math.log(b); } extraNumber.log = _build.log = log; function properDivisors(x) { var x = Math.abs(x), a = []; for (var i = 1; i < x; i++) if (x % i === 0) a.push(i); return a; } extraNumber.properDivisors = _build.properDivisors = properDivisors; extraNumber.aliquotParts = _build.aliquotParts = properDivisors; function aliquotSum(x) { var x = Math.abs(x), a = 0; for (var i = 0; i < x; i++) if (x % i === 0) a += i; return a; } extraNumber.aliquotSum = _build.aliquotSum = aliquotSum; function minPrimeFactor(x) { var x = Math.abs(x); if (x <= 1) return 0; if (x <= 3) return x; if (x % 2 === 0) return 2; if (x % 3 === 0) return 3; for (var i = 6, I = Math.sqrt(x) + 1; i <= I; i += 6) { if (x % (i - 1) === 0) return i - 1; if (x % (i + 1) === 0) return i + 1; } return x; } extraNumber.minPrimeFactor = _build.minPrimeFactor = minPrimeFactor; extraNumber.leastPrimeFactor = _build.leastPrimeFactor = minPrimeFactor; function maxPrimeFactor(x) { var x = Math.abs(x), a = 0; if (x <= 1) return 0; if (x <= 3) return x; for (; x % 2 === 0; a = 2) x /= 2; for (; x % 3 === 0; a = 3) x /= 3; for (var i = 6, I = Math.sqrt(x) + 1; x > 1 && i <= I; i += 6) { for (; x % (i - 1) == 0; a = i - 1) x /= i - 1; for (; x % (i + 1) == 0; a = i + 1) x /= i + 1; } if (x <= 1) return a; return x; } extraNumber.maxPrimeFactor = _build.maxPrimeFactor = maxPrimeFactor; extraNumber.greatestPrimeFactor = _build.greatestPrimeFactor = maxPrimeFactor; function primeFactors(x) { var x = Math.abs(x), a = []; if (x <= 1) return []; if (x <= 3) return [x]; x = pushPrimeFactorTo$(a, x, 2); x = pushPrimeFactorTo$(a, x, 3); for (var i = 6, I = Math.sqrt(x) + 1; x > 1 && i <= I; i += 6) { x = pushPrimeFactorTo$(a, x, i - 1); x = pushPrimeFactorTo$(a, x, i + 1); } if (x > 1) a.push(x); return a; } extraNumber.primeFactors = _build.primeFactors = primeFactors; function pushPrimeFactorTo$(a, x, f) { if (x % f !== 0) return x; do { x /= f; } while (x % f === 0); a.push(f); return x; } function primeExponentials(x) { var x = Math.abs(x), a = []; if (x <= 1) return []; if (x <= 3) return [[x, 1]]; x = pushPrimeExponentialTo$(a, x, 2); x = pushPrimeExponentialTo$(a, x, 3); for (var i = 6, I = Math.sqrt(x) + 1; x > 1 && i <= I; i += 6) { x = pushPrimeExponentialTo$(a, x, i - 1); x = pushPrimeExponentialTo$(a, x, i + 1); } if (x > 1) a.push([x, 1]); return a; } extraNumber.primeExponentials = _build.primeExponentials = primeExponentials; function pushPrimeExponentialTo$(a, x, f) { if (x % f !== 0) return x; var e = 0; do { x /= f; ++e; } while (x % f === 0); a.push([f, e]); return x; } function isPrime(x) { return x !== 0 && minPrimeFactor(x) === Math.abs(x); } extraNumber.isPrime = _build.isPrime = isPrime; function gcd(...xs) { var a = xs[0] || 1; for (var i = 1, I = xs.length; i < I; i++) a = gcdPair(a, xs[i]); return a; } extraNumber.gcd = _build.gcd = gcd; extraNumber.hcf = _build.hcf = gcd; function gcdPair(x, y) { while (y !== 0) { var t = y; y = x % y; x = t; } return x; } function lcm(...xs) { var a = xs[0] || 1; for (var i = 1, I = xs.length; i < I; i++) a = a * xs[i] / gcdPair(a, xs[i]); return a; } extraNumber.lcm = _build.lcm = lcm; function factorial(n, k = 0) { if (n < 0) return 0; for (var i = k + 1, a = 1; i <= n; i++) a *= i; return a; } extraNumber.factorial = _build.factorial = factorial; function binomial(n, k) { if (k < 0 || k > Math.abs(n)) return 0; if (n < 0) return Math.pow(-1, k) * binomial(-n, k); k = k > n - k ? n - k : k; for (var a = 1, i = 1; i <= k; i++, n--) a *= n / i; return a; } extraNumber.binomial = _build.binomial = binomial; function multinomial(...ks) { var n = sum(...ks), a = 1; for (var i = 0, j = 0, I = ks.length; i < I;) { if (j <= 0) j = ks[i++]; else a *= n-- / j--; } return a; } extraNumber.multinomial = _build.multinomial = multinomial; function degrees(x) { return x * (180 / Math.PI); } extraNumber.degrees = _build.degrees = degrees; function radians(x) { return x * (Math.PI / 180); } extraNumber.radians = _build.radians = radians; function sum(...xs) { var a = 0; for (var x of xs) a += x; return a; } extraNumber.sum = _build.sum = sum; function product(...xs) { var a = 1; for (var x of xs) a *= x; return a; } extraNumber.product = _build.product = product; function median(...xs) { if (xs.length === 0) return 0; xs.sort((a, b) => a - b); var i = xs.length >> 1; if ((xs.length & 1) === 1) return xs[i]; return (xs[i - 1] + xs[i]) / 2; } extraNumber.median = _build.median = median; function modes(...xs) { xs.sort((a, b) => a - b); var r = maxRepeat(xs); return getRepeats(xs, r); } extraNumber.modes = _build.modes = modes; function maxRepeat(xs) { var count = Math.min(xs.length, 1), max = count; for (var i = 1, I = xs.length; i < I; i++) { if (xs[i - 1] === xs[i]) count++; else { max = Math.max(max, count); count = 1; } } return Math.max(max, count); } function getRepeats(xs, r) { var a = []; r--; for (var i = 0, I = xs.length - r; i < I; i++) if (xs[i] === xs[i + r]) a.push(xs[i += r]); return a; } function range(...xs) { return [Math.min(...xs), Math.max(...xs)]; } extraNumber.range = _build.range = range; function variance(...xs) { if (xs.length === 0) return 0; var m = arithmeticMean(...xs), a = 0; for (var x of xs) a += (x - m) ** 2; return a / xs.length; } extraNumber.variance = _build.variance = variance; function arithmeticMean(...xs) { if (xs.length === 0) return 0; return sum(...xs) / xs.length; } extraNumber.arithmeticMean = _build.arithmeticMean = arithmeticMean; extraNumber.mean = _build.mean = arithmeticMean; function geometricMean(...xs) { var n = xs.length; return root(product(...xs), n); } extraNumber.geometricMean = _build.geometricMean = geometricMean; function harmonicMean(...xs) { var n = xs.length; var p = product(...xs), q = 0; for (var x of xs) q += p / x; return n * p / q; } extraNumber.harmonicMean = _build.harmonicMean = harmonicMean; function quadriaticMean(...xs) { var n = xs.length, a = 0; for (var x of xs) a += x * x; return Math.sqrt(a / n); } extraNumber.quadriaticMean = _build.quadriaticMean = quadriaticMean; extraNumber.rootMeanSquare = _build.rootMeanSquare = quadriaticMean; function cubicMean(...xs) { var n = xs.length, a = 0; for (var x of xs) a += x ** 3; return Math.cbrt(a / n); } extraNumber.cubicMean = _build.cubicMean = cubicMean; const ROMAN_SYMBOLS = ['I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M']; const ROMAN_VALUES = [1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000]; function fromRomanNumerals(txt) { var s = ROMAN_SYMBOLS.length - 1; var n = txt.search(/^\s*-/) >= 0, a = 0; var txt = txt.replace(/\W/g, '').toUpperCase(); for (var i = 0, I = txt.length; i < I; i += ROMAN_SYMBOLS[s].length) { while (s >= 0 && txt.substring(i, i + ROMAN_SYMBOLS[s].length) !== ROMAN_SYMBOLS[s]) --s; if (s < 0) break; a += ROMAN_VALUES[s]; } return n ? -a : a; } extraNumber.fromRomanNumerals = _build.fromRomanNumerals = fromRomanNumerals; extraNumber.fromRoman = _build.fromRoman = fromRomanNumerals; function toRomanNumerals(x) { var a = x < 0 ? '-' : ''; var x = Math.abs(x); for (var s = ROMAN_SYMBOLS.length - 1; s >= 0; --s) while (x >= ROMAN_VALUES[s]) { x -= ROMAN_VALUES[s]; a += ROMAN_SYMBOLS[s]; } return a; } extraNumber.toRomanNumerals = _build.toRomanNumerals = toRomanNumerals; extraNumber.toRoman = _build.toRoman = toRomanNumerals; extraNumber.default = _build; (function (exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.quadriaticMean = exports.harmonicMean = exports.geometricMean = exports.mean = exports.arithmeticMean = exports.variance = exports.range = exports.modes = exports.median = exports.product = exports.sum = exports.radians = exports.degrees = exports.multinomial = exports.binomial = exports.factorial = exports.lcm = exports.hcf = exports.gcd = exports.isPrime = exports.primeExponentials = exports.primeFactors = exports.greatestPrimeFactor = exports.maxPrimeFactor = exports.leastPrimeFactor = exports.minPrimeFactor = exports.aliquotSum = exports.aliquotParts = exports.properDivisors = exports.log = exports.root = exports.nextPow = exports.prevPow = exports.isPow = exports.map = exports.remap = exports.lerp = exports.norm = exports.normalize = exports.clamp = exports.constrain = exports.modp = exports.mod = exports.rem = exports.roundDiv = exports.ceilDiv = exports.floorDiv = exports.round = exports.ceil = exports.floor = void 0; exports.distance = exports.magnitude = exports.cubicMean = exports.rootMeanSquare = void 0; var extra_number_1 = extraNumber; Object.defineProperty(exports, "floor", { enumerable: true, get: function () { return extra_number_1.floor; } }); Object.defineProperty(exports, "ceil", { enumerable: true, get: function () { return extra_number_1.ceil; } }); Object.defineProperty(exports, "round", { enumerable: true, get: function () { return extra_number_1.round; } }); Object.defineProperty(exports, "floorDiv", { enumerable: true, get: function () { return extra_number_1.floorDiv; } }); Object.defineProperty(exports, "ceilDiv", { enumerable: true, get: function () { return extra_number_1.ceilDiv; } }); Object.defineProperty(exports, "roundDiv", { enumerable: true, get: function () { return extra_number_1.roundDiv; } }); Object.defineProperty(exports, "rem", { enumerable: true, get: function () { return extra_number_1.rem; } }); Object.defineProperty(exports, "mod", { enumerable: true, get: function () { return extra_number_1.mod; } }); Object.defineProperty(exports, "modp", { enumerable: true, get: function () { return extra_number_1.modp; } }); Object.defineProperty(exports, "constrain", { enumerable: true, get: function () { return extra_number_1.constrain; } }); Object.defineProperty(exports, "clamp", { enumerable: true, get: function () { return extra_number_1.constrain; } }); Object.defineProperty(exports, "normalize", { enumerable: true, get: function () { return extra_number_1.normalize; } }); Object.defineProperty(exports, "norm", { enumerable: true, get: function () { return extra_number_1.normalize; } }); Object.defineProperty(exports, "lerp", { enumerable: true, get: function () { return extra_number_1.lerp; } }); Object.defineProperty(exports, "remap", { enumerable: true, get: function () { return extra_number_1.remap; } }); Object.defineProperty(exports, "map", { enumerable: true, get: function () { return extra_number_1.remap; } }); Object.defineProperty(exports, "isPow", { enumerable: true, get: function () { return extra_number_1.isPow; } }); Object.defineProperty(exports, "prevPow", { enumerable: true, get: function () { return extra_number_1.prevPow; } }); Object.defineProperty(exports, "nextPow", { enumerable: true, get: function () { return extra_number_1.nextPow; } }); Object.defineProperty(exports, "root", { enumerable: true, get: function () { return extra_number_1.root; } }); Object.defineProperty(exports, "log", { enumerable: true, get: function () { return extra_number_1.log; } }); Object.defineProperty(exports, "properDivisors", { enumerable: true, get: function () { return extra_number_1.properDivisors; } }); Object.defineProperty(exports, "aliquotParts", { enumerable: true, get: function () { return extra_number_1.properDivisors; } }); Object.defineProperty(exports, "aliquotSum", { enumerable: true, get: function () { return extra_number_1.aliquotSum; } }); Object.defineProperty(exports, "minPrimeFactor", { enumerable: true, get: function () { return extra_number_1.minPrimeFactor; } }); Object.defineProperty(exports, "leastPrimeFactor", { enumerable: true, get: function () { return extra_number_1.minPrimeFactor; } }); Object.defineProperty(exports, "maxPrimeFactor", { enumerable: true, get: function () { return extra_number_1.maxPrimeFactor; } }); Object.defineProperty(exports, "greatestPrimeFactor", { enumerable: true, get: function () { return extra_number_1.maxPrimeFactor; } }); Object.defineProperty(exports, "primeFactors", { enumerable: true, get: function () { return extra_number_1.primeFactors; } }); Object.defineProperty(exports, "primeExponentials", { enumerable: true, get: function () { return extra_number_1.primeExponentials; } }); Object.defineProperty(exports, "isPrime", { enumerable: true, get: function () { return extra_number_1.isPrime; } }); Object.defineProperty(exports, "gcd", { enumerable: true, get: function () { return extra_number_1.gcd; } }); Object.defineProperty(exports, "hcf", { enumerable: true, get: function () { return extra_number_1.gcd; } }); Object.defineProperty(exports, "lcm", { enumerable: true, get: function () { return extra_number_1.lcm; } }); Object.defineProperty(exports, "factorial", { enumerable: true, get: function () { return extra_number_1.factorial; } }); Object.defineProperty(exports, "binomial", { enumerable: true, get: function () { return extra_number_1.binomial; } }); Object.defineProperty(exports, "multinomial", { enumerable: true, get: function () { return extra_number_1.multinomial; } }); Object.defineProperty(exports, "degrees", { enumerable: true, get: function () { return extra_number_1.degrees; } }); Object.defineProperty(exports, "radians", { enumerable: true, get: function () { return extra_number_1.radians; } }); Object.defineProperty(exports, "sum", { enumerable: true, get: function () { return extra_number_1.sum; } }); Object.defineProperty(exports, "product", { enumerable: true, get: function () { return extra_number_1.product; } }); Object.defineProperty(exports, "median", { enumerable: true, get: function () { return extra_number_1.median; } }); Object.defineProperty(exports, "modes", { enumerable: true, get: function () { return extra_number_1.modes; } }); Object.defineProperty(exports, "range", { enumerable: true, get: function () { return extra_number_1.range; } }); Object.defineProperty(exports, "variance", { enumerable: true, get: function () { return extra_number_1.variance; } }); Object.defineProperty(exports, "arithmeticMean", { enumerable: true, get: function () { return extra_number_1.arithmeticMean; } }); Object.defineProperty(exports, "mean", { enumerable: true, get: function () { return extra_number_1.arithmeticMean; } }); Object.defineProperty(exports, "geometricMean", { enumerable: true, get: function () { return extra_number_1.geometricMean; } }); Object.defineProperty(exports, "harmonicMean", { enumerable: true, get: function () { return extra_number_1.harmonicMean; } }); Object.defineProperty(exports, "quadriaticMean", { enumerable: true, get: function () { return extra_number_1.quadriaticMean; } }); Object.defineProperty(exports, "rootMeanSquare", { enumerable: true, get: function () { return extra_number_1.quadriaticMean; } }); Object.defineProperty(exports, "cubicMean", { enumerable: true, get: function () { return extra_number_1.cubicMean; } }); function magnitude(xs) { var a = 0; for (var i = 0, I = xs.length; i < I; i++) a += xs[i] ** 2; return Math.sqrt(a); } exports.magnitude = magnitude; function distance(xs, ys) { var a = 0; for (var i = 0, I = xs.length; i < I; i++) a += (xs[i] - ys[i]) ** 2; return Math.sqrt(a); } exports.distance = distance; } (_build$1)); var index = getDefaultExportFromCjs(_build$1); module.exports = index; } (extraMath)); var extraMathExports = extraMath.exports; getDefaultExportFromCjs(extraMathExports); var extraFunction = {}; Object.defineProperty(extraFunction, '__esModule', { value: true }); var _build = {}; Object.defineProperty(_build, "__esModule", { value: true }); extraFunction.throttleEarly = _build.throttleEarly = extraFunction.throttle = _build.throttle = extraFunction.debounceEarly = _build.debounceEarly = extraFunction.debounce = _build.debounce = extraFunction.after = _build.after = extraFunction.restrictAfter = _build.restrictAfter = extraFunction.before = _build.before = extraFunction.restrictBefore = _build.restrictBefore = extraFunction.once = _build.once = extraFunction.restrictOnce = _build.restrictOnce = extraFunction.restrict = _build.restrict = extraFunction.delay = _build.delay = extraFunction.defer = _build.defer = extraFunction.curryRight = _build.curryRight = extraFunction.curry = _build.curry = extraFunction.composeRight = _build.composeRight = extraFunction.compose = _build.compose = extraFunction.partialRight = _build.partialRight = extraFunction.attachRight = _build.attachRight = extraFunction.partial = _build.partial = extraFunction.attach = _build.attach = extraFunction.unspread = _build.unspread = extraFunction.spread = _build.spread = extraFunction.flip = _build.flip = extraFunction.reverse = _build.reverse = extraFunction.memoize = _build.memoize = extraFunction.negate = _build.negate = extraFunction.decontextify = _build.decontextify = extraFunction.contextify = _build.contextify = extraFunction.isGenerator = _build.isGenerator = extraFunction.isAsync = _build.isAsync = extraFunction.is = _build.is = extraFunction.apply = _build.apply = extraFunction.call = _build.call = extraFunction.bind = _build.bind = extraFunction.arity = _build.arity = extraFunction.length = _build.length = extraFunction.name = _build.name = extraFunction.ARGUMENTS = _build.ARGUMENTS = extraFunction.COMPARE = _build.COMPARE = extraFunction.IDENTITY = _build.IDENTITY = extraFunction.TRUE = _build.TRUE = extraFunction.FALSE = _build.FALSE = extraFunction.NOOP = _build.NOOP = void 0; function NOOP(...args) { } extraFunction.NOOP = _build.NOOP = NOOP; function FALSE(...args) { return false; } extraFunction.FALSE = _build.FALSE = FALSE; function TRUE(...args) { return true; } extraFunction.TRUE = _build.TRUE = TRUE; function IDENTITY(v) { return v; } extraFunction.IDENTITY = _build.IDENTITY = IDENTITY; function COMPARE(a, b) { return a < b ? -1 : (a > b ? 1 : 0); } extraFunction.COMPARE = _build.COMPARE = COMPARE; function ARGUMENTS(...args) { return args; } extraFunction.ARGUMENTS = _build.ARGUMENTS = ARGUMENTS; function name(x) { return x.name; } extraFunction.name = _build.name = name; function length$1(x) { return x.length; } extraFunction.length = _build.length = length$1; extraFunction.arity = _build.arity = length$1; function bind(x, ths, ...prefix) { return x.bind(ths, ...prefix); } extraFunction.bind = _build.bind = bind; function call(x, ths = null, ...args) { return x.call(ths, ...args); } extraFunction.call = _build.call = call; function apply(x, ths = null, args) { return x.apply(ths, args); } extraFunction.apply = _build.apply = apply; function is$1(v) { return typeof v === "function"; } extraFunction.is = _build.is = is$1; function isAsync(v) { const AsyncFunction = (async function () { }).constructor; return v instanceof AsyncFunction; } extraFunction.isAsync = _build.isAsync = isAsync; function isGenerator(v) { const GeneratorFunction = (function* () { }).constructor; return v instanceof GeneratorFunction; } extraFunction.isGenerator = _build.isGenerator = isGenerator; function contextify(x) { return function (...args) { return x(this, ...args); }; } extraFunction.contextify = _build.contextify = contextify; function decontextify(x) { return (ths = null, ...args) => x.call(ths, ...args); } extraFunction.decontextify = _build.decontextify = decontextify; function negate(x) { return (...args) => !x(...args); } extraFunction.negate = _build.negate = negate; function memoize(x, fr = null, cache = null) { var fr = fr || IDENTITY; var cache = cache || new Map(); return (...args) => { var k = fr(...args); if (cache.has(k)) return cache.get(k); var v = x(...args); cache.set(k, v); return v; }; } extraFunction.memoize = _build.memoize = memoize; function reverse$1(x) { return (...args) => x(...args.reverse()); } extraFunction.reverse = _build.reverse = reverse$1; extraFunction.flip = _build.flip = reverse$1; function spread(x) { return (...args) => x(args); } extraFunction.spread = _build.spread = spread; function unspread(x) { return (args) => x(...args); } extraFunction.unspread = _build.unspread = unspread; function attach(x, ...prefix) { return (...args) => x(...prefix, ...args); } extraFunction.attach = _build.attach = attach; extraFunction.partial = _build.partial = attach; function attachRight(x, ...suffix) { return (...args) => x(...args, ...suffix); } extraFunction.attachRight = _build.attachRight = attachRight; extraFunction.partialRight = _build.partialRight = attachRight; function compose(...xs) { return composeRight(...xs.reverse()); } extraFunction.compose = _build.compose = compose; function composeRight(...xs) { return (...args) => { if (xs.length === 0) return; var a = xs[0](...args); for (var i = 1, I = xs.length; i < I; i++) a = xs[i](a); return a; }; } extraFunction.composeRight = _build.composeRight = composeRight; function curry(x, n = x.length) { return (...args) => { if (args.length >= n) return x(...args); else return curry((...rest) => x(...args, ...rest), n - args.length); }; } extraFunction.curry = _build.curry = curry; function curryRight(x, n = x.length) { return curry(reverse$1(x), n); } extraFunction.curryRight = _build.curryRight = curryRight; function defer(x) { return (...args) => { var h = setImmediate(flush); function clear() { clearImmediate(h); h = null; } function flush() { x(...args); clear(); } return { clear, flush }; }; } extraFunction.defer = _build.defer = defer; function delay(x, t) { return (...args) => { var h = setTimeout(flush, t); function clear() { clearTimeout(h); h = null; } function flush() { x(...args); clear(); } return { clear, flush }; }; } extraFunction.delay = _build.delay = delay; function restrict(x, start, end = -1) { var i = -1; return (...args) => { if ((++i < start) === (i < end || end < 0)) return; return x(...args); }; } extraFunction.restrict = _build.restrict = restrict; function restrictOnce(x) { return restrict(x, 0, 1); } extraFunction.restrictOnce = _build.restrictOnce = restrictOnce; extraFunction.once = _build.once = restrictOnce; function restrictBefore(x, n) { return restrict(x, 0, n); } extraFunction.restrictBefore = _build.restrictBefore = restrictBefore; extraFunction.before = _build.before = restrictBefore; function restrictAfter(x, n) { return restrict(x, n); } extraFunction.restrictAfter = _build.restrictAfter = restrictAfter; extraFunction.after = _build.after = restrictAfter; function debounce(x, t, T = -1) { var savedArgs; var h = null, H = null; function clear() { clearTimeout(h); clearTimeout(H); h = H = null; } function flush() { x(...savedArgs); clear(); } return (...args) => { savedArgs = args; if (T >= 0) H = H || setTimeout(flush, T); if (T < 0 || t < T) { clearTimeout(h); h = setTimeout(flush, t); } return { clear, flush }; }; } extraFunction.debounce = _build.debounce = debounce; function debounceEarly(x, t, T = -1) { var h = null, H = null; function clear() { h = H = null; } function flush() { clear(); } return (...args) => { if (!h && !H) x(...args); if (T >= 0) H = H || setTimeout(flush, T); if (T < 0 || t < T) { clearTimeout(h); h = setTimeout(flush, t); } return { clear, flush }; }; } extraFunction.debounceEarly = _build.debounceEarly = debounceEarly; function throttle(x, t) { var savedArgs; var h = null; function clear() { h = null; } function flush() { x(...savedArgs); clear(); } return (...args) => { savedArgs = args; h = h || setTimeout(flush, t); return { clear, flush }; }; } extraFunction.throttle = _build.throttle = throttle; function throttleEarly(x, t) { var h = null; function clear() { h = null; } function flush() { clear(); } return (...args) => { if (!h) x(...args); h = h || setTimeout(flush, t); return { clear, flush }; }; } extraFunction.throttleEarly = _build.throttleEarly = throttleEarly; extraFunction.default = _build; Object.defineProperty(_build$1, "__esModule", { value: true }); var rangedSort$_1 = _build$1.rangedSort$ = rangedSort_1 = _build$1.rangedSort = sort$_1 = _build$1.sort$ = toSorted = _build$1.toSorted = sort_1 = _build$1.sort = searchUnsortedValue_1 = _build$1.searchUnsortedValue = hasUnsortedValue_1 = _build$1.hasUnsortedValue = isSorted_1 = _build$1.isSorted = removePath$_1 = _build$1.removePath$ = remove$_1 = _build$1.remove$ = remove_1 = _build$1.remove = swapRanges$_1 = _build$1.swapRanges$ = swapRanges_1 = _build$1.swapRanges = swap$_1 = _build$1.swap$ = swap_1 = _build$1.swap = setPath$_1 = _build$1.setPath$ = set$_1 = _build$1.set$ = _with = _build$1.with = set_1 = _build$1.set = hasPath_1 = _build$1.hasPath = getPath_1 = _build$1.getPath = getAll_1 = _build$1.getAll = at = _build$1.at = get_1 = _build$1.get = clear$_1 = _build$1.clear$ = resize$_1 = _build$1.resize$ = size = _build$1.size = length_1 = _build$1.length = isEmpty_1 = _build$1.isEmpty = indexRange_1 = _build$1.indexRange = index_1 = _build$1.index = ientries_1 = _build$1.ientries = entries_1 = _build$1.entries = ivalues_1 = _build$1.ivalues = values_1 = _build$1.values = ikeys_1 = _build$1.ikeys = keys_1 = _build$1.keys = is_1 = _build$1.is = deepClone_1 = _build$1.deepClone = clone = _build$1.clone = shallowClone_1 = _build$1.shallowClone = from$ = _build$1.from$ = fromIterable$_1 = _build$1.fromIterable$ = from = _build$1.from = fromIterable_1 = _build$1.fromIterable = fromApply = _build$1.fromApply = fromApplication_1 = _build$1.fromApplication = fromCall = _build$1.fromCall = fromInvocation_1 = _build$1.fromInvocation = fromRange_1 = _build$1.fromRange = void 0; var hasPermutation_1 = _build$1.hasPermutation = hasSubsequence_1 = _build$1.hasSubsequence = hasInfix_1 = _build$1.hasInfix = endsWith = _build$1.endsWith = hasSuffix_1 = _build$1.hasSuffix = startsWith = _build$1.startsWith = hasPrefix_1 = _build$1.hasPrefix = searchMismatch = _build$1.searchMismatch = searchMismatchedValue_1 = _build$1.searchMismatchedValue = searchAdjacentDuplicate = _build$1.searchAdjacentDuplicate = searchAdjacentDuplicateValue_1 = _build$1.searchAdjacentDuplicateValue = searchValueAll_1 = _build$1.searchValueAll = searchValueRight_1 = _build$1.searchValueRight = searchValue_1 = _build$1.searchValue = hasValue_1 = _build$1.hasValue = includes_1 = _build$1.includes = slice$_1 = _build$1.slice$ = slice_1 = _build$1.slice = middle_1 = _build$1.middle = back = _build$1.back = last_1 = _build$1.last = init_1 = _build$1.init = tail_1 = _build$1.tail = first = _build$1.first = front = _build$1.front = head_1 = _build$1.head = compare_1 = _build$1.compare = isEqual_1 = _build$1.isEqual = searchMaximumValues_1 = _build$1.searchMaximumValues = searchMinimumValues_1 = _build$1.searchMinimumValues = searchMaximumValue_1 = _build$1.searchMaximumValue = searchMinimumValue_1 = _build$1.searchMinimumValue = maximumEntries_1 = _build$1.maximumEntries = maximums_1 = _build$1.maximums = minimumEntries_1 = _build$1.minimumEntries = minimums_1 = _build$1.minimums = rangeEntries_1 = _build$1.rangeEntries = range_1 = _build$1.range = maxEntry = _build$1.maxEntry = maximumEntry_1 = _build$1.maximumEntry = max = _build$1.max = maximum_1 = _build$1.maximum = minEntry = _build$1.minEntry = minimumEntry_1 = _build$1.minimumEntry = min = _build$1.min = minimum_1 = _build$1.minimum = rangedPartialSort$_1 = _build$1.rangedPartialSort$ = rangedPartialSort_1 = _build$1.rangedPartialSort = partialSort$_1 = _build$1.partialSort$ = partialSort_1 = _build$1.partialSort = void 0; var findIndex = _build$1.findIndex = search_1 = _build$1.search = lastIndexOf_1 = _build$1.lastIndexOf = indexOf_1 = _build$1.indexOf = scanUntilRight_1 = _build$1.scanUntilRight = scanUntil_1 = _build$1.scanUntil = scanWhileRight_1 = _build$1.scanWhileRight = scanWhile_1 = _build$1.scanWhile = dropWhileRight_1 = _build$1.dropWhileRight = dropWhile_1 = _build$1.dropWhile = dropRight_1 = _build$1.dropRight = drop_1 = _build$1.drop = takeWhileRight_1 = _build$1.takeWhileRight = takeWhile_1 = _build$1.takeWhile = right = _build$1.right = takeRight_1 = _build$1.takeRight = left = _build$1.left = take_1 = _build$1.take = findRight_1 = _build$1.findRight = find_1 = _build$1.find = shuffle$ = _build$1.shuffle$ = permute$ = _build$1.permute$ = permutation$ = _build$1.permutation$ = randomPermutation$_1 = _build$1.randomPermutation$ = permutation = _build$1.permutation = randomPermutation_1 = _build$1.randomPermutation = subsequence = _build$1.subsequence = randomSubsequence_1 = _build$1.randomSubsequence = infix = _build$1.infix = randomInfix_1 = _build$1.randomInfix = suffix = _build$1.suffix = randomSuffix_1 = _build$1.randomSuffix = prefix = _build$1.prefix = randomPrefix_1 = _build$1.randomPrefix = value = _build$1.value = randomValue_1 = _build$1.randomValue = searchSubsequence_1 = _build$1.searchSubsequence = searchInfixAll_1 = _build$1.searchInfixAll = searchInfixRight_1 = _build$1.searchInfixRight = searchInfix_1 = _build$1.searchInfix = ipermutations_1 = _build$1.ipermutations = permutations_1 = _build$1.permutations = isubsequences_1 = _build$1.isubsequences = subsequences_1 = _build$1.subsequences = iinfixes_1 = _build$1.iinfixes = infixes_1 = _build$1.infixes = isuffixes_1 = _build$1.isuffixes = suffixes_1 = _build$1.suffixes = iprefixes_1 = _build$1.iprefixes = prefixes_1 = _build$1.prefixes = void 0; var unshift_1 = _build$1.unshift = popFront$ = _build$1.popFront$ = shift$_1 = _build$1.shift$ = popFront = _build$1.popFront = shift_1 = _build$1.shift = popBack$ = _build$1.popBack$ = pop$_1 = _build$1.pop$ = popBack = _build$1.popBack = pop_1 = _build$1.pop = append$ = _build$1.append$ = pushBack$ = _build$1.pushBack$ = push$_1 = _build$1.push$ = append = _build$1.append = pushBack = _build$1.pushBack = push_1 = _build$1.push = fill$_1 = _build$1.fill$ = fill_1 = _build$1.fill = zip_1 = _build$1.zip = interleave_1 = _build$1.interleave = intermix_1 = _build$1.intermix = interpolate_1 = _build$1.interpolate = intersperse_1 = _build$1.intersperse = adjacentCombine$_1 = _build$1.adjacentCombine$ = adjacentCombine_1 = _build$1.adjacentCombine = inclusiveScan$_1 = _build$1.inclusiveScan$ = accumulate = _build$1.accumulate = inclusiveScan_1 = _build$1.inclusiveScan = exclusiveScan$_1 = _build$1.exclusiveScan$ = exclusiveScan_1 = _build$1.exclusiveScan = flatMap_1 = _build$1.flatMap = flat_1 = _build$1.flat = rejectAt_1 = _build$1.rejectAt = reject$_1 = _build$1.reject$ = reject_1 = _build$1.reject = filterAt_1 = _build$1.filterAt = filter$_1 = _build$1.filter$ = findAll = _build$1.findAll = filter_1 = _build$1.filter = reduceRight_1 = _build$1.reduceRight = reduce_1 = _build$1.reduce = map$_1 = _build$1.map$ = map_1 = _build$1.map = allOf = _build$1.allOf = every_1 = _build$1.every = anyOf = _build$1.anyOf = some_1 = _build$1.some = forEach_1 = _build$1.forEach = searchAll_1 = _build$1.searchAll = findLastIndex = _build$1.findLastIndex = searchRight_1 = _build$1.searchRight = void 0; var cartesianProduct_1 = _build$1.cartesianProduct = symmetricDifference_1 = _build$1.symmetricDifference = difference_1 = _build$1.difference = intersection_1 = _build$1.intersection = union$_1 = _build$1.union$ = union_1 = _build$1.union = unique_1 = _build$1.unique = isDisjoint_1 = _build$1.isDisjoint = isUnique_1 = _build$1.isUnique = rotate$_1 = _build$1.rotate$ = rotate_1 = _build$1.rotate = reverse$_1 = _build$1.reverse$ = toReversed = _build$1.toReversed = reverse_1 = _build$1.reverse = repeat_1 = _build$1.repeat = cycle_1 = _build$1.cycle = join_1 = _build$1.join = concat$_1 = _build$1.concat$ = concat_1 = _build$1.concat = chunk_1 = _build$1.chunk = group_1 = _build$1.group = cutAtRight_1 = _build$1.cutAtRight = cutAt_1 = _build$1.cutAt = cutRight_1 = _build$1.cutRight = cut_1 = _build$1.cut = splitAt_1 = _build$1.splitAt = split_1 = _build$1.split = partitionAs = _build$1.partitionAs = groupToMap = _build$1.groupToMap = partitionEach_1 = _build$1.partitionEach = partition_1 = _build$1.partition = countAs = _build$1.countAs = countEach_1 = _build$1.countEach = count_1 = _build$1.count = splice$_1 = _build$1.splice$ = toSpliced = _build$1.toSpliced = splice_1 = _build$1.splice = moveWithin$_1 = _build$1.moveWithin$ = moveWithin_1 = _build$1.moveWithin = copyWithin$_1 = _build$1.copyWithin$ = copyWithin_1 = _build$1.copyWithin = copy$_1 = _build$1.copy$ = copy_1 = _build$1.copy = prepend$ = _build$1.prepend$ = pushFront$ = _build$1.pushFront$ = unshift$_1 = _build$1.unshift$ = prepend = _build$1.prepend = pushFront = _build$1.pushFront = void 0; const extra_math_1 = extraMathExports; const extra_function_1 = extraFunction; function toSet(x, fm = null) { if (!fm) return new Set(x); var a = new Set(), i = -1; for (var v of x) a.add(fm(v, ++i, x)); return a; } function fromRange(v, V, dv = 1) { var n = (V - v) / dv, a = []; for (var i = 0; i < n; ++i, v += dv) a.push(v); return a; } var fromRange_1 = _build$1.fromRange = fromRange; function fromInvocation(fn, n) { var a = []; for (var i = 0; i < n; ++i) a.push(fn()); return a; } var fromInvocation_1 = _build$1.fromInvocation = fromInvocation; var fromCall = _build$1.fromCall = fromInvocation; function fromApplication(fm, v, n) { var a = []; if (n !== 0) a.push(v); for (var i = 1; i !== n; ++i) a.push(v = fm(v, i, null)); return a; } var fromApplication_1 = _build$1.fromApplication = fromApplication; var fromApply = _build$1.fromApply = fromApplication; function fromIterable(x) { return [...x]; } var fromIterable_1 = _build$1.fromIterable = fromIterable; var from = _build$1.from = fromIterable; function fromIterable$(x) { return Array.isArray(x) ? x : [...x]; } var fromIterable$_1 = _build$1.fromIterable$ = fromIterable$; var from$ = _build$1.from$ = fromIterable$; function shallowClone(x) { return x.slice(); } var shallowClone_1 = _build$1.shallowClone = shallowClone; var clone = _build$1.clone = shallowClone; function deepClone(x) { return structuredClone(x); } var deepClone_1 = _build$1.deepClone = deepClone; function is(v) { return Array.isArray(v); } var is_1 = _build$1.is = is; function keys(x) { return [...x.keys()]; } var keys_1 = _build$1.keys = keys; function ikeys(x) { return x.keys(); } var ikeys_1 = _build$1.ikeys = ikeys; function values(x) { return x.slice(); } var values_1 = _build$1.values = values; function ivalues(x) { return x.values(); } var ivalues_1 = _build$1.ivalues = ivalues; function entries(x) { return [...x.entries()]; } var entries_1 = _build$1.entries = entries; function ientries(x) { return x.entries(); } var ientries_1 = _build$1.ientries = ientries; function index(x, i) { var X = x.length; return i >= 0 ? Math.min(i, X) : Math.max(X + i, 0); } var index_1 = _build$1.index = index; function indexRange(x, i = 0, I = x.length) { var X = x.length; var i = i >= 0 ? Math.min(i, X) : Math.max(X + i, 0); var I = I >= 0 ? Math.min(I, X) : Math.max(X + I, 0); return [i, Math.max(i, I)]; } var indexRange_1 = _build$1.indexRange = indexRange; function isEmpty(x) { return x.length === 0; } var isEmpty_1 = _build$1.isEmpty = isEmpty; function length(x, i = 0, I = x.length) { var [i, I] = indexRange(x, i, I); return I - i; } var length_1 = _build$1.length = length; var size = _build$1.size = length; function resize$(x, n, vd) { var X = x.length; x.length = n; if (n > X) x.fill(vd, X); return x; } var resize$_1 = _build$1.resize$ = resize$; function clear$(x) { x.length = 0; return x; } var clear$_1 = _build$1.clear$ = clear$; function get(x, i) { return x[index(x, i)]; } var get_1 = _build$1.get = get; var at = _build$1.at = get; function getAll(x, is) { return is.map(i => get(x, i)); } var getAll_1 = _build$1.getAll = getAll; function getPath(x, p) { for (var i of p) x = is(x) ? get(x, i) : undefined; return x; } var getPath_1 = _build$1.getPath = getPath; function hasPath(x, p) { for (var i of p) { if (!is(x)) return false; x = get(x, i); } return true; } var hasPath_1 = _build$1.hasPath = hasPath; function set(x, i, v) { return set$(x.slice(), i, v); } var set_1 = _build$1.set = set; var _with = _build$1.with = set; function set$(x, i, v) { x[index(x, i)] = v; return x; } var set$_1 = _build$1.set$ = set$; function setPath$(x, p, v) { var y = getPath(x, p.slice(0, -1)); if (is(y)) set$(y, last(p), v); return x; } var setPath$_1 = _build$1.setPath$ = setPath$; function swap(x, i, j) { return swap$(x.slice(), i, j); } var swap_1 = _build$1.swap = swap; function swap$(x, i, j) { var i = index(x, i), j = index(x, j); var t = x[i]; x[i] = x[j]; x[j] = t; return x; } var swap$_1 = _build$1.swap$ = swap$; function swapRaw$(x, i, j) { var t = x[i]; x[i] = x[j]; x[j] = t; return x; } function swapRanges(x, i, I, j, J) { var [i, I] = indexRange(x, i, I); var [j, J] = indexRange(x, j, J); if (j < i) [i, I, j, J] = [j, J, i, I]; if (j < I) return x.slice(); return x.slice(0, i).concat(x.slice(j, J), x.slice(i, j), x.slice(I)); } var swapRanges_1 = _build$1.swapRanges = swapRanges; function swapRanges$(x, i, I, j, J) { var [i, I] = indexRange(x, i, I); var [j, J] = indexRange(x, j, J); if (j < i) [i, I, j, J] = [j, J, i, I]; if (j < I) return x; var t = x.slice(i, I); x.splice(i, I - i, ...x.slice(j, J)); x.splice(j, J - j, ...t); return x; } var swapRanges$_1 = _build$1.swapRanges$ = swapRanges$; function remove(x, i) { var i = index(x, i); return x.slice(0, i).concat(x.slice(i + 1)); } var remove_1 = _build$1.remove = remove; function remove$(x, i) { x.splice(i, 1); return x; } var remove$_1 = _build$1.remove$ = remove$; function removePath$(x, p) { var y = getPath(x, p.slice(0, -1)); if (is(y)) y.splice(last(p), 1); return x; } var removePath$_1 = _build$1.removePath$ = removePath$; function isSorted(x, fc = null, fm = null) { return searchUnsortedValue(x, fc, fm) === -1; } var isSorted_1 = _build$1.isSorted = isSorted; function hasUnsortedValue(x, fc = null, fm = null) { return searchUnsortedValue(x, fc, fm) >= 0; } var hasUnsortedValue_1 = _build$1.hasUnsortedValue = hasUnsortedValue; function searchUnsortedValue(x, fc = null, fm = null) { var fc = fc || extra_function_1.COMPARE; var fm = fm || extra_function_1.IDENTITY; var X = x.length; if (X <= 1) return -1; var w0 = fm(x[0], 0, x); for (var i = 1; i < X; ++i) { var w = fm(x[i], i, x); if (fc(w0, w) > 0) return i; w0 = w; } return -1; } var searchUnsortedValue_1 = _build$1.searchUnsortedValue = searchUnsortedValue; function sort(x, fc = null, fm = null, fs = null) { return sort$(x.slice(), fc, fm, fs); } var sort_1 = _build$1.sort = sort; var toSorted = _build$1.toSorted = sort; function sort$(x, fc = null, fm = null, fs = null) { var fc = fc || extra_function_1.COMPARE; if (!fm && !fs) return x.sort(fc); var X = x.length; var fm = fm || extra_function_1.IDENTITY; var fs = fs || swapRaw$; return rangedPartialIntroSort$(x, 0, X, X, fc, fm, fs); } var sort$_1 = _build$1.sort$ = sort$; function rangedSort(x, i, I, fc = null, fm = null, fs = null) { return rangedSort$(x.slice(), i, I, fc, fm, fs); } var rangedSort_1 = _build$1.rangedSort = rangedSort; function rangedSort$(x, i, I, fc = null, fm = null, fs = null) { var fc = fc || extra_function_1.COMPARE; var fm = fm || extra_function_1.IDENTITY; var fs = fs || swapRaw$; var [i, I] = indexRange(x, i, I); return rangedPartialIntroSort$(x, i, I, I - i, fc, fm, fs); } rangedSort$_1 = _build$1.rangedSort$ = rangedSort$; function partialSort(x, n, fc = null, fm = null, fs = null) { return partialSort$(x.slice(), n, fc, fm, fs); } var partialSort_1 = _build$1.partialSort = partialSort; function partialSort$(x, n, fc = null, fm = null, fs = null) { return rangedPartialSort$(x, 0, x.length, n, fc, fm, fs); } var partialSort$_1 = _build$1.partialSort$ = partialSort$; function rangedPartialSort(x, i, I, n, fc = null, fm = null, fs = null) { return rangedPartialSort$(x.slice(), i, I, n, fc, fm, fs); } var rangedPartialSort_1 = _build$1.rangedPartialSort = rangedPartialSort; function rangedPartialSort$(x, i, I, n, fc = null, fm = null, fs = null) { var fc = fc || extra_function_1.COMPARE; var fm = fm || extra_function_1.IDENTITY; var fs = fs || swapRaw$; var [i, I] = indexRange(x, i, I); return rangedPartialIntroSort$(x, i, I, n, fc, fm, fs); } var rangedPartialSort$_1 = _build$1.rangedPartialSort$ = rangedPartialSort$; function rangedPartialIntroSort$(x, i, I, n, fc, fm, fs) { var d = Math.floor(Math.log2(I - i) * 2); var s = 16; return rangedPartialIntroSortDo$(x, i, I, d, s, n, fc, fm, fs); } function rangedPartialIntroSortDo$(x, i, I, d, s, n, fc, fm, fs) { if (n <= 0 || I - i <= 1) return x; if (I - i <= s) return rangedPartialInsertionSort$(x, i, I, n, fc, fm, fs); if (d <= 0) return rangedPartialHeapSort$(x, i, I, n, fc, fm, fs); var p = i + Math.floor((I - i) * Math.random()); var p = rangedQuickSortPartition$(x, i, I, p, fc, fm, fs); rangedPartialIntroSortDo$(x, i, p, d, s, Math.min(p - i, n), fc, fm, fs); rangedPartialIntroSortDo$(x, p + 1, I, d, s, Math.min(I - p - 1, n), fc, fm, fs); return x; } function rangedQuickSortPartition$(x, i, I, p, fc, fm, fs) { var wp = fm(x[p], p, x); var j = i - 1; fs(x, p, I - 1); for (var k = i; k < I - 1; ++k) { var wk = fm(x[k], k, x); if (fc(wk, wp) > 0) continue; fs(x, ++j, k); } fs(x, ++j, I - 1); return j; } function rangedPartialHeapSort$(x, i, I, n, fc, fm, fs) { rangedBuildRever