diff --git a/HISTORY.md b/HISTORY.md index cd61f6475..71e6262c1 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,8 +1,9 @@ # History -## not yet released, version 0.27.1 +## not yet released, version 1.0.0 +- Implemented a function `filter(x, test)`. - Removed `math.distribution` for now, needs some rethinking. - `math.number` can convert units to numbers (requires a second argument) - Fixed some precedence issues with the range and conversion operators. diff --git a/bower.json b/bower.json index af371ebcb..50d7409b8 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "mathjs", - "version": "0.27.1-SNAPSHOT", + "version": "1.0.0-SNAPSHOT", "main": "./dist/math.min.js", "ignore": [ "coverage", diff --git a/component.json b/component.json index d54c4506d..3fa9726e4 100644 --- a/component.json +++ b/component.json @@ -2,7 +2,7 @@ "name": "mathjs", "repo": "josdejong/mathjs", "description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser and offers an integrated solution to work with numbers, big numbers, complex numbers, units, and matrices.", - "version": "0.27.1-SNAPSHOT", + "version": "1.0.0-SNAPSHOT", "main": "dist/math.min.js", "keywords": [ "math", diff --git a/dist/math.js b/dist/math.js index 08d14541d..9e0605973 100644 --- a/dist/math.js +++ b/dist/math.js @@ -6,8 +6,8 @@ * It features real and complex numbers, units, matrices, a large set of * mathematical functions, and a flexible expression parser. * - * @version 0.27.1-SNAPSHOT - * @date 2014-08-28 + * @version 1.0.0-SNAPSHOT + * @date 2014-09-04 * * @license * Copyright (C) 2013-2014 Jos de Jong @@ -203,7 +203,7 @@ return /******/ (function(modules) { // webpackBootstrap math.create = create; // create a new BigNumber factory for this instance of math.js - var BigNumber = __webpack_require__(141).constructor(); + var BigNumber = __webpack_require__(139).constructor(); // extend BigNumber with a function clone if (typeof BigNumber.prototype.clone !== 'function') { @@ -262,13 +262,12 @@ return /******/ (function(modules) { // webpackBootstrap math.expression.docs = __webpack_require__(17); // expression parser - __webpack_require__(28)(math, _config); __webpack_require__(29)(math, _config); __webpack_require__(30)(math, _config); __webpack_require__(31)(math, _config); + __webpack_require__(32)(math, _config); // functions - arithmetic - __webpack_require__(32)(math, _config); __webpack_require__(33)(math, _config); __webpack_require__(34)(math, _config); __webpack_require__(35)(math, _config); @@ -295,9 +294,9 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(56)(math, _config); __webpack_require__(57)(math, _config); __webpack_require__(58)(math, _config); + __webpack_require__(59)(math, _config); // functions - relational - __webpack_require__(59)(math, _config); __webpack_require__(60)(math, _config); __webpack_require__(61)(math, _config); __webpack_require__(62)(math, _config); @@ -305,15 +304,15 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(64)(math, _config); __webpack_require__(65)(math, _config); __webpack_require__(66)(math, _config); + __webpack_require__(67)(math, _config); // functions - complex - __webpack_require__(67)(math, _config); __webpack_require__(68)(math, _config); __webpack_require__(69)(math, _config); __webpack_require__(70)(math, _config); + __webpack_require__(71)(math, _config); // functions - construction - __webpack_require__(71)(math, _config); __webpack_require__(72)(math, _config); __webpack_require__(73)(math, _config); __webpack_require__(74)(math, _config); @@ -323,9 +322,9 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(78)(math, _config); __webpack_require__(79)(math, _config); __webpack_require__(80)(math, _config); + __webpack_require__(81)(math, _config); // functions - matrix - __webpack_require__(81)(math, _config); __webpack_require__(82)(math, _config); __webpack_require__(83)(math, _config); __webpack_require__(84)(math, _config); @@ -339,18 +338,18 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(92)(math, _config); __webpack_require__(93)(math, _config); __webpack_require__(94)(math, _config); + __webpack_require__(95)(math, _config); // functions - probability //require('./function/probability/distribution')(math, _config); // TODO: rethink math.distribution - __webpack_require__(95)(math, _config); __webpack_require__(96)(math, _config); __webpack_require__(97)(math, _config); __webpack_require__(98)(math, _config); __webpack_require__(99)(math, _config); __webpack_require__(100)(math, _config); + __webpack_require__(101)(math, _config); // functions - statistics - __webpack_require__(101)(math, _config); __webpack_require__(102)(math, _config); __webpack_require__(103)(math, _config); __webpack_require__(104)(math, _config); @@ -358,9 +357,9 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(106)(math, _config); __webpack_require__(107)(math, _config); __webpack_require__(108)(math, _config); + __webpack_require__(109)(math, _config); // functions - trigonometry - __webpack_require__(109)(math, _config); __webpack_require__(110)(math, _config); __webpack_require__(111)(math, _config); __webpack_require__(112)(math, _config); @@ -376,12 +375,12 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(122)(math, _config); __webpack_require__(123)(math, _config); __webpack_require__(124)(math, _config); - - // functions - units __webpack_require__(125)(math, _config); - // functions - utils + // functions - units __webpack_require__(126)(math, _config); + + // functions - utils __webpack_require__(127)(math, _config); __webpack_require__(128)(math, _config); __webpack_require__(129)(math, _config); @@ -389,6 +388,8 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(131)(math, _config); __webpack_require__(132)(math, _config); __webpack_require__(133)(math, _config); + __webpack_require__(134)(math, _config); + __webpack_require__(135)(math, _config); // TODO: deprecated since version 0.25.0, remove some day. math.ifElse = function () { @@ -408,10 +409,11 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(24)(math, _config); __webpack_require__(25)(math, _config); __webpack_require__(26)(math, _config); + __webpack_require__(27)(math, _config); // selector (we initialize after all functions are loaded) math.chaining = {}; - math.chaining.Selector = __webpack_require__(27)(math, _config); + math.chaining.Selector = __webpack_require__(28)(math, _config); // apply provided configuration options math.config(_config); // apply the default options @@ -440,7 +442,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; module.exports = function (math, config) { - var bignumber = __webpack_require__(134); + var bignumber = __webpack_require__(136); var Complex = __webpack_require__(6); var BigNumber = math.type.BigNumber; @@ -532,7 +534,7 @@ return /******/ (function(modules) { // webpackBootstrap math['true'] = true; math['false'] = false; math['null'] = null; - math['uninitialized'] = __webpack_require__(135).UNINITIALIZED; + math['uninitialized'] = __webpack_require__(137).UNINITIALIZED; // uppercase constants (for compatibility with built-in Math) math.E = math.e; @@ -545,7 +547,7 @@ return /******/ (function(modules) { // webpackBootstrap math.SQRT2 = big ? new BigNumber(2).sqrt() : Math.SQRT2; // meta information - math.version = __webpack_require__(136); + math.version = __webpack_require__(138); }; @@ -991,10 +993,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - exports.ArgumentsError = __webpack_require__(137); - exports.DimensionError = __webpack_require__(138); - exports.IndexError = __webpack_require__(139); - exports.UnsupportedTypeError = __webpack_require__(140); + exports.ArgumentsError = __webpack_require__(140); + exports.DimensionError = __webpack_require__(141); + exports.IndexError = __webpack_require__(142); + exports.UnsupportedTypeError = __webpack_require__(143); // TODO: implement an InvalidValueError? @@ -1005,7 +1007,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(142), + var util = __webpack_require__(144), Unit = __webpack_require__(10), number = util.number, @@ -1449,7 +1451,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(142), + var util = __webpack_require__(144), number = util.number, string = util.string, @@ -1724,7 +1726,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(142), + var util = __webpack_require__(144), Range = __webpack_require__(7), @@ -1999,8 +2001,8 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(142), - DimensionError = __webpack_require__(138), + var util = __webpack_require__(144), + DimensionError = __webpack_require__(141), Index = __webpack_require__(8), @@ -2522,7 +2524,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(142), + var util = __webpack_require__(144), number = util.number, string = util.string, @@ -3393,7 +3395,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(142), + var util = __webpack_require__(144), object = util.object, string = util.string; @@ -3538,10 +3540,10 @@ return /******/ (function(modules) { // webpackBootstrap // utility methods for arrays and matrices 'use strict'; - var util = __webpack_require__(142), + var util = __webpack_require__(144), - IndexError = __webpack_require__(139), - DimensionError = __webpack_require__(138), + IndexError = __webpack_require__(142), + DimensionError = __webpack_require__(141), Matrix = __webpack_require__(9), @@ -3804,9 +3806,9 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var util = __webpack_require__(142), + var util = __webpack_require__(144), - ArgumentsError = __webpack_require__(137), + ArgumentsError = __webpack_require__(140), isString = util.string.isString, isArray = Array.isArray, @@ -3819,18 +3821,18 @@ return /******/ (function(modules) { // webpackBootstrap collection = __webpack_require__(13), // scope and nodes - ArrayNode = __webpack_require__(143), - AssignmentNode = __webpack_require__(144), - BlockNode = __webpack_require__(145), - ConditionalNode = __webpack_require__(146), - ConstantNode = __webpack_require__(147), - FunctionAssignmentNode = __webpack_require__(148), - IndexNode = __webpack_require__(149), - OperatorNode = __webpack_require__(150), - FunctionNode = __webpack_require__(151), - RangeNode = __webpack_require__(152), - SymbolNode = __webpack_require__(153), - UpdateNode = __webpack_require__(154); + ArrayNode = __webpack_require__(145), + AssignmentNode = __webpack_require__(146), + BlockNode = __webpack_require__(147), + ConditionalNode = __webpack_require__(148), + ConstantNode = __webpack_require__(149), + FunctionAssignmentNode = __webpack_require__(150), + IndexNode = __webpack_require__(151), + OperatorNode = __webpack_require__(152), + FunctionNode = __webpack_require__(153), + RangeNode = __webpack_require__(154), + SymbolNode = __webpack_require__(155), + UpdateNode = __webpack_require__(156); /** * Parse an expression. Returns a node tree, which can be evaluated by @@ -5239,19 +5241,19 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - exports.ArrayNode = __webpack_require__(143); - exports.AssignmentNode = __webpack_require__(144); - exports.BlockNode = __webpack_require__(145); - exports.ConditionalNode = __webpack_require__(146); - exports.ConstantNode = __webpack_require__(147); - exports.IndexNode = __webpack_require__(149); - exports.FunctionAssignmentNode = __webpack_require__(148); - exports.FunctionNode = __webpack_require__(151); - exports.Node = __webpack_require__(155); - exports.OperatorNode = __webpack_require__(150); - exports.RangeNode = __webpack_require__(152); - exports.SymbolNode = __webpack_require__(153); - exports.UpdateNode = __webpack_require__(154); + exports.ArrayNode = __webpack_require__(145); + exports.AssignmentNode = __webpack_require__(146); + exports.BlockNode = __webpack_require__(147); + exports.ConditionalNode = __webpack_require__(148); + exports.ConstantNode = __webpack_require__(149); + exports.IndexNode = __webpack_require__(151); + exports.FunctionAssignmentNode = __webpack_require__(150); + exports.FunctionNode = __webpack_require__(153); + exports.Node = __webpack_require__(157); + exports.OperatorNode = __webpack_require__(152); + exports.RangeNode = __webpack_require__(154); + exports.SymbolNode = __webpack_require__(155); + exports.UpdateNode = __webpack_require__(156); /***/ }, @@ -5259,150 +5261,151 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { // constants - exports.e = __webpack_require__(159); - exports.E = __webpack_require__(159); - exports['false'] = __webpack_require__(160); - exports.i = __webpack_require__(161); - exports['Infinity'] = __webpack_require__(162); - exports.LN2 = __webpack_require__(163); - exports.LN10 = __webpack_require__(164); - exports.LOG2E = __webpack_require__(165); - exports.LOG10E = __webpack_require__(166); - exports.NaN = __webpack_require__(167); - exports['null'] = __webpack_require__(168); - exports.pi = __webpack_require__(169); - exports.PI = __webpack_require__(169); - exports.phi = __webpack_require__(170); - exports.SQRT1_2 = __webpack_require__(171); - exports.SQRT2 = __webpack_require__(172); - exports.tau = __webpack_require__(173); - exports['true'] = __webpack_require__(174); - exports.version = __webpack_require__(175); + exports.e = __webpack_require__(161); + exports.E = __webpack_require__(161); + exports['false'] = __webpack_require__(162); + exports.i = __webpack_require__(163); + exports['Infinity'] = __webpack_require__(164); + exports.LN2 = __webpack_require__(165); + exports.LN10 = __webpack_require__(166); + exports.LOG2E = __webpack_require__(167); + exports.LOG10E = __webpack_require__(168); + exports.NaN = __webpack_require__(169); + exports['null'] = __webpack_require__(170); + exports.pi = __webpack_require__(171); + exports.PI = __webpack_require__(171); + exports.phi = __webpack_require__(172); + exports.SQRT1_2 = __webpack_require__(173); + exports.SQRT2 = __webpack_require__(174); + exports.tau = __webpack_require__(175); + exports['true'] = __webpack_require__(176); + exports.version = __webpack_require__(177); // functions - arithmetic - exports.abs = __webpack_require__(179); - exports.add = __webpack_require__(180); - exports.ceil = __webpack_require__(181); - exports.cube = __webpack_require__(182); - exports.divide = __webpack_require__(183); - exports.dotDivide = __webpack_require__(184); - exports.dotMultiply = __webpack_require__(185); - exports.dotPow = __webpack_require__(186); - exports.exp = __webpack_require__(187); - exports.fix = __webpack_require__(188); - exports.floor = __webpack_require__(189); - exports.gcd = __webpack_require__(190); - exports.lcm = __webpack_require__(191); - exports.log = __webpack_require__(192); - exports.log10 = __webpack_require__(193); - exports.mod = __webpack_require__(194); - exports.multiply = __webpack_require__(195); - exports.norm = __webpack_require__(196); - exports.pow = __webpack_require__(197); - exports.round = __webpack_require__(198); - exports.sign = __webpack_require__(199); - exports.sqrt = __webpack_require__(200); - exports.square = __webpack_require__(201); - exports.subtract = __webpack_require__(202); - exports.unaryMinus = __webpack_require__(203); - exports.unaryPlus = __webpack_require__(204); - exports.xgcd = __webpack_require__(205); + exports.abs = __webpack_require__(181); + exports.add = __webpack_require__(182); + exports.ceil = __webpack_require__(183); + exports.cube = __webpack_require__(184); + exports.divide = __webpack_require__(185); + exports.dotDivide = __webpack_require__(186); + exports.dotMultiply = __webpack_require__(187); + exports.dotPow = __webpack_require__(188); + exports.exp = __webpack_require__(189); + exports.fix = __webpack_require__(190); + exports.floor = __webpack_require__(191); + exports.gcd = __webpack_require__(192); + exports.lcm = __webpack_require__(193); + exports.log = __webpack_require__(194); + exports.log10 = __webpack_require__(195); + exports.mod = __webpack_require__(196); + exports.multiply = __webpack_require__(197); + exports.norm = __webpack_require__(198); + exports.pow = __webpack_require__(199); + exports.round = __webpack_require__(200); + exports.sign = __webpack_require__(201); + exports.sqrt = __webpack_require__(202); + exports.square = __webpack_require__(203); + exports.subtract = __webpack_require__(204); + exports.unaryMinus = __webpack_require__(205); + exports.unaryPlus = __webpack_require__(206); + exports.xgcd = __webpack_require__(207); // functions - relational - exports.compare = __webpack_require__(206); - exports.deepEqual = __webpack_require__(207); - exports['equal'] = __webpack_require__(208); - exports.larger = __webpack_require__(209); - exports.largerEq = __webpack_require__(210); - exports.smaller = __webpack_require__(211); - exports.smallerEq = __webpack_require__(212); - exports.unequal = __webpack_require__(213); + exports.compare = __webpack_require__(208); + exports.deepEqual = __webpack_require__(209); + exports['equal'] = __webpack_require__(210); + exports.larger = __webpack_require__(211); + exports.largerEq = __webpack_require__(212); + exports.smaller = __webpack_require__(213); + exports.smallerEq = __webpack_require__(214); + exports.unequal = __webpack_require__(215); // functions - complex - exports.arg = __webpack_require__(214); - exports.conj = __webpack_require__(215); - exports.re = __webpack_require__(216); - exports.im = __webpack_require__(217); + exports.arg = __webpack_require__(216); + exports.conj = __webpack_require__(217); + exports.re = __webpack_require__(218); + exports.im = __webpack_require__(219); // functions - construction - exports.bignumber = __webpack_require__(218); - exports['boolean'] = __webpack_require__(219); - exports.complex = __webpack_require__(220); - exports.index = __webpack_require__(221); - exports.matrix = __webpack_require__(222); - exports.number = __webpack_require__(223); - exports.string = __webpack_require__(224); - exports.unit = __webpack_require__(225); + exports.bignumber = __webpack_require__(220); + exports['boolean'] = __webpack_require__(221); + exports.complex = __webpack_require__(222); + exports.index = __webpack_require__(223); + exports.matrix = __webpack_require__(224); + exports.number = __webpack_require__(225); + exports.string = __webpack_require__(226); + exports.unit = __webpack_require__(227); // functions - epxression - exports['eval'] = __webpack_require__(226); - exports.help = __webpack_require__(227); + exports['eval'] = __webpack_require__(228); + exports.help = __webpack_require__(229); // functions - matrix - exports['concat'] = __webpack_require__(228); - exports.det = __webpack_require__(229); - exports.diag = __webpack_require__(230); - exports.eye = __webpack_require__(231); - exports.flatten = __webpack_require__(232); - exports.inv = __webpack_require__(233); - exports.ones = __webpack_require__(234); - exports.range = __webpack_require__(235); - exports.resize = __webpack_require__(236); - exports.size = __webpack_require__(237); - exports.squeeze = __webpack_require__(238); - exports.subset = __webpack_require__(239); - exports.transpose = __webpack_require__(240); - exports.zeros = __webpack_require__(241); + exports['concat'] = __webpack_require__(230); + exports.det = __webpack_require__(231); + exports.diag = __webpack_require__(232); + exports.eye = __webpack_require__(233); + exports.flatten = __webpack_require__(234); + exports.inv = __webpack_require__(235); + exports.ones = __webpack_require__(236); + exports.range = __webpack_require__(237); + exports.resize = __webpack_require__(238); + exports.size = __webpack_require__(239); + exports.squeeze = __webpack_require__(240); + exports.subset = __webpack_require__(241); + exports.transpose = __webpack_require__(242); + exports.zeros = __webpack_require__(243); // functions - probability - exports.combinations = __webpack_require__(242); + exports.combinations = __webpack_require__(244); //exports.distribution = require('./function/probability/distribution'); - exports.factorial = __webpack_require__(243); - exports.permutations = __webpack_require__(244); - exports.pickRandom = __webpack_require__(245); - exports.random = __webpack_require__(246); - exports.randomInt = __webpack_require__(247); + exports.factorial = __webpack_require__(245); + exports.permutations = __webpack_require__(246); + exports.pickRandom = __webpack_require__(247); + exports.random = __webpack_require__(248); + exports.randomInt = __webpack_require__(249); // functions - statistics - exports.max = __webpack_require__(248); - exports.mean = __webpack_require__(249); - exports.median = __webpack_require__(250); - exports.min = __webpack_require__(251); - exports.prod = __webpack_require__(252); - exports.std = __webpack_require__(253); - exports.sum = __webpack_require__(254); - exports['var'] = __webpack_require__(255); + exports.max = __webpack_require__(250); + exports.mean = __webpack_require__(251); + exports.median = __webpack_require__(252); + exports.min = __webpack_require__(253); + exports.prod = __webpack_require__(254); + exports.std = __webpack_require__(255); + exports.sum = __webpack_require__(256); + exports['var'] = __webpack_require__(257); // functions - trigonometry - exports.acos = __webpack_require__(256); - exports.asin = __webpack_require__(257); - exports.atan = __webpack_require__(258); - exports.atan2 = __webpack_require__(259); - exports.cos = __webpack_require__(260); - exports.cosh = __webpack_require__(261); - exports.cot = __webpack_require__(262); - exports.coth = __webpack_require__(263); - exports.csc = __webpack_require__(264); - exports.csch = __webpack_require__(265); - exports.sec = __webpack_require__(266); - exports.sech = __webpack_require__(267); - exports.sin = __webpack_require__(268); - exports.sinh = __webpack_require__(269); - exports.tan = __webpack_require__(270); - exports.tanh = __webpack_require__(271); + exports.acos = __webpack_require__(258); + exports.asin = __webpack_require__(259); + exports.atan = __webpack_require__(260); + exports.atan2 = __webpack_require__(261); + exports.cos = __webpack_require__(262); + exports.cosh = __webpack_require__(263); + exports.cot = __webpack_require__(264); + exports.coth = __webpack_require__(265); + exports.csc = __webpack_require__(266); + exports.csch = __webpack_require__(267); + exports.sec = __webpack_require__(268); + exports.sech = __webpack_require__(269); + exports.sin = __webpack_require__(270); + exports.sinh = __webpack_require__(271); + exports.tan = __webpack_require__(272); + exports.tanh = __webpack_require__(273); // functions - units - exports.to = __webpack_require__(272); + exports.to = __webpack_require__(274); // functions - utils - exports.clone = __webpack_require__(273); - exports.map = __webpack_require__(274); - exports.forEach = __webpack_require__(275); - exports.format = __webpack_require__(276); + exports.clone = __webpack_require__(275); + exports.map = __webpack_require__(276); + exports.filter = __webpack_require__(277); + exports.forEach = __webpack_require__(278); + exports.format = __webpack_require__(279); // exports.print = require('./function/utils/print'); // TODO: add documentation for print as soon as the parser supports objects. - exports['import'] = __webpack_require__(277); - exports.sort = __webpack_require__(278); - exports['typeof'] = __webpack_require__(279); + exports['import'] = __webpack_require__(280); + exports.sort = __webpack_require__(281); + exports['typeof'] = __webpack_require__(282); /***/ }, @@ -5411,10 +5414,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var BigNumber = __webpack_require__(141); - var errorTransform = __webpack_require__(156).transform; + var BigNumber = __webpack_require__(139); + var errorTransform = __webpack_require__(158).transform; var isNumber = __webpack_require__(4).isNumber; - var argsToArray = __webpack_require__(135).argsToArray; + var argsToArray = __webpack_require__(137).argsToArray; /** * Attach a transform function to math.range @@ -5455,8 +5458,76 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; + var SymbolNode = __webpack_require__(155); + var isBoolean = __webpack_require__(159).isBoolean; + var argsToArray = __webpack_require__(137).argsToArray; + var ArgumentsError = __webpack_require__(140); + + /** + * Attach a transform function to math.filter + * Adds a property transform containing the transform function. + * + * This transform adds support for equations as test function for math.filter, + * so you can do something like 'filter([3, -2, 5], x > 0)'. + * @param {Object} math + */ + module.exports = function (math) { + var _filter = math.filter; + + _filter.transform = function (args, math, scope) { + if (args.length !== 2) { + throw new ArgumentsError('filter', arguments.length, 2); + } + + var x = args[0].compile(math).eval(scope); + var test; + if (args[1] instanceof SymbolNode) { + // a function pointer, like filter([3, -2, 5], myTestFunction); + test = args[1].compile(math).eval(scope); + } + else { + // an equation like filter([3, -2, 5], x > 0) + + // find an undefined symbol + var _scope = scope || {}; + var symbol = args[1] + .find({ + type: SymbolNode + }) + .filter(function (symbol) { + return !(symbol.name in math) && !(symbol.name in _scope); + })[0]; + + // create a test function for this equation + var sub = Object.create(_scope); + var eq = args[1].compile(math); + if (symbol) { + var name = symbol.name; + test = function (x) { + sub[name] = x; + return eq.eval(sub); + } + } + else { + throw new Error('No undefined variable found in filter equation'); + } + } + + return _filter(x, test); + }; + + math.filter.transform.rawArgs = true; + }; + + +/***/ }, +/* 20 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + var Matrix = __webpack_require__(9); - var BigNumber = __webpack_require__(141); + var BigNumber = __webpack_require__(139); var Range = __webpack_require__(7); var Index = __webpack_require__(8); var isNumber = __webpack_require__(4).isNumber; @@ -5500,12 +5571,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 20 */ +/* 21 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var BigNumber = __webpack_require__(141); + var BigNumber = __webpack_require__(139); var Range = __webpack_require__(7); var Index = __webpack_require__(8); var Matrix = __webpack_require__(9); @@ -5559,13 +5630,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 21 */ +/* 22 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var Matrix = __webpack_require__(9); - var BigNumber = __webpack_require__(141); + var BigNumber = __webpack_require__(139); var Range = __webpack_require__(7); var Index = __webpack_require__(8); var isNumber = __webpack_require__(4).isNumber; @@ -5611,16 +5682,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 22 */ +/* 23 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var BigNumber = __webpack_require__(141); - var errorTransform = __webpack_require__(156).transform; + var BigNumber = __webpack_require__(139); + var errorTransform = __webpack_require__(158).transform; var isNumber = __webpack_require__(4).isNumber; var isCollection = __webpack_require__(13).isCollection; - var argsToArray = __webpack_require__(135).argsToArray; + var argsToArray = __webpack_require__(137).argsToArray; /** * Attach a transform function to math.max @@ -5656,16 +5727,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 23 */ +/* 24 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var BigNumber = __webpack_require__(141); - var errorTransform = __webpack_require__(156).transform; + var BigNumber = __webpack_require__(139); + var errorTransform = __webpack_require__(158).transform; var isNumber = __webpack_require__(4).isNumber; var isCollection = __webpack_require__(13).isCollection; - var argsToArray = __webpack_require__(135).argsToArray; + var argsToArray = __webpack_require__(137).argsToArray; /** * Attach a transform function to math.mean @@ -5701,16 +5772,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 24 */ +/* 25 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var BigNumber = __webpack_require__(141); - var errorTransform = __webpack_require__(156).transform; + var BigNumber = __webpack_require__(139); + var errorTransform = __webpack_require__(158).transform; var isNumber = __webpack_require__(4).isNumber; var isCollection = __webpack_require__(13).isCollection; - var argsToArray = __webpack_require__(135).argsToArray; + var argsToArray = __webpack_require__(137).argsToArray; /** * Attach a transform function to math.min @@ -5746,13 +5817,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 25 */ +/* 26 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var isBoolean = __webpack_require__(157).isBoolean; - var argsToArray = __webpack_require__(135).argsToArray; + var isBoolean = __webpack_require__(159).isBoolean; + var argsToArray = __webpack_require__(137).argsToArray; /** * Attach a transform function to math.range @@ -5777,14 +5848,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 26 */ +/* 27 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var errorTransform = __webpack_require__(156).transform; - var isBoolean = __webpack_require__(157).isBoolean; - var argsToArray = __webpack_require__(135).argsToArray; + var errorTransform = __webpack_require__(158).transform; + var isBoolean = __webpack_require__(159).isBoolean; + var argsToArray = __webpack_require__(137).argsToArray; /** * Attach a transform function to math.subset @@ -5806,13 +5877,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 27 */ +/* 28 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var string = __webpack_require__(158); + var string = __webpack_require__(160); /** * @constructor Selector @@ -5907,13 +5978,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 28 */ +/* 29 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), _parse = __webpack_require__(14), collection = __webpack_require__(13), @@ -5979,13 +6050,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 29 */ +/* 30 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), _parse = __webpack_require__(14), collection = __webpack_require__(13), @@ -6052,7 +6123,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 30 */ +/* 31 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -6123,7 +6194,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 31 */ +/* 32 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -6157,13 +6228,13 @@ return /******/ (function(modules) { // webpackBootstrap * var nodes = math.parse(['a = 3', 'b = 4', 'a * b']); * nodes[2].compile(math).eval(); // 12 * - * @param {String | String[] | Matrix} expr + * @param {String | String[] | Matrix} expr Expression to be parsed * @param {{nodes: Object}} [options] Available options: * - `nodes` a set of custom nodes * @return {Node | Node[]} node * @throws {Error} */ - math.parse = function parse (expr, nodes) { + math.parse = function parse (expr, options) { return _parse.apply(_parse, arguments); } @@ -6171,13 +6242,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 32 */ +/* 33 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -6244,13 +6315,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 33 */ +/* 34 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -6406,13 +6477,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 34 */ +/* 35 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -6485,13 +6556,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 35 */ +/* 36 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -6557,13 +6628,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 36 */ +/* 37 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function(math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -6732,7 +6803,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 37 */ +/* 38 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -6782,13 +6853,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 38 */ +/* 39 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), collection = __webpack_require__(13); /** @@ -6833,13 +6904,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 39 */ +/* 40 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), collection = __webpack_require__(13); /** @@ -6881,13 +6952,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 40 */ +/* 41 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -6962,13 +7033,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 41 */ +/* 42 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -7040,13 +7111,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 42 */ +/* 43 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -7118,13 +7189,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 43 */ +/* 44 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, collection = __webpack_require__(13), @@ -7265,13 +7336,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 44 */ +/* 45 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, collection = __webpack_require__(13), @@ -7427,13 +7498,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 45 */ +/* 46 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -7530,13 +7601,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 46 */ +/* 47 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -7618,13 +7689,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 47 */ +/* 48 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, collection = __webpack_require__(13), @@ -7757,13 +7828,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 48 */ +/* 49 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function(math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -8188,15 +8259,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 49 */ +/* 50 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), - array = __webpack_require__(135), + array = __webpack_require__(137), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -8376,13 +8447,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 50 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -8560,13 +8631,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 51 */ +/* 52 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -8700,13 +8771,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 52 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -8780,13 +8851,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 53 */ +/* 54 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -8886,13 +8957,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 54 */ +/* 55 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -8960,13 +9031,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 55 */ +/* 56 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -9120,13 +9191,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 56 */ +/* 57 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -9209,13 +9280,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 57 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -9289,13 +9360,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 58 */ +/* 59 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), Matrix = __webpack_require__(9), BigNumber = math.type.BigNumber, @@ -9471,13 +9542,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 59 */ +/* 60 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -9601,7 +9672,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 60 */ +/* 61 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -9686,13 +9757,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 61 */ +/* 62 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -9850,13 +9921,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 62 */ +/* 63 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -9977,13 +10048,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 63 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -10105,13 +10176,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 64 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -10232,13 +10303,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 65 */ +/* 66 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -10359,13 +10430,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 66 */ +/* 67 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -10522,13 +10593,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 67 */ +/* 68 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -10599,13 +10670,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 68 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -10674,13 +10745,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 69 */ +/* 70 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -10751,13 +10822,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 70 */ +/* 71 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -10827,13 +10898,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 71 */ +/* 72 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), // take the BigNumber instance the provided math.js instance BigNumber = math.type.BigNumber, @@ -10896,13 +10967,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 72 */ +/* 73 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, collection = __webpack_require__(13), @@ -10990,13 +11061,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 73 */ +/* 74 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -11123,13 +11194,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 74 */ +/* 75 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Index = __webpack_require__(8); @@ -11197,13 +11268,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 75 */ +/* 76 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), Matrix = __webpack_require__(9); /** @@ -11242,29 +11313,31 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 76 */ +/* 77 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144); - BigNumber = math.type.BigNumber, - collection = __webpack_require__(13), + var BigNumber = math.type.BigNumber; + var Unit = math.type.Unit; + var collection = __webpack_require__(13); - isCollection = collection.isCollection, - isNumber = util.number.isNumber, - isBoolean = util['boolean'].isBoolean, - isString = util.string.isString; + var isCollection = collection.isCollection; + var isNumber = util.number.isNumber; + var isBoolean = util['boolean'].isBoolean; + var isString = util.string.isString; /** - * Create a number or convert a string to a number. + * Create a number or convert a string, boolean, or unit to a number. * When value is a matrix, all elements will be converted to number. * * Syntax: * * math.number(value) + * math.number(unit, valuelessUnit) * * Examples: * @@ -11272,15 +11345,17 @@ return /******/ (function(modules) { // webpackBootstrap * math.number('7.2'); // returns number 7.2 * math.number(true); // returns number 1 * math.number([true, false, true, true]); // returns [1, 0, 1, 1] + * math.number(math.unit('52cm'), 'm'); // returns 0.52 * * See also: * * bignumber, boolean, complex, index, matrix, string, unit * - * @param {String | Number | Boolean | Array | Matrix | null} [value] Value to be converted + * @param {String | Number | Boolean | Array | Matrix | Unit | null} [value] Value to be converted + * @param {Unit | string} [valuelessUnit] A valueless unit, used to convert a unit to a number * @return {Number | Array | Matrix} The created number */ - math.number = function number (value) { + math.number = function number (value, valuelessUnit) { switch (arguments.length) { case 0: return 0; @@ -11313,8 +11388,20 @@ return /******/ (function(modules) { // webpackBootstrap return value; } + if (value instanceof Unit) { + throw new Error('Second argument with valueless unit expected'); + } + throw new math.error.UnsupportedTypeError('number', math['typeof'](value)); + case 2: + if (value instanceof Unit && isString(valuelessUnit) || valuelessUnit instanceof Unit) { + return value.toNumber(valuelessUnit); + } + + throw new math.error.UnsupportedTypeError('number', math['typeof'](value), math['typeof'](valuelessUnit)); + + default: throw new math.error.ArgumentsError('number', arguments.length, 0, 1); } @@ -11323,7 +11410,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 77 */ +/* 78 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -11381,7 +11468,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 78 */ +/* 79 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -11430,13 +11517,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 79 */ +/* 80 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), collection = __webpack_require__(13), @@ -11497,13 +11584,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 80 */ +/* 81 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Unit = __webpack_require__(10), @@ -11584,15 +11671,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 81 */ +/* 82 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), - BigNumber = __webpack_require__(141), + BigNumber = __webpack_require__(139), Matrix = __webpack_require__(9), collection = __webpack_require__(13), @@ -11726,13 +11813,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 82 */ +/* 83 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), Matrix = __webpack_require__(9), @@ -11887,13 +11974,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 83 */ +/* 84 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Matrix = __webpack_require__(9), @@ -12004,13 +12091,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 84 */ +/* 85 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Matrix = __webpack_require__(9), @@ -12107,13 +12194,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 85 */ +/* 86 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142); + var util = __webpack_require__(144); var Matrix = __webpack_require__(9); @@ -12160,13 +12247,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 86 */ +/* 87 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), string = util.string, Matrix = __webpack_require__(9); @@ -12360,13 +12447,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 87 */ +/* 88 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Matrix = __webpack_require__(9), @@ -12437,13 +12524,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 88 */ +/* 89 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Matrix = __webpack_require__(9), @@ -12763,13 +12850,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 89 */ +/* 90 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Matrix = __webpack_require__(9), @@ -12898,13 +12985,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 90 */ +/* 91 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -12971,13 +13058,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 91 */ +/* 92 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), Matrix = __webpack_require__(9), @@ -13035,13 +13122,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 92 */ +/* 93 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), Matrix = __webpack_require__(9), Index = __webpack_require__(8), @@ -13252,13 +13339,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 93 */ +/* 94 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), Matrix = __webpack_require__(9), @@ -13335,13 +13422,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 94 */ +/* 95 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Matrix = __webpack_require__(9), @@ -13411,13 +13498,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 95 */ +/* 96 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, collection = __webpack_require__(13), @@ -13519,13 +13606,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 96 */ +/* 97 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var distribution = __webpack_require__(176)(math); + var distribution = __webpack_require__(178)(math); /** * Return a random number between `min` and `max` using a uniform distribution. @@ -13560,13 +13647,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 97 */ +/* 98 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var distribution = __webpack_require__(176)(math); + var distribution = __webpack_require__(178)(math); /** * Return a random integer number between `min` and `max` using a uniform distribution. @@ -13601,13 +13688,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 98 */ +/* 99 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var distribution = __webpack_require__(176)(math); + var distribution = __webpack_require__(178)(math); /** * Random pick a value from a one dimensional array. @@ -13633,13 +13720,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 99 */ +/* 100 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, @@ -13746,13 +13833,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 100 */ +/* 101 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, collection = __webpack_require__(13), @@ -13843,7 +13930,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 101 */ +/* 102 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -13938,7 +14025,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 102 */ +/* 103 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -14033,7 +14120,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 103 */ +/* 104 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -14044,7 +14131,7 @@ return /******/ (function(modules) { // webpackBootstrap isCollection = collection.isCollection, - size = __webpack_require__(135).size, + size = __webpack_require__(137).size, isArray = Array.isArray; /** @@ -14137,7 +14224,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 104 */ +/* 105 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -14151,7 +14238,7 @@ return /******/ (function(modules) { // webpackBootstrap isNumber = __webpack_require__(4).isNumber, isCollection = collection.isCollection, - flatten = __webpack_require__(135).flatten; + flatten = __webpack_require__(137).flatten; /** * Compute the median of a matrix or a list with values. The values are @@ -14251,7 +14338,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 105 */ +/* 106 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -14336,7 +14423,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 106 */ +/* 107 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -14396,7 +14483,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 107 */ +/* 108 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -14479,7 +14566,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 108 */ +/* 109 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -14490,7 +14577,7 @@ return /******/ (function(modules) { // webpackBootstrap collection = __webpack_require__(13), isCollection = collection.isCollection, - isString = __webpack_require__(158).isString, + isString = __webpack_require__(160).isString, DEFAULT_NORMALIZATION = 'unbiased'; @@ -14623,13 +14710,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 109 */ +/* 110 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -14717,13 +14804,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 110 */ +/* 111 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -14809,13 +14896,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 111 */ +/* 112 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -14896,13 +14983,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 112 */ +/* 113 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -14980,13 +15067,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 113 */ +/* 114 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15069,13 +15156,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 114 */ +/* 115 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15151,13 +15238,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 115 */ +/* 116 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15237,13 +15324,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 116 */ +/* 117 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15327,13 +15414,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 117 */ +/* 118 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15414,13 +15501,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 118 */ +/* 119 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15505,13 +15592,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 119 */ +/* 120 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15592,13 +15679,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 120 */ +/* 121 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15679,13 +15766,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 121 */ +/* 122 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15767,13 +15854,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 122 */ +/* 123 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15851,13 +15938,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 123 */ +/* 124 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15940,13 +16027,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 124 */ +/* 125 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -16031,13 +16118,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 125 */ +/* 126 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), Unit = __webpack_require__(10), collection = __webpack_require__(13), @@ -16093,13 +16180,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 126 */ +/* 127 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), object = util.object; /** @@ -16131,13 +16218,93 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 127 */ +/* 128 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var Matrix = __webpack_require__(9); + + /** + * Sort the items in a matrix. + * + * Syntax: + * + * math.filter(x, test) + * + * Examples: + * + * function isPositive (x) { + * return x > 0; + * } + * math.filter([6, -2, -1, 4, 3], isPositive); // returns [6, 4, 3] + * + * math.filter(["23", "foo", "100", "55", "bar"], /[0-9]+/); // returns ["23", "100", "55"] + * + * See also: + * + * forEach, map, sort + * + * @param {Matrix | Array} x A one dimensional matrix or array to filter + * @param {Function | RegExp} test + * A function or regular expression to test items. + * When `test` is a function, it must return a boolean. + * All entries for which `test` returns true are returned. + * @return {Matrix | Array} Returns the filtered matrix. + */ + math.filter = function (x, test) { + if (arguments.length !== 2) { + throw new math.error.ArgumentsError('filter', arguments.length, 2); + } + + if (x instanceof Matrix) { + var size = x.size(); + if (size.length > 1) { + throw new Error('Only one dimensional matrices supported'); + } + return new Matrix(_filter(x.toArray(), test)); + } + else if (Array.isArray(x)) { + return _filter(x, test); + } + else { + throw new math.error.UnsupportedTypeError('filter', math['typeof'](x), math['typeof'](compare)); + } + }; + + /** + * + * @param {Array} x + * @param {function | RegExp} test + * @return {Array} Returns the filtered array + * @private + */ + function _filter(x, test) { + if (typeof test === 'function') { + return x.filter(function (entry) { + return test(entry); + }); + } + else if (test instanceof RegExp) { + return x.filter(function (entry) { + return test.test(entry); + }); + } + else { + throw new TypeError('Function or RegExp expected'); + } + } + }; + +/***/ }, +/* 129 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + module.exports = function (math) { + var util = __webpack_require__(144), string = util.string; /** @@ -16216,13 +16383,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 128 */ +/* 130 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), Complex = __webpack_require__(6), Unit = __webpack_require__(10), @@ -16295,7 +16462,7 @@ return /******/ (function(modules) { // webpackBootstrap // istanbul ignore else (we cannot unit test the else case in a node.js environment) if (true) { // load the file using require - var _module = __webpack_require__(177)(object); + var _module = __webpack_require__(179)(object); math_import(_module, options); } else { @@ -16368,7 +16535,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 129 */ +/* 131 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16391,6 +16558,10 @@ return /******/ (function(modules) { // webpackBootstrap * return value * value; * }); // returns [1, 4, 9] * + * See also: + * + * filter, forEach, sort + * * @param {Matrix | Array} x The matrix to iterate on. * @param {Function} callback The callback method is invoked with three * parameters: the value of the element, the index @@ -16431,13 +16602,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 130 */ +/* 132 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(142), + var util = __webpack_require__(144), isString = util.string.isString; @@ -16515,7 +16686,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 131 */ +/* 133 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16541,7 +16712,11 @@ return /******/ (function(modules) { // webpackBootstrap * } * math.sort(['Langdon', 'Tom', 'Sara'], sortByLength); // returns ['Tom', 'Sara', 'Langdon'] * - * @param {Matrix | Array} x A one dimensional matrix or array to sot + * See also: + * + * filter, forEach, map + * + * @param {Matrix | Array} x A one dimensional matrix or array to sort * @param {Function | 'asc' | 'desc'} [compare='asc'] * An optional comparator function. The function is called as * `compare(a, b)`, and must return 1 when a > b, -1 when a < b, @@ -16591,13 +16766,13 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 132 */ +/* 134 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var types = __webpack_require__(178), + var types = __webpack_require__(180), Complex = __webpack_require__(6), Matrix = __webpack_require__(9), @@ -16673,7 +16848,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 133 */ +/* 135 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16695,6 +16870,10 @@ return /******/ (function(modules) { // webpackBootstrap * }); * // outputs 1, 2, 3 * + * See also: + * + * filter, map, sort + * * @param {Matrix | Array} x The matrix to iterate on. * @param {Function} callback The callback function is invoked with three * parameters: the value of the element, the index @@ -16733,12 +16912,12 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 134 */ +/* 136 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var BigNumber = __webpack_require__(141); + var BigNumber = __webpack_require__(139); var isNumber = __webpack_require__(4).isNumber; var digits = __webpack_require__(4).digits; @@ -16937,18 +17116,18 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 135 */ +/* 137 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var number = __webpack_require__(4), - string = __webpack_require__(158), + string = __webpack_require__(160), object = __webpack_require__(3), - types = __webpack_require__(178), + types = __webpack_require__(180), - DimensionError = __webpack_require__(138), - IndexError = __webpack_require__(139), + DimensionError = __webpack_require__(141), + IndexError = __webpack_require__(142), isArray = Array.isArray; @@ -17319,189 +17498,16 @@ return /******/ (function(modules) { // webpackBootstrap exports.isArray = isArray; /***/ }, -/* 136 */ +/* 138 */ /***/ function(module, exports, __webpack_require__) { - module.exports = '0.27.1-SNAPSHOT'; + module.exports = '1.0.0-SNAPSHOT'; // Note: This file is automatically generated when building math.js. // Changes made in this file will be overwritten. -/***/ }, -/* 137 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - /** - * Create a syntax error with the message: - * 'Wrong number of arguments in function ( provided, - expected)' - * @param {String} fn Function name - * @param {Number} count Actual argument count - * @param {Number} min Minimum required argument count - * @param {Number} [max] Maximum required argument count - * @extends Error - */ - function ArgumentsError(fn, count, min, max) { - if (!(this instanceof ArgumentsError)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - this.fn = fn; - this.count = count; - this.min = min; - this.max = max; - - this.message = 'Wrong number of arguments in function ' + fn + - ' (' + count + ' provided, ' + - min + ((max != undefined) ? ('-' + max) : '') + ' expected)'; - - this.stack = (new Error()).stack; - } - - ArgumentsError.prototype = new Error(); - ArgumentsError.prototype.constructor = Error; - ArgumentsError.prototype.name = 'ArgumentsError'; - - module.exports = ArgumentsError; - - -/***/ }, -/* 138 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - /** - * Create a range error with the message: - * 'Dimension mismatch ( != )' - * @param {number | number[]} actual The actual size - * @param {number | number[]} expected The expected size - * @param {string} [relation='!='] Optional relation between actual - * and expected size: '!=', '<', etc. - * @extends RangeError - */ - function DimensionError(actual, expected, relation) { - if (!(this instanceof DimensionError)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - this.actual = actual; - this.expected = expected; - this.relation = relation; - - this.message = 'Dimension mismatch (' + - (Array.isArray(actual) ? ('[' + actual.join(', ') + ']') : actual) + - ' ' + (this.relation || '!=') + ' ' + - (Array.isArray(expected) ? ('[' + expected.join(', ') + ']') : expected) + - ')'; - - this.stack = (new Error()).stack; - } - - DimensionError.prototype = new RangeError(); - DimensionError.prototype.constructor = RangeError; - DimensionError.prototype.name = 'DimensionError'; - - module.exports = DimensionError; - - /***/ }, /* 139 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - /** - * Create a range error with the message: - * 'Index out of range (index < min)' - * 'Index out of range (index < max)' - * - * @param {number} index The actual index - * @param {number} [min=0] Minimum index (included) - * @param {number} [max] Maximum index (excluded) - * @extends RangeError - */ - function IndexError(index, min, max) { - if (!(this instanceof IndexError)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - this.index = index; - if (arguments.length < 3) { - this.min = 0; - this.max = min; - } - else { - this.min = min; - this.max = max; - } - - if (this.min !== undefined && this.index < this.min) { - this.message = 'Index out of range (' + this.index + ' < ' + this.min + ')'; - } - else if (this.max !== undefined && this.index >= this.max) { - this.message = 'Index out of range (' + this.index + ' > ' + (this.max - 1) + ')'; - } - else { - this.message = 'Index out of range (' + this.index + ')'; - } - - this.stack = (new Error()).stack; - } - - IndexError.prototype = new RangeError(); - IndexError.prototype.constructor = RangeError; - IndexError.prototype.name = 'IndexError'; - - module.exports = IndexError; - - -/***/ }, -/* 140 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - /** - * Create a TypeError with message: - * 'Function does not support a parameter of type '; - * @param {String} fn Function name - * @param {*...} [types] The types of the function arguments - * @extends TypeError - */ - function UnsupportedTypeError(fn, types) { - if (!(this instanceof UnsupportedTypeError)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - this.fn = fn; - this.types = Array.prototype.splice.call(arguments, 1); - - if (!fn) { - this.message = 'Unsupported type of argument'; - } - else { - if (this.types.length == 0) { - this.message = 'Unsupported type of argument in function ' + fn; - } - else { - this.message = 'Function ' + fn + '(' + this.types.join(', ') + ') not supported'; - } - } - - this.stack = (new Error()).stack; - } - - UnsupportedTypeError.prototype = new TypeError(); - UnsupportedTypeError.prototype.constructor = TypeError; - UnsupportedTypeError.prototype.name = 'UnsupportedTypeError'; - - module.exports = UnsupportedTypeError; - - -/***/ }, -/* 141 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v3.0.1 https://github.com/MikeMcl/decimal.js/LICENCE */ @@ -21489,19 +21495,134 @@ return /******/ (function(modules) { // webpackBootstrap })(this); +/***/ }, +/* 140 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + /** + * Create a syntax error with the message: + * 'Wrong number of arguments in function ( provided, - expected)' + * @param {String} fn Function name + * @param {Number} count Actual argument count + * @param {Number} min Minimum required argument count + * @param {Number} [max] Maximum required argument count + * @extends Error + */ + function ArgumentsError(fn, count, min, max) { + if (!(this instanceof ArgumentsError)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + this.fn = fn; + this.count = count; + this.min = min; + this.max = max; + + this.message = 'Wrong number of arguments in function ' + fn + + ' (' + count + ' provided, ' + + min + ((max != undefined) ? ('-' + max) : '') + ' expected)'; + + this.stack = (new Error()).stack; + } + + ArgumentsError.prototype = new Error(); + ArgumentsError.prototype.constructor = Error; + ArgumentsError.prototype.name = 'ArgumentsError'; + + module.exports = ArgumentsError; + + +/***/ }, +/* 141 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + /** + * Create a range error with the message: + * 'Dimension mismatch ( != )' + * @param {number | number[]} actual The actual size + * @param {number | number[]} expected The expected size + * @param {string} [relation='!='] Optional relation between actual + * and expected size: '!=', '<', etc. + * @extends RangeError + */ + function DimensionError(actual, expected, relation) { + if (!(this instanceof DimensionError)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + this.actual = actual; + this.expected = expected; + this.relation = relation; + + this.message = 'Dimension mismatch (' + + (Array.isArray(actual) ? ('[' + actual.join(', ') + ']') : actual) + + ' ' + (this.relation || '!=') + ' ' + + (Array.isArray(expected) ? ('[' + expected.join(', ') + ']') : expected) + + ')'; + + this.stack = (new Error()).stack; + } + + DimensionError.prototype = new RangeError(); + DimensionError.prototype.constructor = RangeError; + DimensionError.prototype.name = 'DimensionError'; + + module.exports = DimensionError; + + /***/ }, /* 142 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - exports.array = __webpack_require__(135); - exports['boolean'] = __webpack_require__(157); - exports.number = __webpack_require__(4); - exports.bignumber = __webpack_require__(134); - exports.object = __webpack_require__(3); - exports.string = __webpack_require__(158); - exports.types = __webpack_require__(178); + /** + * Create a range error with the message: + * 'Index out of range (index < min)' + * 'Index out of range (index < max)' + * + * @param {number} index The actual index + * @param {number} [min=0] Minimum index (included) + * @param {number} [max] Maximum index (excluded) + * @extends RangeError + */ + function IndexError(index, min, max) { + if (!(this instanceof IndexError)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + this.index = index; + if (arguments.length < 3) { + this.min = 0; + this.max = min; + } + else { + this.min = min; + this.max = max; + } + + if (this.min !== undefined && this.index < this.min) { + this.message = 'Index out of range (' + this.index + ' < ' + this.min + ')'; + } + else if (this.max !== undefined && this.index >= this.max) { + this.message = 'Index out of range (' + this.index + ' > ' + (this.max - 1) + ')'; + } + else { + this.message = 'Index out of range (' + this.index + ')'; + } + + this.stack = (new Error()).stack; + } + + IndexError.prototype = new RangeError(); + IndexError.prototype.constructor = RangeError; + IndexError.prototype.name = 'IndexError'; + + module.exports = IndexError; /***/ }, @@ -21510,11 +21631,69 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var Node = __webpack_require__(155), + /** + * Create a TypeError with message: + * 'Function does not support a parameter of type '; + * @param {String} fn Function name + * @param {*...} [types] The types of the function arguments + * @extends TypeError + */ + function UnsupportedTypeError(fn, types) { + if (!(this instanceof UnsupportedTypeError)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + this.fn = fn; + this.types = Array.prototype.splice.call(arguments, 1); + + if (!fn) { + this.message = 'Unsupported type of argument'; + } + else { + if (this.types.length == 0) { + this.message = 'Unsupported type of argument in function ' + fn; + } + else { + this.message = 'Function ' + fn + '(' + this.types.join(', ') + ') not supported'; + } + } + + this.stack = (new Error()).stack; + } + + UnsupportedTypeError.prototype = new TypeError(); + UnsupportedTypeError.prototype.constructor = TypeError; + UnsupportedTypeError.prototype.name = 'UnsupportedTypeError'; + + module.exports = UnsupportedTypeError; + + +/***/ }, +/* 144 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + exports.array = __webpack_require__(137); + exports['boolean'] = __webpack_require__(159); + exports.number = __webpack_require__(4); + exports.bignumber = __webpack_require__(136); + exports.object = __webpack_require__(3); + exports.string = __webpack_require__(160); + exports.types = __webpack_require__(180); + + +/***/ }, +/* 145 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var Node = __webpack_require__(157), object = __webpack_require__(3), - string = __webpack_require__(158), + string = __webpack_require__(160), collection = __webpack_require__(13), - util = __webpack_require__(142), + util = __webpack_require__(144), isArray = Array.isArray, isNode = Node.isNode; @@ -21621,18 +21800,18 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 144 */ +/* 146 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(155), - ArrayNode = __webpack_require__(143), + var Node = __webpack_require__(157), + ArrayNode = __webpack_require__(145), - keywords = __webpack_require__(280), + keywords = __webpack_require__(283), - latex = __webpack_require__(281), - isString = __webpack_require__(158).isString; + latex = __webpack_require__(284), + isString = __webpack_require__(160).isString; /** * @constructor AssignmentNode @@ -21714,14 +21893,14 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = AssignmentNode; /***/ }, -/* 145 */ +/* 147 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(155); + var Node = __webpack_require__(157); var ResultSet = __webpack_require__(12); - var isBoolean = __webpack_require__(157).isBoolean; + var isBoolean = __webpack_require__(159).isBoolean; /** * @constructor BlockNode @@ -21834,17 +22013,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 146 */ +/* 148 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(155); - var latex = __webpack_require__(281); - var BigNumber = __webpack_require__(141); + var Node = __webpack_require__(157); + var latex = __webpack_require__(284); + var BigNumber = __webpack_require__(139); var Complex = __webpack_require__(6); var Unit = __webpack_require__(10); - var util = __webpack_require__(142); + var util = __webpack_require__(144); var isString = util.string.isString; var isNumber = util.number.isNumber; var isBoolean = util['boolean'].isBoolean; @@ -21979,15 +22158,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 147 */ +/* 149 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(155), - BigNumber = __webpack_require__(141), - type = __webpack_require__(178).type, - isString = __webpack_require__(158).isString; + var Node = __webpack_require__(157), + BigNumber = __webpack_require__(139), + type = __webpack_require__(180).type, + isString = __webpack_require__(160).isString; /** * A ConstantNode holds a constant value like a number or string. A ConstantNode @@ -22139,15 +22318,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 148 */ +/* 150 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(155); - var keywords = __webpack_require__(280); - var latex = __webpack_require__(281); - var isString = __webpack_require__(158).isString; + var Node = __webpack_require__(157); + var keywords = __webpack_require__(283); + var latex = __webpack_require__(284); + var isString = __webpack_require__(160).isString; var isArray = Array.isArray; /** @@ -22250,14 +22429,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 149 */ +/* 151 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(155), - RangeNode = __webpack_require__(152), - SymbolNode = __webpack_require__(153), + var Node = __webpack_require__(157), + RangeNode = __webpack_require__(154), + SymbolNode = __webpack_require__(155), isNode = Node.isNode, isArray = Array.isArray; @@ -22451,16 +22630,16 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = IndexNode; /***/ }, -/* 150 */ +/* 152 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(155), - ConstantNode = __webpack_require__(147), - SymbolNode = __webpack_require__(153), - FunctionNode = __webpack_require__(151), - latex = __webpack_require__(281); + var Node = __webpack_require__(157), + ConstantNode = __webpack_require__(149), + SymbolNode = __webpack_require__(155), + FunctionNode = __webpack_require__(153), + latex = __webpack_require__(284); /** * @constructor OperatorNode @@ -22652,14 +22831,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 151 */ +/* 153 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(155); + var Node = __webpack_require__(157); - var latex = __webpack_require__(281); + var latex = __webpack_require__(284); var isNode = Node.isNode; var isArray = Array.isArray; @@ -22772,12 +22951,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 152 */ +/* 154 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(155), + var Node = __webpack_require__(157), isNode = Node.isNode; @@ -22880,16 +23059,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 153 */ +/* 155 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(155), + var Node = __webpack_require__(157), Unit = __webpack_require__(10), - latex = __webpack_require__(281), - isString = __webpack_require__(158).isString; + latex = __webpack_require__(284), + isString = __webpack_require__(160).isString; /** * @constructor SymbolNode @@ -22969,13 +23148,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 154 */ +/* 156 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(155), - IndexNode = __webpack_require__(149); + var Node = __webpack_require__(157), + IndexNode = __webpack_require__(151); /** * @constructor UpdateNode @@ -23060,12 +23239,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 155 */ +/* 157 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var keywords = __webpack_require__(280); + var keywords = __webpack_require__(283); /** * Node @@ -23257,11 +23436,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 156 */ +/* 158 */ /***/ function(module, exports, __webpack_require__) { - var DimensionError = __webpack_require__(138); - var IndexError = __webpack_require__(139); + var DimensionError = __webpack_require__(141); + var IndexError = __webpack_require__(142); /** * Transform zero-based indices to one-based indices in errors @@ -23278,7 +23457,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 157 */ +/* 159 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -23294,14 +23473,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 158 */ +/* 160 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var number = __webpack_require__(4), - bignumber = __webpack_require__(134), - BigNumber = __webpack_require__(141); + bignumber = __webpack_require__(136), + BigNumber = __webpack_require__(139); /** * Test whether value is a String @@ -23409,7 +23588,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 159 */ +/* 161 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23430,7 +23609,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 160 */ +/* 162 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23448,7 +23627,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 161 */ +/* 163 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23468,7 +23647,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 162 */ +/* 164 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23487,7 +23666,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 163 */ +/* 165 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23506,7 +23685,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 164 */ +/* 166 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23525,7 +23704,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 165 */ +/* 167 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23544,7 +23723,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 166 */ +/* 168 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23563,7 +23742,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 167 */ +/* 169 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23582,7 +23761,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 168 */ +/* 170 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23600,7 +23779,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 169 */ +/* 171 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23619,7 +23798,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 170 */ +/* 172 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23637,7 +23816,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 171 */ +/* 173 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23656,7 +23835,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 172 */ +/* 174 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23675,7 +23854,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 173 */ +/* 175 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23694,7 +23873,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 174 */ +/* 176 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23712,7 +23891,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 175 */ +/* 177 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -23730,7 +23909,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 176 */ +/* 178 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -23740,7 +23919,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = function (math) { var Matrix = __webpack_require__(9); - var array = __webpack_require__(135); + var array = __webpack_require__(137); var collection = __webpack_require__(13); var isCollection = collection.isCollection; @@ -23943,26 +24122,28 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 177 */ +/* 179 */ /***/ function(module, exports, __webpack_require__) { var map = { - "./clone": 126, - "./clone.js": 126, - "./forEach": 133, - "./forEach.js": 133, - "./format": 127, - "./format.js": 127, - "./import": 128, - "./import.js": 128, - "./map": 129, - "./map.js": 129, - "./print": 130, - "./print.js": 130, - "./sort": 131, - "./sort.js": 131, - "./typeof": 132, - "./typeof.js": 132 + "./clone": 127, + "./clone.js": 127, + "./filter": 128, + "./filter.js": 128, + "./forEach": 135, + "./forEach.js": 135, + "./format": 129, + "./format.js": 129, + "./import": 130, + "./import.js": 130, + "./map": 131, + "./map.js": 131, + "./print": 132, + "./print.js": 132, + "./sort": 133, + "./sort.js": 133, + "./typeof": 134, + "./typeof.js": 134 }; function webpackContext(req) { return __webpack_require__(webpackContextResolve(req)); @@ -23978,7 +24159,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 178 */ +/* 180 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -24010,7 +24191,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 179 */ +/* 181 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24029,7 +24210,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 180 */ +/* 182 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24054,7 +24235,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 181 */ +/* 183 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24075,7 +24256,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 182 */ +/* 184 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24099,7 +24280,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 183 */ +/* 185 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24125,7 +24306,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 184 */ +/* 186 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24150,7 +24331,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 185 */ +/* 187 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24175,7 +24356,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 186 */ +/* 188 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24198,7 +24379,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 187 */ +/* 189 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24223,7 +24404,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 188 */ +/* 190 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24245,7 +24426,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 189 */ +/* 191 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24266,7 +24447,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 190 */ +/* 192 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24287,7 +24468,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 191 */ +/* 193 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24307,7 +24488,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 192 */ +/* 194 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24335,7 +24516,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 193 */ +/* 195 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24360,7 +24541,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 194 */ +/* 196 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24386,7 +24567,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 195 */ +/* 197 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24411,7 +24592,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 196 */ +/* 198 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24437,7 +24618,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 197 */ +/* 199 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24459,7 +24640,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 198 */ +/* 200 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24484,7 +24665,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 199 */ +/* 201 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24507,7 +24688,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 200 */ +/* 202 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24531,7 +24712,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 201 */ +/* 203 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24558,7 +24739,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 202 */ +/* 204 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24583,7 +24764,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 203 */ +/* 205 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24607,7 +24788,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 204 */ +/* 206 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24630,7 +24811,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 205 */ +/* 207 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24650,7 +24831,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 206 */ +/* 208 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24675,7 +24856,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 207 */ +/* 209 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24697,7 +24878,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 208 */ +/* 210 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24724,7 +24905,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 209 */ +/* 211 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24752,7 +24933,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 210 */ +/* 212 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24778,7 +24959,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 211 */ +/* 213 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24805,7 +24986,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 212 */ +/* 214 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24831,7 +25012,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 213 */ +/* 215 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24859,7 +25040,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 214 */ +/* 216 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24885,7 +25066,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 215 */ +/* 217 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24911,7 +25092,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 216 */ +/* 218 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24937,7 +25118,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 217 */ +/* 219 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24963,7 +25144,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 218 */ +/* 220 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -24988,7 +25169,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 219 */ +/* 221 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25015,7 +25196,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 220 */ +/* 222 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25040,7 +25221,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 221 */ +/* 223 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25071,7 +25252,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 222 */ +/* 224 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25099,7 +25280,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 223 */ +/* 225 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25118,7 +25299,8 @@ return /******/ (function(modules) { // webpackBootstrap 'number(2)', 'number("7.2")', 'number(true)', - 'number([true, false, true, true])' + 'number([true, false, true, true])', + 'number("52cm", "m")' ], 'seealso': [ 'bignumber', 'boolean', 'complex', 'index', 'matrix', 'string', 'unit' @@ -25127,7 +25309,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 224 */ +/* 226 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25151,7 +25333,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 225 */ +/* 227 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25177,7 +25359,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 226 */ +/* 228 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25197,7 +25379,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 227 */ +/* 229 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25217,7 +25399,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 228 */ +/* 230 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25242,7 +25424,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 229 */ +/* 231 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25263,7 +25445,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 230 */ +/* 232 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25287,7 +25469,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 231 */ +/* 233 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25313,7 +25495,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 232 */ +/* 234 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25336,7 +25518,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 233 */ +/* 235 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25358,7 +25540,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 234 */ +/* 236 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25388,7 +25570,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 235 */ +/* 237 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25419,7 +25601,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 236 */ +/* 238 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25444,7 +25626,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 237 */ +/* 239 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25468,7 +25650,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 238 */ +/* 240 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25491,7 +25673,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 239 */ +/* 241 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25522,7 +25704,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 240 */ +/* 242 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25545,7 +25727,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 241 */ +/* 243 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25574,7 +25756,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 242 */ +/* 244 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25592,7 +25774,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 243 */ +/* 245 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25613,7 +25795,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 244 */ +/* 246 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25633,7 +25815,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 245 */ +/* 247 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25653,7 +25835,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 246 */ +/* 248 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25679,7 +25861,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 247 */ +/* 249 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25704,7 +25886,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 248 */ +/* 250 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25737,7 +25919,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 249 */ +/* 251 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25769,7 +25951,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 250 */ +/* 252 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25797,7 +25979,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 251 */ +/* 253 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25830,7 +26012,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 252 */ +/* 254 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25860,7 +26042,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 253 */ +/* 255 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25893,7 +26075,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 254 */ +/* 256 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25923,7 +26105,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 255 */ +/* 257 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25956,7 +26138,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 256 */ +/* 258 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -25979,7 +26161,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 257 */ +/* 259 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26002,7 +26184,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 258 */ +/* 260 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26025,7 +26207,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 259 */ +/* 261 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26052,7 +26234,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 260 */ +/* 262 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26078,7 +26260,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 261 */ +/* 263 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26100,7 +26282,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 262 */ +/* 264 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26123,7 +26305,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 263 */ +/* 265 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26146,7 +26328,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 264 */ +/* 266 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26169,7 +26351,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 265 */ +/* 267 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26192,7 +26374,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 266 */ +/* 268 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26215,7 +26397,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 267 */ +/* 269 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26238,7 +26420,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 268 */ +/* 270 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26264,7 +26446,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 269 */ +/* 271 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26285,7 +26467,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 270 */ +/* 272 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26310,7 +26492,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 271 */ +/* 273 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26332,7 +26514,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 272 */ +/* 274 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26353,7 +26535,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 273 */ +/* 275 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26375,7 +26557,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 274 */ +/* 276 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26388,12 +26570,32 @@ return /******/ (function(modules) { // webpackBootstrap 'examples': [ 'map([1, 2, 3], function(val) { return value * value })' ], - 'seealso': [] + 'seealso': ['filter', 'forEach'] }; /***/ }, -/* 275 */ +/* 277 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'filter', + 'category': 'Utils', + 'syntax': [ + 'filter(x, test)' + ], + 'description': 'Filter items in a matrix.', + 'examples': [ + 'isPositive(x) = x > 0', + 'filter([6, -2, -1, 4, 3], isPositive)', + 'filter([6, -2, 0, 1, 0], x != 0)' + ], + 'seealso': ['sort', 'map', 'forEach'] + }; + + +/***/ }, +/* 278 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26406,12 +26608,12 @@ return /******/ (function(modules) { // webpackBootstrap 'examples': [ 'forEach([1, 2, 3], function(val) { console.log(val) })' ], - 'seealso': ['unit'] + 'seealso': ['map', 'sort', 'filter'] }; /***/ }, -/* 276 */ +/* 279 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26433,7 +26635,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 277 */ +/* 280 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26452,7 +26654,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 278 */ +/* 281 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26465,14 +26667,16 @@ return /******/ (function(modules) { // webpackBootstrap 'description': 'Sort the items in a matrix. Compare can be a string "asc" or "desc", or a custom sort function.', 'examples': [ 'sort([5, 10, 1])', - 'sort(["C", "B", "A", "D"])' + 'sort(["C", "B", "A", "D"])', + 'sortByLength(a, b) = size(a)[1] - size(b)[1]', + 'sort(["Langdon", "Tom", "Sara"], sortByLength)' ], - 'seealso': [] + 'seealso': ['map', 'filter', 'forEach'] }; /***/ }, -/* 279 */ +/* 282 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26493,7 +26697,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 280 */ +/* 283 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -26505,13 +26709,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 281 */ +/* 284 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var ArrayNode = __webpack_require__(143), - OperatorNode = __webpack_require__(150); + var ArrayNode = __webpack_require__(145), + OperatorNode = __webpack_require__(152); // GREEK LETTERS var greek = { diff --git a/dist/math.map b/dist/math.map index aad5caac0..fb52cc448 100644 --- a/dist/math.map +++ b/dist/math.map @@ -1 +1 @@ -{"version":3,"file":"math.map","sources":["./dist/math.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","create","config","Object","Error","math","_config","matrix","number","precision","epsilon","options","object","deepExtend","type","BigNumber","defaultType","decimals","clone","constructor","prototype","convert","digits","error","Complex","Range","Index","Matrix","Unit","Help","ResultSet","collection","expression","node","parse","Parser","docs","ifElse","chaining","Selector","window","mathjs","bigE","exp","bigPhi","plus","sqrt","div","arctan","x","y","yPrev","NaN","x2","times","num","sign","k","equals","minus","bigPi","Big","pi4th","bigTau","pi","big","Math","PI","tau","e","E","phi","i","Infinity","UNINITIALIZED","LN2","ln","LN10","LOG2E","LOG10E","SQRT1_2","SQRT2","version","undefined","Array","isArray","map","value","Number","valueOf","String","Boolean","Date","RegExp","TypeError","key","hasOwnProperty","extend","a","b","prop","deepEqual","len","length","isNumber","isInteger","round","format","isNaN","notation","toFixed","toExponential","lower","upper","exponential","str","abs","valueStr","toPrecision","min","parseFloat","replace","arguments","DBL_EPSILON","EPSILON","nearlyEqual","isFinite","diff","max","ArgumentsError","DimensionError","IndexError","UnsupportedTypeError","re","im","SyntaxError","arg","construct","fromPolar","r","skipWhitespace","next","isDigitDot","isDigit","index","text","charAt","revert","oldIndex","parseNumber","parseComplex","cnext","util","isUnit","isString","string","isComplex","first","separator","second","substring","hasBase","BASE_UNITS","ANGLE","toNumber","cos","sin","toPolar","atan2","other","strRe","strIm","toString","start","end","step","array","args","split","nums","invalid","some","isRange","size","ceil","forEach","callback","obj","toArray","_ranges","_isScalar","ii","push","_createRange","primitive","isIndex","ranges","apply","range","values","dim","isScalar","row","strings","join","data","_data","preprocess","types","_size","_get","get","validateIndex","_getSubmatrix","dims","last","child","_set","submatrix","defaultValue","sSize","iSize","set","outer","unsqueeze","_fit","_setSubmatrix","dataIndex","subIndex","newSize","changed","resize","elem","isMatrix","subset","replacement","index_i","me","recurse","name","res","_findUnit","unit","prefix","UNIT_NONE","PREFIX_NONE","_normalize","fixPrefix","parseUnit","unitName","UNITS","endsWith","prefixLen","prefixName","prefixes","err","offset","_unnormalize","prefixValue","isValuelessUnit","base","equalBase","to","valuelessUnit","bestPrefix","_bestPrefix","absValue","bestDiff","log","scientific","PREFIXES","NONE","SHORT","da","h","M","G","T","P","Z","Y","d","u","n","f","z","LONG","deca","hecto","kilo","mega","giga","tera","peta","exa","zetta","yotta","deci","centi","milli","micro","nano","pico","femto","atto","zepto","yocto","SQUARED","CUBIC","BINARY_SHORT","pow","Ki","Mi","Gi","Ti","Pi","Ei","Zi","Yi","BINARY_LONG","kibi","mebi","gibi","tebi","pebi","exi","zebi","yobi","LENGTH","MASS","TIME","CURRENT","TEMPERATURE","LUMINOUS_INTENSITY","AMOUNT_OF_SUBSTANCE","FORCE","SURFACE","VOLUME","BIT","BASE_UNIT_NONE","meter","inch","foot","yard","mile","link","rod","chain","angstrom","in","ft","yd","mi","li","rd","ch","mil","m2","sqin","sqft","sqyd","sqmi","sqrd","sqch","sqmil","m3","L","l","litre","cuin","cuft","cuyd","teaspoon","tablespoon","drop","gtt","minim","fluiddram","fluidounce","gill","cc","cup","pint","quart","gallon","beerbarrel","oilbarrel","hogshead","fldr","floz","gi","cp","pt","qt","gal","bbl","obl","g","gram","ton","tonne","grain","dram","ounce","poundmass","hundredweight","stick","gr","dr","oz","lbm","cwt","s","sec","minute","hour","day","rad","deg","grad","cycle","A","ampere","K","degC","degF","degR","kelvin","celsius","fahrenheit","rankine","mol","mole","cd","candela","N","newton","lbf","poundforce","bits","B","bytes","PLURALS","meters","inches","feet","yards","miles","links","rods","chains","angstroms","litres","teaspoons","tablespoons","minims","fluiddrams","fluidounces","gills","cups","pints","quarts","gallons","beerbarrels","oilbarrels","hogsheads","gtts","grams","tons","tonnes","grains","drams","ounces","poundmasses","hundredweights","sticks","seconds","minutes","hours","days","radians","degrees","gradients","cycles","amperes","moles","plural","lt","liter","liters","lb","lbs","doc","isHelp","desc","category","description","syntax","examples","parser","expr","eval","seealso","toJSON","entries","_reduce","mat","ret","val","tran","_switch","j","I","J","tmp","argsToArray","isCollection","deepMap","deepMap2","array1","array2","reduce","deepForEach","extra_nodes","nodes","parseStart","nesting_level","conditional_level","nextPreview","getToken","token_type","TOKENTYPE","NULL","token","DELIMITER","c2","DELIMITERS","isAlpha","NAMED_DELIMITERS","SYMBOL","UNKNOWN","createSyntaxError","NUMBER","getTokenSkipNewline","openParams","closeParams","parseBlock","createError","block","visible","ConstantNode","parseFunctionAssignment","BlockNode","add","parseAssignment","valid","parseConditional","SymbolNode","AssignmentNode","IndexNode","UpdateNode","FunctionNode","symbol","params","param","FunctionAssignmentNode","parseRelational","prev","condition","trueExpr","falseExpr","ConditionalNode","operators","fn","parseConversion","==","!=","<",">","<=",">=","OperatorNode","parseRange","parseAddSubtract","RangeNode","parseMultiplyDivide","+","-","parseUnary","*",".*","/","./","%","mod","parsePow","parseLeftHandOperators","parseCustomNodes","!","'","handler","parseSymbol","parseFunctions","parseIndex","parseString","tPrev","parseMatrix","rows","cols","parseRow","ArrayNode","parseParentheses","parseEnd","col","message",",","(",")","[","]","\"",";","^",".^","=",":","?","scope","_parse","compile","remove","clear","Node","cube","divide","dotDivide","dotMultiply","dotPow","fix","floor","gcd","lcm","log10","multiply","norm","square","subtract","unaryMinus","unaryPlus","xgcd","compare","larger","largerEq","smaller","smallerEq","unequal","conj","bignumber","complex","help","det","diag","eye","flatten","inv","ones","squeeze","transpose","zeros","combinations","factorial","permutations","pickRandom","random","randomInt","mean","median","prod","std","sum","acos","asin","atan","cosh","cot","coth","csc","csch","sech","sinh","tan","tanh","sort","errorTransform","transform","concat","lastIndex","arrayIn","jj","asMatrix","isBoolean","createProxy","slice","done","search","_divideComplex","den","edivide","emultiply","epow","isNegative","_bigGcd","isInt","zero","isZero","neg","_bigLcm","t","_mod","_multiplyMatrixMatrix","result","_multiplyVectorMatrix","_multiplyMatrixVector","_multiplyVectorVector","dot","_multiplyComplex","sizeX","sizeY","RangeError","POSITIVE_INFINITY","v","NEGATIVE_INFINITY","equal","rs","powComplex","temp1","temp2","px","roundNumber","toDecimalPlaces","cmp","unary","_xgcd","q","lastx","lasty","_bigXgcd","_deepEqual","eq","gt","gte","largereq","lte","smallereq","bool","lcase","toLowerCase","select","_concat","concatDim","prevDim","matrices","shift","_det","compute_mu","mu","fa","vector","iMax","asArray","kSuper","kSub","asBigNumber","one","minimum","flat","_inv","temp","Ac","Bc","Ar","Br","_range","_rangeInc","_bigRange","_bigRangeInc","includeEnd","pop","_resizeString","defaultChar","_getSubset","_getSubstring","strLen","substr","_setSubset","_setSubstring","chars","transposedRow","transposed","isPositiveInteger","distribution","arity","dividedBy","_getSmaller","_min","_getLarger","_max","_nmean","_mean","_median","left","right","middle","_prod","variance","_sum","_var","normalization","DEFAULT_NORMALIZATION","temp3","temp4","ep","en","cim","sim","_import","override","wrap","isSupportedType","math_import","opts","_module","_mapArray","print","template","original","keys","_compare","_forEachArray","isBigNumber","toExpNeg","toExpPos","toSignificantDigits","_validate","dimNext","_resize","oldLen","newLen","minLen","_squeeze","_unsqueeze","validate","_defaultValue","unshift","count","stack","actual","expected","relation","splice","__WEBPACK_AMD_DEFINE_RESULT__","global","coefficientToString","LOGBASE","checkRoundingDigits","rm","repeating","ci","mathpow","checkRM","method","Decimal","outOfRange","parseInt","ifExceptionsThrow","checkArg","MAX_DIGITS","pr","denom","guard","sd","rep","external","rnd","getCoeffLength","more","intPow","c0","x1","xc","xci","mathfloor","BASE","convertBase","DecimalConstructor","crypto","NUMERALS","EXP_LIMIT","INT_POW_LIMIT","yc","base10","inf","sd10","xLTy","reverse","half","indexOf","dp","pos","sep1","sep2","arr","maxD","d0","d2","frac","n0","n1","d1","yN","strL","xe","toBaseOut","baseIn","baseOut","arrL","multiplyInteger","carry","aL","bL","logbase","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","maxOrMin","ltgt","rand","Uint32Array","copy","DecimalFactory","parseDecimal","isValid","trim","isNum","orig","test","every","isNode","_compile","defs","find","filter","results","match","toTex","childNode","keywords","latex","brace","addBraces","toSymbol","js","testCondition","valueType","SUPPORTED_TYPES","boolean","null","variable","compileSubset","properties","someUseEnd","rangesUseEnd","useEnd","objectName","op","lhs","rhs","mop","toOperator","lp","rp","lhb","rhb","lop","rop","toUnit","isRaw","rawArgs","paramsName","toParams","undef","_validateScope","_transform","transformed","code","defsCode","factoryCode","Function","formatArray","distributions","randFunctions","arg1","arg2","arg3","_randomDataForMatrix","_random","_randomInt","possibles","randFunc","uniform","normal","u1","u2","picked","webpackContext","req","webpackContextResolve","./clone","./clone.js","./forEach","./forEach.js","./format","./format.js","./import","./import.js","./map","./map.js","./print","./print.js","./sort","./sort.js","./typeof","./typeof.js","resolve","mapSymbols","symbols","latexIs","latexIsFn","latexToFn","greek","Alpha","alpha","Beta","beta","Gamma","gamma","Delta","delta","Epsilon","varepsilon","Zeta","zeta","Eta","eta","Theta","theta","vartheta","Iota","iota","Kappa","kappa","varkappa","Lambda","lambda","Mu","Nu","nu","Xi","Omicron","omicron","varpi","Rho","rho","varrho","Sigma","sigma","varsigma","Tau","Upsilon","upsilon","Phi","varphi","Chi","chi","Psi","psi","Omega","omega","dots","ldots","cdots","vdots","ddots","idots","logic","true","false","Inf","infinity","oo","lim","functions","arccos","ker","limsup","arcsin","lg","Pr","sup","hom","var","curlyFunctions","int","Int","integrate","eigenvalues","liminf","units","isSymbol","isFunction","toFunction","isCurlyFunction","toCurlyFunction","isOperator","_toUnit","notSpaced","braces","that","func","texParams","showFunc","suffix"],"mappings":"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AoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAI9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/BD,EAAKgC,OAAS,WACZ,KAAM,IAAIjC,OAAM,yEAIlBZ,EAAoB,GAAGa,EAAMC,GAG7Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9BD,EAAKiC,YACLjC,EAAKiC,SAASC,SAAW/C,EAAoB,IAAIa,EAAMC,GAGvDD,EAAKH,OAAOI,GACZD,EAAKH,OAAOA,GAGLG,EAxUT,GAAIO,GAASpB,EAAoB,GAC7B8B,EAAS9B,EAAoB,GAAG8B,OA2UhCjB,EAAOJ,GAEW,oBAAXuC,UACTA,OAAOC,OAASpC,GAIlBlB,EAAOD,QAAUmB,GAMZ,SAASlB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAS/B,QAASwC,KACP,MAAO,IAAI3B,GAAU,GAAG4B,MAO1B,QAASC,KACP,MAAO,IAAI7B,GAAU,GAAG8B,KAAK,GAAI9B,GAAU,GAAG+B,QAAQC,IAAI,GAS5D,QAASC,GAAOC,GAOd,IAAK,GANDC,GAAID,EACJE,EAAQC,IACRC,EAAKJ,EAAEK,MAAML,GACbM,EAAMN,EACNO,EAAO,GAEFC,EAAI,GAAIP,EAAEQ,OAAOP,GAAQM,GAAK,EACrCF,EAAMA,EAAID,MAAMD,GAEhBF,EAAQD,EACRA,EAAKM,EAAO,EAAKN,EAAEL,KAAKU,EAAIR,IAAIU,IAAMP,EAAES,MAAMJ,EAAIR,IAAIU,IACtDD,GAAQA,CAGV,OAAON,GAUT,QAASU,KAEP,GAAIC,GAAM9C,EAAUI,aAAaV,UAAWM,EAAUN,UAAY,IAC9DqD,EAAQ,GAAID,GAAI,GAAGP,MAAMN,EAAO,GAAIa,GAAI,GAAGd,IAAI,KAC9CY,MAAMX,EAAO,GAAIa,GAAI,GAAGd,IAAI,MAGjC,OAAO,IAAIhC,GAAU,GAAGuC,MAAMQ,GAOhC,QAASC,KAGPhD,EAAUb,QAAQO,UAAWP,EAAOO,UAAY,GAEhD,IAAIuD,GAAKJ,GAIT,OAFA7C,GAAUb,QAAQO,UAAWP,EAAOO,YAE7B,GAAIM,GAAU,GAAGuC,MAAMU,GA1EhC,GACIxC,IADYhC,EAAoB,KACtBA,EAAoB,IAC9BuB,EAAYV,EAAKS,KAAKC,UA2EtBkD,EAAwB,cAAlB/D,EAAOM,MAGjBH,GAAK2D,GAAcC,EAAML,IAAWM,KAAKC,GACzC9D,EAAK+D,IAAcH,EAAMF,IAAqB,EAAVG,KAAKC,GACzC9D,EAAKgE,EAAcJ,EAAMvB,IAAWwB,KAAKI,EACzCjE,EAAKkE,IAAcN,EAAMrB,IAAW,kBAEpCvC,EAAKmE,EAAc,GAAIhD,GAAQ,EAAG,GAElCnB,EAAe,SAAIoE,IACnBpE,EAAU,IAAS+C,IACnB/C,EAAK,SAAc,EACnBA,EAAK,UAAc,EACnBA,EAAK,QAAc,KACnBA,EAAoB,cAAIb,EAAoB,KAAKkF,cAGjDrE,EAAKiE,EAAcjE,EAAKgE,EACxBhE,EAAKsE,IAAcV,EAAM,GAAIlD,GAAU,GAAG6D,KAA8BV,KAAKS,IAC7EtE,EAAKwE,KAAcZ,EAAM,GAAIlD,GAAU,IAAI6D,KAA6BV,KAAKW,KAC7ExE,EAAKyE,MAAcb,EAAM,GAAIlD,GAAU,GAAGgC,IAAI,GAAIhC,GAAU,GAAG6D,MAASV,KAAKY,MAC7EzE,EAAK0E,OAAcd,EAAM,GAAIlD,GAAU,GAAGgC,IAAI,GAAIhC,GAAU,IAAI6D,MAAQV,KAAKa,OAC7E1E,EAAK8D,GAAc9D,EAAK2D,GACxB3D,EAAK2E,QAAcf,EAAM,GAAIlD,GAAU,IAAK+B,OAA4BoB,KAAKc,QAC7E3E,EAAK4E,MAAchB,EAAM,GAAIlD,GAAU,GAAG+B,OAA8BoB,KAAKe,MAG7E5E,EAAK6E,QAAU1F,EAAoB,OAMhC,SAASL,EAAQD,GAEtB,YAaAA,GAAQgC,MAAQ,QAASA,GAAM+B,GAC7B,GAAInC,SAAcmC,EAGlB,IAAa,WAATnC,GAA8B,WAATA,GAA8B,YAATA,GACpC,OAANmC,GAAoBkC,SAANlC,EAChB,MAAOA,EAIT,IAAuB,kBAAZA,GAAE/B,MACX,MAAO+B,GAAE/B,OAIX,IAAIkE,MAAMC,QAAQpC,GAChB,MAAOA,GAAEqC,IAAI,SAAUC,GACrB,MAAOrE,GAAMqE,IAIjB,IAAItC,YAAauC,QAAS,MAAO,IAAIA,QAAOvC,EAAEwC,UAC9C,IAAIxC,YAAayC,QAAS,MAAO,IAAIA,QAAOzC,EAAEwC,UAC9C,IAAIxC,YAAa0C,SAAS,MAAO,IAAIA,SAAQ1C,EAAEwC,UAC/C,IAAIxC,YAAa2C,MAAS,MAAO,IAAIA,MAAK3C,EAAEwC,UAC5C,IAAIxC,YAAa4C,QAAS,KAAM,IAAIC,WAAU,gBAAkB7C,EAGhE,IAAInD,KACJ,KAAK,GAAIiG,KAAO9C,GACVA,EAAE+C,eAAeD,KACnBjG,EAAEiG,GAAO7E,EAAM+B,EAAE8C,IAGrB,OAAOjG,IASTZ,EAAQ+G,OAAS,SAASC,EAAGC,GAC3B,IAAK,GAAIC,KAAQD,GACXA,EAAEH,eAAeI,KACnBF,EAAEE,GAAQD,EAAEC,GAGhB,OAAOF,IASThH,EAAQ2B,WAAa,QAASA,GAAYqF,EAAGC,GAE3C,GAAIf,MAAMC,QAAQc,GAChB,KAAM,IAAIL,WAAU,yCAGtB,KAAK,GAAIM,KAAQD,GACf,GAAIA,EAAEH,eAAeI,GACnB,GAAID,EAAEC,IAASD,EAAEC,GAAMjF,cAAgBhB,OACrBgF,SAAZe,EAAEE,KACJF,EAAEE,OAEAF,EAAEE,GAAMjF,cAAgBhB,OAC1BU,EAAWqF,EAAEE,GAAOD,EAAEC,IAGtBF,EAAEE,GAAQD,EAAEC,OAET,CAAA,GAAIhB,MAAMC,QAAQc,EAAEC,IACzB,KAAM,IAAIN,WAAU,yCAEpBI,GAAEE,GAAQD,EAAEC,GAIlB,MAAOF,IASThH,EAAQmH,UAAY,SAAoBH,EAAGC,GACzC,GAAIC,GAAM5B,EAAG8B,CACb,IAAIlB,MAAMC,QAAQa,GAAI,CACpB,IAAKd,MAAMC,QAAQc,GACjB,OAAO,CAGT,IAAID,EAAEK,QAAUJ,EAAEI,OAChB,OAAO,CAGT,KAAK/B,EAAI,EAAG8B,EAAMJ,EAAEK,OAAYD,EAAJ9B,EAASA,IACnC,IAAKtF,EAAQmH,UAAUH,EAAE1B,GAAI2B,EAAE3B,IAC7B,OAAO,CAGX,QAAO,EAEJ,GAAI0B,YAAa/F,QAAQ,CAC5B,GAAIiF,MAAMC,QAAQc,MAAQA,YAAahG,SACrC,OAAO,CAGT,KAAKiG,IAAQF,GAEX,IAAKhH,EAAQmH,UAAUH,EAAEE,GAAOD,EAAEC,IAChC,OAAO,CAGX,KAAKA,IAAQD,GAEX,IAAKjH,EAAQmH,UAAUH,EAAEE,GAAOD,EAAEC,IAChC,OAAO,CAGX,QAAO,EAGP,aAAeF,UAAaC,IAAOD,GAAKC,IAOvC,SAAShH,EAAQD,GAEtB,YAOAA,GAAQsH,SAAW,SAASjB,GAC1B,MAAQA,aAAiBC,SAA4B,gBAATD,IAQ9CrG,EAAQuH,UAAY,SAASlB,GAC3B,MAAQA,IAASrB,KAAKwC,MAAMnB,IAS9BrG,EAAQsE,KAAO,SAASP,GACtB,MAAIA,GAAI,EACC,EAEI,EAAJA,EACA,GAGA,GAoEX/D,EAAQyH,OAAS,SAASpB,EAAO5E,GAC/B,GAAuB,kBAAZA,GAET,MAAOA,GAAQ4E,EAIjB,IAAcd,MAAVc,EACF,MAAO,UAEJ,IAAIA,KAAWd,IAClB,MAAO,WAEJ,IAAImC,MAAMrB,GACb,MAAO,KAIT,IAAIsB,GAAW,OACXpG,EAAY0E,MAkBhB,QAhBIxE,IAEEA,EAAQkG,WACVA,EAAWlG,EAAQkG,UAIjB3H,EAAQsH,SAAS7F,GACnBF,EAAYE,EAELA,EAAQF,YACfA,EAAYE,EAAQF,YAKhBoG,GACN,IAAK,QACH,MAAO3H,GAAQ4H,QAAQvB,EAAO9E,EAEhC,KAAK,cACH,MAAOvB,GAAQ6H,cAAcxB,EAAO9E,EAEtC,KAAK,OAGH,GAAIuG,GAAQ,KACRC,EAAQ,GAWZ,IAVItG,GAAWA,EAAQuG,cACa/B,SAA9BxE,EAAQuG,YAAYF,QACtBA,EAAQrG,EAAQuG,YAAYF,OAEI7B,SAA9BxE,EAAQuG,YAAYD,QACtBA,EAAQtG,EAAQuG,YAAYD,QAKlB,IAAV1B,EAAa,MAAO,GAGxB,IAAI4B,GACAC,EAAMlD,KAAKkD,IAAI7B,EACnB,IAAI6B,GAAOJ,GAAeC,EAANG,EAAa,CAG/B,GAAIC,GAAW5G,EACX8E,EAAM+B,YAAYpD,KAAKqD,IAAI9G,EAAW,KACtC8E,EAAM+B,aACVH,GAAMK,WAAWH,GAAY,OAI7BF,GAAMjI,EAAQ6H,cAAcxB,EAAO9E,EAIrC,OAAO0G,GAAIM,QAAQ,sBAAuB,WACxC,GAAInG,GAASoG,UAAU,GACnBrD,EAAIqD,UAAU,EAClB,OAAmB,MAAXpG,EAAkBA,EAAS+C,EAAIA,GAG3C,SACE,KAAM,IAAIjE,OAAM,qBAAuByG,EAAW,kDAaxD3H,EAAQ6H,cAAgB,SAASxB,EAAO9E,GACtC,MAAkB0E,UAAd1E,EACK8E,EAAMwB,cAAc7C,KAAKqD,IAAI9G,EAAY,EAAG,KAG5C8E,EAAMwB,iBAUjB7H,EAAQ4H,QAAU,SAASvB,EAAO9E,GAChC,MAAO8E,GAAMuB,QAAQ5C,KAAKqD,IAAI9G,EAAW,MAc3CvB,EAAQoC,OAAS,SAASiE,GACxB,MAAOA,GACFwB,gBACAU,QAAQ,OAAQ,IAChBA,QAAS,aAAc,IACvBlB,QAMPrH,EAAQyI,YAAcnC,OAAOoC,SAAW,sBAWxC1I,EAAQ2I,YAAc,SAAS5E,EAAGC,EAAGxC,GAEnC,GAAe,MAAXA,EAAiB,MAAOuC,IAAKC,CAGjC,IAAID,GAAKC,EAAG,OAAO,CAGnB,IAAI0D,MAAM3D,IAAM2D,MAAM1D,GAAI,OAAO,CAGjC,IAAG4E,SAAS7E,IAAM6E,SAAS5E,GAAI,CAE7B,GAAI6E,GAAO7D,KAAKkD,IAAInE,EAAIC,EACxB,OAAI6E,GAAO7I,EAAQyI,aACV,EAIAI,GAAQ7D,KAAK8D,IAAI9D,KAAKkD,IAAInE,GAAIiB,KAAKkD,IAAIlE,IAAMxC,EAKxD,OAAO,IAMJ,SAASvB,EAAQD,EAASM,GAE/B,YAEAN,GAAQ+I,eAAiBzI,EAAoB,KAC7CN,EAAQgJ,eAAiB1I,EAAoB,KAC7CN,EAAQiJ,WAAa3I,EAAoB,KACzCN,EAAQkJ,qBAAuB5I,EAAoB,MAO9C,SAASL,EAAQD,EAASM,GAE/B,YA6BA,SAASgC,GAAQ6G,EAAIC,GACnB,KAAMhJ,eAAgBkC,IACpB,KAAM,IAAI+G,aAAY,mDAGxB,QAAQb,UAAUnB,QAChB,IAAK,GACHjH,KAAK+I,GAAK,EACV/I,KAAKgJ,GAAK,CACV,MAEF,KAAK,GACH,GAAIE,GAAMd,UAAU,EACpB,IAAmB,gBAARc,GAAkB,CAC3B,GAAG,MAAQA,IAAO,MAAQA,GAAK,CAC7B,GAAIC,GAAY,GAAIjH,GAAQgH,EAAIH,GAAIG,EAAIF,GACxChJ,MAAK+I,GAAKI,EAAUJ,GACpB/I,KAAKgJ,GAAKG,EAAUH,EACpB,OACK,GAAI,KAAOE,IAAO,OAASA,GAAK,CACrC,GAAIC,GAAYjH,EAAQkH,UAAUF,EAAIG,EAAGH,EAAIjE,IAC7CjF,MAAK+I,GAAKI,EAAUJ,GACpB/I,KAAKgJ,GAAKG,EAAUH,EACpB,QAGJ,KAAM,IAAIC,aAAY,8DAExB,KAAK,GACH,IAAK/B,EAAS6B,KAAQ7B,EAAS8B,GAC7B,KAAM,IAAIxC,WAAU,8CAEtBxG,MAAK+I,GAAKA,EACV/I,KAAKgJ,GAAKA,CACV,MAEF,SACE,KAAM,IAAIC,aAAY,gEAgB5B,QAASK,KACP,KAAY,KAAL7I,GAAiB,KAALA,GACjB8I,IAIJ,QAASC,GAAY/I,GACnB,MAASA,IAAK,KAAY,KAALA,GAAkB,KAALA,EAGpC,QAASgJ,GAAShJ,GAChB,MAASA,IAAK,KAAY,KAALA,EAGvB,QAAS8I,KACPG,IACAjJ,EAAIkJ,EAAKC,OAAOF,GAGlB,QAASG,GAAOC,GACdJ,EAAQI,EACRrJ,EAAIkJ,EAAKC,OAAOF,GAGlB,QAASK,KACP,GACID,GADA5I,EAAS,EAYb,IAVA4I,EAAWJ,EAEF,KAALjJ,EACF8I,IAEY,KAAL9I,IACPS,GAAUT,EACV8I,MAGGC,EAAW/I,GAGd,MADAoJ,GAAOC,GACA,IAIT,IAAS,KAALrJ,GAGF,GAFAS,GAAUT,EACV8I,KACKE,EAAQhJ,GAGX,MADAoJ,GAAOC,GACA,SAGN,CACH,KAAOL,EAAQhJ,IACbS,GAAUT,EACV8I,GAEO,MAAL9I,IACFS,GAAUT,EACV8I,KAGJ,KAAOE,EAAQhJ,IACbS,GAAUT,EACV8I,GAIF,IAAS,KAAL9I,GAAiB,KAALA,EAAU,CAUxB,GATAS,GAAUT,EACV8I,KAES,KAAL9I,GAAiB,KAALA,KACdS,GAAUT,EACV8I,MAIGE,EAAQhJ,GAGX,MADAoJ,GAAOC,GACA,IAGT,MAAOL,EAAQhJ,IACbS,GAAUT,EACV8I,IAIJ,MAAOrI,GAGT,QAAS8I,KAEP,GAAIC,GAAQN,EAAKC,OAAOF,EAAQ,EAChC,IAAS,KAALjJ,GAAiB,KAALA,EAEd,MADA8I,KACO,GAEJ,MAAU,KAAL9I,GAAiB,KAALA,GAAuB,KAATwJ,GAAyB,KAATA,GAAe,CACjE,GAAI/I,GAAe,KAALT,EAAY,IAAM,IAGhC,OAFA8I,KACAA,IACOrI,EAGT,MAAO,MA5LT,GAAIgJ,GAAOhK,EAAoB,KAC3BoC,EAAOpC,EAAoB,IAC3BgB,EAASgJ,EAAKhJ,OAEdgG,EAAWgD,EAAKhJ,OAAOgG,SACvBiD,EAAS7H,EAAK6H,OACdC,EAAWF,EAAKG,OAAOD,QAmE3BlI,GAAQoI,UAAY,SAAUrE,GAC5B,MAAQA,aAAiB/D,GAI3B,IAAIyH,GAAMD,EAAOjJ,CAwHjByB,GAAQU,MAAQ,SAAUiF,GAKxB,GAJA8B,EAAO9B,EACP6B,EAAQ,GACRjJ,EAAI,IAEC2J,EAAST,GACZ,MAAO,KAGTJ,KACAD,GACA,IAAIiB,GAAQR,GACZ,IAAIQ,EAAO,CACT,GAAS,KAAL9J,GAAiB,KAALA,EAId,MAFA8I,KACAD,IACI7I,EAEK,KAGF,GAAIyB,GAAQ,EAAGgE,OAAOqE,GAI7BjB,IACA,IAAIkB,GAAY/J,CAChB,IAAiB,KAAb+J,GAAiC,KAAbA,EAGtB,MADAlB,KACI7I,EAEK,KAGF,GAAIyB,GAAQgE,OAAOqE,GAAQ,EAIlChB,KACAD,GACA,IAAImB,GAASV,GACb,IAAIU,EAAQ,CACV,GAAS,KAALhK,GAAiB,KAALA,EAEd,MAAO,KAET8I,SAIA,IADAkB,EAAST,KACJS,EAEH,MAAO,KAeX,OAXiB,KAAbD,IAEAC,EADe,KAAbA,EAAO,GACC,IAAMA,EAAOC,UAAU,GAGxB,IAAMD,GAInBlB,IACAD,IACI7I,EAEK,KAGF,GAAIyB,GAAQgE,OAAOqE,GAAQrE,OAAOuE,IAO7C,OADAF,EAAQP,MAENV,IACI7I,EAEK,KAGF,GAAIyB,GAAQ,EAAGgE,OAAOqE,KAI1B,MAcTrI,EAAQkH,UAAY,WAClB,OAAQhB,UAAUnB,QAChB,IAAK,GACH,GAAIiC,GAAMd,UAAU,EACpB,IAAkB,gBAARc,GACR,MAAOhH,GAAQkH,UAAUF,EAAIG,EAAGH,EAAIjE,IAEtC,MAAM,IAAIuB,WAAU,iDAEtB,KAAK,GACH,GAAI6C,GAAIjB,UAAU,GAChBnD,EAAMmD,UAAU,EAClB,IAAGlB,EAASmC,GAAI,CAMd,GALIc,EAAOlF,IAAQA,EAAI0F,QAAQrI,EAAKsI,WAAWC,SAE7C5F,EAAMA,EAAI6F,SAAS,QAGlB5D,EAASjC,GACV,MAAO,IAAI/C,GAAQmH,EAAIzE,KAAKmG,IAAI9F,GAAMoE,EAAIzE,KAAKoG,IAAI/F,GAGrD,MAAM,IAAIuB,WAAU,0CAEpB,KAAM,IAAIA,WAAU,4BAGxB,SACE,KAAM,IAAIyC,aAAY,qDAS5B/G,EAAQJ,UAAUmJ,QAAU,WAC1B,OACE5B,EAAGzE,KAAKpB,KAAKxD,KAAK+I,GAAK/I,KAAK+I,GAAK/I,KAAKgJ,GAAKhJ,KAAKgJ,IAChD/D,IAAKL,KAAKsG,MAAMlL,KAAKgJ,GAAIhJ,KAAK+I,MAQlC7G,EAAQJ,UAAUF,MAAQ,WACxB,MAAO,IAAIM,GAAQlC,KAAK+I,GAAI/I,KAAKgJ,KAUnC9G,EAAQJ,UAAUsC,OAAS,SAAU+G,GACnC,MAAQnL,MAAK+I,KAAOoC,EAAMpC,IAAQ/I,KAAKgJ,KAAOmC,EAAMnC,IAYtD9G,EAAQJ,UAAUuF,OAAS,SAAUhG,GACnC,GAAIwG,GAAM,GACNuD,EAAQlK,EAAOmG,OAAOrH,KAAK+I,GAAI1H,GAC/BgK,EAAQnK,EAAOmG,OAAOrH,KAAKgJ,GAAI3H,EAsCnC,OAlCEwG,GAFa,GAAX7H,KAAKgJ,GAEDoC,EAEY,GAAXpL,KAAK+I,GAEG,GAAX/I,KAAKgJ,GACD,IAEY,IAAXhJ,KAAKgJ,GACN,KAGAqC,EAAQ,IAKZrL,KAAKgJ,GAAK,EACG,GAAXhJ,KAAKgJ,GACDoC,EAAQ,OAGRA,EAAQ,MAAQC,EAAQ,IAIjB,IAAXrL,KAAKgJ,GACDoC,EAAQ,OAGRA,EAAQ,MAAQC,EAAMX,UAAU,GAAK,KAYnDxI,EAAQJ,UAAUwJ,SAAW,WAC3B,MAAOtL,MAAKqH,UAOdnF,EAAQJ,UAAUqE,QAAUjE,EAAQJ,UAAUwJ,SAG9CzL,EAAOD,QAAUsC,GAKZ,SAASrC,EAAQD,EAASM,GAE/B,YAoCA,SAASiC,GAAMoJ,EAAOC,EAAKC,GACzB,KAAMzL,eAAgBmC,IACpB,KAAM,IAAI8G,aAAY,mDAGxB,IAAa,MAATsC,IAAkBrK,EAAOgG,SAASqE,GACpC,KAAM,IAAI/E,WAAU,mCAEtB,IAAW,MAAPgF,IAAgBtK,EAAOgG,SAASsE,GAClC,KAAM,IAAIhF,WAAU,iCAEtB,IAAY,MAARiF,IAAiBvK,EAAOgG,SAASuE,GACnC,KAAM,IAAIjF,WAAU,kCAGtBxG,MAAKuL,MAAkB,MAATA,EAAiBrD,WAAWqD,GAAS,EACnDvL,KAAKwL,IAAgB,MAAPA,EAAetD,WAAWsD,GAAO,EAC/CxL,KAAKyL,KAAiB,MAARA,EAAgBvD,WAAWuD,GAAQ,EAnDnD,CAAA,GAAIvB,GAAOhK,EAAoB,KAE3BgB,EAASgJ,EAAKhJ,OACdmJ,EAASH,EAAKG,MACNH,GAAKwB,MA0DjBvJ,EAAMS,MAAQ,SAAUiF,GACtB,IAAKwC,EAAOD,SAASvC,GACnB,MAAO,KAGT,IAAI8D,GAAO9D,EAAI+D,MAAM,KACjBC,EAAOF,EAAK3F,IAAI,SAAUkD,GAC5B,MAAOhB,YAAWgB,KAGhB4C,EAAUD,EAAKE,KAAK,SAAU9H,GAChC,MAAOqD,OAAMrD,IAEf,IAAG6H,EACD,MAAO,KAGT,QAAQD,EAAK5E,QACX,IAAK,GAAG,MAAO,IAAI9E,GAAM0J,EAAK,GAAIA,EAAK,GACvC,KAAK,GAAG,MAAO,IAAI1J,GAAM0J,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAChD,SAAS,MAAO,QAQpB1J,EAAML,UAAUF,MAAQ,WACtB,MAAO,IAAIO,GAAMnC,KAAKuL,MAAOvL,KAAKwL,IAAKxL,KAAKyL,OAQ9CtJ,EAAM6J,QAAU,SAAU1K,GACxB,MAAQA,aAAkBa,IAQ5BA,EAAML,UAAUmK,KAAO,WACrB,GAAIjF,GAAM,EACNuE,EAAQvL,KAAKuL,MACbE,EAAOzL,KAAKyL,KACZD,EAAMxL,KAAKwL,IACX/C,EAAO+C,EAAMD,CAYjB,OAVIrK,GAAOgD,KAAKuH,IAASvK,EAAOgD,KAAKuE,GACnCzB,EAAMpC,KAAKsH,KAAK,EAAST,GAEV,GAARhD,IACPzB,EAAM,GAGJM,MAAMN,KACRA,EAAM,IAEAA,IAOV7E,EAAML,UAAUmG,IAAM,WACpB,GAAIgE,GAAOjM,KAAKiM,OAAO,EAEvB,OAAIA,GAAO,EACLjM,KAAKyL,KAAO,EAEPzL,KAAKuL,MAILvL,KAAKuL,OAASU,EAAO,GAAKjM,KAAKyL,KAIjC5F,QAQX1D,EAAML,UAAU4G,IAAM,WACpB,GAAIuD,GAAOjM,KAAKiM,OAAO,EAEvB,OAAIA,GAAO,EACLjM,KAAKyL,KAAO,EAEPzL,KAAKuL,OAASU,EAAO,GAAKjM,KAAKyL,KAI/BzL,KAAKuL,MAIP1F,QAWX1D,EAAML,UAAUqK,QAAU,SAAUC,GAClC,GAAIzI,GAAI3D,KAAKuL,MACTE,EAAOzL,KAAKyL,KACZD,EAAMxL,KAAKwL,IACXtG,EAAI,CAER,IAAIuG,EAAO,EACT,KAAWD,EAAJ7H,GACLyI,EAASzI,EAAGuB,EAAGlF,MACf2D,GAAK8H,EACLvG,QAGC,IAAW,EAAPuG,EACP,KAAO9H,EAAI6H,GACTY,EAASzI,EAAGuB,EAAGlF,MACf2D,GAAK8H,EACLvG,KAaN/C,EAAML,UAAUkE,IAAM,SAAUoG,GAC9B,GAAIV,KAIJ,OAHA1L,MAAKmM,QAAQ,SAAUlG,EAAOyD,EAAO2C,GACnCX,EAAMhC,GAAS0C,EAASnG,EAAOyD,EAAO2C,KAEjCX,GAOTvJ,EAAML,UAAUwK,QAAU,WACxB,GAAIZ,KAIJ,OAHA1L,MAAKmM,QAAQ,SAAUlG,EAAOyD,GAC5BgC,EAAMhC,GAASzD,IAEVyF,GAOTvJ,EAAML,UAAUqE,QAAU,WAExB,MAAOnG,MAAKsM,WAYdnK,EAAML,UAAUuF,OAAS,SAAUhG,GACjC,GAAIwG,GAAM3G,EAAOmG,OAAOrH,KAAKuL,MAAOlK,EAMpC,OAJiB,IAAbrB,KAAKyL,OACP5D,GAAO,IAAM3G,EAAOmG,OAAOrH,KAAKyL,KAAMpK,IAExCwG,GAAO,IAAM3G,EAAOmG,OAAOrH,KAAKwL,IAAKnK,IAQvCc,EAAML,UAAUwJ,SAAW,WACzB,MAAOtL,MAAKqH,UAIdxH,EAAOD,QAAUuC,GAKZ,SAAStC,EAAQD,EAASM,GAE/B,YA+BA,SAASkC,KACP,KAAMpC,eAAgBoC,IACpB,KAAM,IAAI6G,aAAY,mDAGxBjJ,MAAKuM,WACLvM,KAAKwM,WAAY,CAEjB,KAAK,GAAItH,GAAI,EAAGuH,EAAKrE,UAAUnB,OAAYwF,EAAJvH,EAAQA,IAAK,CAClD,GAAIgE,GAAMd,UAAUlD,EAEpB,IAAIgE,YAAe/G,GACjBnC,KAAKuM,QAAQG,KAAKxD,GAClBlJ,KAAKwM,WAAY,MAEd,IAAIzG,EAAQmD,GACflJ,KAAKuM,QAAQG,KAAKC,EAAazD,IAC/BlJ,KAAKwM,WAAY,MAEd,IAAItF,EAASgC,GAChBlJ,KAAKuM,QAAQG,KAAKC,GAAczD,EAAKA,EAAM,SAGxC,CACH,GAAI0D,GAAY1D,EAAI/C,SACpB,KAAIJ,EAAQ6G,GAKV,KAAM,IAAIpG,WAAU,4CAJpBxG,MAAKuM,QAAQG,KAAKC,EAAaC,IAC/B5M,KAAKwM,WAAY,IAgBzB,QAASG,GAAazD,GAKpB,IAAK,GADDjF,GAAMiF,EAAIjC,OACL/B,EAAI,EAAOjB,EAAJiB,EAASA,IACvB,IAAKgC,EAASgC,EAAIhE,MAAQiC,EAAU+B,EAAIhE,IACtC,KAAM,IAAIsB,WAAU,2CAIxB,QAAQ0C,EAAIjC,QACV,IAAK,GACH,MAAO,IAAI9E,GAAM+G,EAAI,GAAIA,EAAI,GAC/B,KAAK,GACH,MAAO,IAAI/G,GAAM+G,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACvC,SAEE,KAAM,IAAID,aAAY,yDA1F5B,GAAIiB,GAAOhK,EAAoB,KAE3BiC,EAAQjC,EAAoB,GAE5BgB,EAASgJ,EAAKhJ,OAEdgG,EAAWhG,EAAOgG,SAClBC,EAAYjG,EAAOiG,UACnBpB,EAAUD,MAAMC,OA0FpB3D,GAAMN,UAAUF,MAAQ,WACtB,GAAI8H,GAAQ,GAAItH,EAGhB,OAFAsH,GAAM6C,QAAUrC,EAAK5I,OAAOM,MAAM5B,KAAKuM,SACvC7C,EAAM8C,UAAYxM,KAAKwM,UAChB9C,GAQTtH,EAAMyK,QAAU,SAAUvL,GACxB,MAAQA,aAAkBc,IAS5BA,EAAMzB,OAAS,SAAUmM,GACvB,GAAIpD,GAAQ,GAAItH,EAEhB,OADAA,GAAM2K,MAAMrD,EAAOoD,GACZpD,GAOTtH,EAAMN,UAAUmK,KAAO,WAGrB,IAAK,GAFDA,MAEK/G,EAAI,EAAGuH,EAAKzM,KAAKuM,QAAQtF,OAAYwF,EAAJvH,EAAQA,IAAK,CACrD,GAAI8H,GAAQhN,KAAKuM,QAAQrH,EAEzB+G,GAAK/G,GAAK8H,EAAMf,OAAO,GAGzB,MAAOA,IAOT7J,EAAMN,UAAU4G,IAAM,WAGpB,IAAK,GAFDuE,MAEK/H,EAAI,EAAGuH,EAAKzM,KAAKuM,QAAQtF,OAAYwF,EAAJvH,EAAQA,IAAK,CACrD,GAAI8H,GAAQhN,KAAKuM,QAAQrH,EACzB+H,GAAO/H,GAAK8H,EAAMtE,MAGpB,MAAOuE,IAOT7K,EAAMN,UAAUmG,IAAM,WAGpB,IAAK,GAFDgF,MAEK/H,EAAI,EAAGuH,EAAKzM,KAAKuM,QAAQtF,OAAYwF,EAAJvH,EAAQA,IAAK,CACrD,GAAI8H,GAAQhN,KAAKuM,QAAQrH,EAEzB+H,GAAO/H,GAAK8H,EAAM/E,MAGpB,MAAOgF,IAST7K,EAAMN,UAAUqK,QAAU,SAAUC,GAClC,IAAK,GAAIlH,GAAI,EAAGuH,EAAKzM,KAAKuM,QAAQtF,OAAYwF,EAAJvH,EAAQA,IAChDkH,EAASpM,KAAKuM,QAAQrH,GAAIA,EAAGlF,OASjCoC,EAAMN,UAAUkL,MAAQ,SAASE,GAC/B,MAAOlN,MAAKuM,QAAQW,IAAQ,MAU9B9K,EAAMN,UAAUqL,SAAW,WACzB,MAAOnN,MAAKwM,WAQdpK,EAAMN,UAAUwK,QAAU,WAExB,IAAK,GADDZ,MACKxG,EAAI,EAAGuH,EAAKzM,KAAKuM,QAAQtF,OAAYwF,EAAJvH,EAAQA,IAAK,CACrD,GAAI8H,GAAQhN,KAAKuM,QAAQrH,GACrBkI,KACAzJ,EAAIqJ,EAAMzB,MACVC,EAAMwB,EAAMxB,IACZC,EAAOuB,EAAMvB,IAEjB,IAAIA,EAAO,EACT,KAAWD,EAAJ7H,GACLyJ,EAAIV,KAAK/I,GACTA,GAAK8H,MAGJ,IAAW,EAAPA,EACP,KAAO9H,EAAI6H,GACT4B,EAAIV,KAAK/I,GACTA,GAAK8H,CAITC,GAAMgB,KAAKU,GAGb,MAAO1B,IAQTtJ,EAAMN,UAAUqE,QAAU/D,EAAMN,UAAUwK,QAM1ClK,EAAMN,UAAUwJ,SAAW,WAGzB,IAAK,GAFD+B,MAEKnI,EAAI,EAAGuH,EAAKzM,KAAKuM,QAAQtF,OAAYwF,EAAJvH,EAAQA,IAAK,CACrD,GAAI8H,GAAQhN,KAAKuM,QAAQrH,GACrB2C,EAAM3G,EAAOmG,OAAO2F,EAAMzB,MACZ,IAAdyB,EAAMvB,OACR5D,GAAO,IAAM3G,EAAOmG,OAAO2F,EAAMvB,OAEnC5D,GAAO,IAAM3G,EAAOmG,OAAO2F,EAAMxB,KACjC6B,EAAQX,KAAK7E,GAGf,MAAO,IAAMwF,EAAQC,KAAK,MAAQ,KAIpCzN,EAAOD,QAAUwC,GAKZ,SAASvC,EAAQD,EAASM,GAE/B,YAoCA,SAASmC,GAAOkL,GACd,KAAMvN,eAAgBqC,IACpB,KAAM,IAAI4G,aAAY,mDAGxB,IAAIsE,YAAgBlL,GAElBrC,KAAKwN,MAAQD,EAAK3L,QAAQ4L,UAEvB,IAAIzH,EAAQwH,GAGfvN,KAAKwN,MAAQC,EAAWF,OAErB,CAAA,GAAY,MAARA,EAEP,KAAM,IAAI/G,WAAU,6BAA+B0D,EAAKwD,MAAMlM,KAAK+L,GAAQ,IAI3EvN,MAAKwN,SAIPxN,KAAK2N,MAAQjC,EAAMO,KAAKjM,KAAKwN,OA+G/B,QAASI,GAAM3M,EAAQyI,GACrB,KAAMA,YAAiBtH,IACrB,KAAM,IAAIoE,WAAU,gBAGtB,IAAI2G,GAAWzD,EAAMyD,UACrB,IAAIA,EAEF,MAAOlM,GAAO4M,IAAInE,EAAMzB,MAIxB,IAAIgE,GAAOvC,EAAMuC,MACjB,IAAIA,EAAKhF,QAAUhG,EAAO0M,MAAM1G,OAC9B,KAAM,IAAI2B,GAAeqD,EAAKhF,OAAQhG,EAAO0M,MAAM1G,OAMrD,KAAK,GAFDgB,GAAMyB,EAAMzB,MACZS,EAAMgB,EAAMhB,MACPxD,EAAI,EAAGuH,EAAKxL,EAAO0M,MAAM1G,OAAYwF,EAAJvH,EAAQA,IAChD4I,EAAc7F,EAAI/C,GAAIjE,EAAO0M,MAAMzI,IACnC4I,EAAcpF,EAAIxD,GAAIjE,EAAO0M,MAAMzI,GAKrC,OAAO,IAAI7C,GAAO0L,EAAc9M,EAAOuM,MAAO9D,EAAOuC,EAAKhF,OAAQ,IActE,QAAS8G,GAAeR,EAAM7D,EAAOsE,EAAMd,GACzC,GAAIe,GAAQf,GAAOc,EAAO,EACtBhB,EAAQtD,EAAMsD,MAAME,EAExB,OACSF,GAAMhH,IADXiI,EACe,SAAU/I,GACzB,MAAOqI,GAAKrI,IAIG,SAAUA,GACzB,GAAIgJ,GAAQX,EAAKrI,EACjB,OAAO6I,GAAcG,EAAOxE,EAAOsE,EAAMd,EAAM,KAgBrD,QAASiB,GAAMlN,EAAQyI,EAAO0E,EAAWC,GACvC,KAAM3E,YAAiBtH,IACrB,KAAM,IAAIoE,WAAU,gBAItB,IAII8H,GAJAC,EAAQ7E,EAAMuC,OACdkB,EAAWzD,EAAMyD,UAYrB,IARIiB,YAAqB/L,IACvBiM,EAAQF,EAAUnC,OAClBmC,EAAYA,EAAUjI,WAGtBmI,EAAQ5C,EAAMO,KAAKmC,GAGjBjB,EAAU,CAIZ,GAAoB,GAAhBmB,EAAMrH,OACR,KAAM,IAAIT,WAAU,kBAGtBvF,GAAOuN,IAAI9E,EAAMzB,MAAOmG,EAAWC,OAEhC,CAIH,GAAIE,EAAMtH,OAAShG,EAAO0M,MAAM1G,OAC9B,KAAM,IAAI2B,GAAe2F,EAAMtH,OAAQhG,EAAO0M,MAAM1G,OAAQ,IAG9D,IAAIqH,EAAMrH,OAASsH,EAAMtH,OAAQ,CAI/B,IAFA,GAAI/B,GAAI,EACJuJ,EAAQ,EACQ,IAAbF,EAAMrJ,IAAyB,IAAboJ,EAAMpJ,IAC7BA,GAEF,MAAoB,IAAbqJ,EAAMrJ,IACXuJ,IACAvJ,GAIFkJ,GAAY1C,EAAMgD,UAAUN,EAAWG,EAAMtH,OAAQwH,EAAOH,GAI9D,IAAKhN,EAAOyF,UAAUwH,EAAOD,GAC3B,KAAM,IAAI1F,GAAe2F,EAAOD,EAAO,IAIzC,IAAIrC,GAAOvC,EAAMhB,MAAM1C,IAAI,SAAUd,GACnC,MAAOA,GAAI,GAEbyJ,GAAK1N,EAAQgL,EAAMoC,EAGnB,IAAIL,GAAOO,EAAMtH,OACbiG,EAAM,CACV0B,GAAe3N,EAAOuM,MAAO9D,EAAO0E,EAAWJ,EAAMd,GAGvD,MAAOjM,GAYT,QAAS2N,GAAerB,EAAM7D,EAAO0E,EAAWJ,EAAMd,GACpD,GAAIe,GAAQf,GAAOc,EAAO,EACtBhB,EAAQtD,EAAMsD,MAAME,EAGtBF,GAAMb,QADJ8B,EACY,SAAUY,EAAWC,GACjChB,EAAce,GACdtB,EAAKsB,GAAaT,EAAUU,IAIhB,SAAUD,EAAWC,GACjChB,EAAce,GACdD,EAAcrB,EAAKsB,GAAYnF,EAAO0E,EAAUU,GAAWd,EAAMd,EAAM,KA6B7E,QAASyB,GAAK1N,EAAQgL,EAAMoC,GAK1B,IAJA,GAAIU,GAAUzN,EAAOM,MAAMX,EAAO0M,OAC9BqB,GAAU,EAGPD,EAAQ9H,OAASgF,EAAKhF,QAC3B8H,EAAQrC,KAAK,GACbsC,GAAU,CAIZ,KAAK,GAAI9J,GAAI,EAAGuH,EAAKR,EAAKhF,OAAYwF,EAAJvH,EAAQA,IACpC+G,EAAK/G,GAAK6J,EAAQ7J,KACpB6J,EAAQ7J,GAAK+G,EAAK/G,GAClB8J,GAAU,EAIVA,IAEF/N,EAAOgO,OAAOF,EAASV,GAqH3B,QAASZ,GAAWF,GAClB,IAAK,GAAIrI,GAAI,EAAGuH,EAAKc,EAAKtG,OAAYwF,EAAJvH,EAAQA,IAAK,CAC7C,GAAIgK,GAAO3B,EAAKrI,EACZa,GAAQmJ,GACV3B,EAAKrI,GAAKuI,EAAWyB,GAEdA,YAAgB7M,KACvBkL,EAAKrI,GAAKuI,EAAWyB,EAAK1B,QAI9B,MAAOD,GA9fT,GAAIrD,GAAOhK,EAAoB,KAC3B0I,EAAiB1I,EAAoB,KAErCkC,EAAQlC,EAAoB,GAG5BmK,GADSH,EAAKhJ,OACLgJ,EAAKG,QACdqB,EAAQxB,EAAKwB,MACbpK,EAAS4I,EAAK5I,OAEdyE,EAAUD,MAAMC,QAChB+H,EAAgBpC,EAAMoC,aAuD1BzL,GAAO8M,SAAW,SAAU7N,GAC1B,MAAQA,aAAkBe,IAgB5BA,EAAOP,UAAUsN,OAAS,SAAU1F,EAAO2F,EAAahB,GACtD,OAAQjG,UAAUnB,QAChB,IAAK,GACH,MAAO2G,GAAK5N,KAAM0J,EAGpB,KAAK,GACL,IAAK,GACH,MAAOyE,GAAKnO,KAAM0J,EAAO2F,EAAahB,EAExC,SACE,KAAM,IAAIpF,aAAY,+BAS5B5G,EAAOP,UAAU+L,IAAM,SAAUnE,GAC/B,IAAK3D,EAAQ2D,GACX,KAAM,IAAIlD,WAAU,iBAEtB,IAAIkD,EAAMzC,QAAUjH,KAAK2N,MAAM1G,OAC7B,KAAM,IAAI2B,GAAec,EAAMzC,OAAQjH,KAAK2N,MAAM1G,OAIpD,KAAK,GADDsG,GAAOvN,KAAKwN,MACPtI,EAAI,EAAGuH,EAAK/C,EAAMzC,OAAYwF,EAAJvH,EAAQA,IAAK,CAC9C,GAAIoK,GAAU5F,EAAMxE,EACpB4I,GAAcwB,EAAS/B,EAAKtG,QAC5BsG,EAAOA,EAAK+B,GAGd,MAAOhO,GAAOM,MAAM2L,IAYtBlL,EAAOP,UAAU0M,IAAM,SAAU9E,EAAOzD,EAAOoI,GAC7C,GAAInJ,GAAGuH,CAGP,KAAK1G,EAAQ2D,GACX,KAAM,IAAI5I,OAAM,iBAElB,IAAI4I,EAAMzC,OAASjH,KAAK2N,MAAM1G,OAC5B,KAAM,IAAI2B,GAAec,EAAMzC,OAAQjH,KAAK2N,MAAM1G,OAAQ,IAI5D,IAAIgF,GAAOvC,EAAM1D,IAAI,SAAUd,GAC7B,MAAOA,GAAI,GAEbyJ,GAAK3O,KAAMiM,EAAMoC,EAGjB,IAAId,GAAOvN,KAAKwN,KAChB,KAAKtI,EAAI,EAAGuH,EAAK/C,EAAMzC,OAAS,EAAOwF,EAAJvH,EAAQA,IAAK,CAC9C,GAAIoK,GAAU5F,EAAMxE,EACpB4I,GAAcwB,EAAS/B,EAAKtG,QAC5BsG,EAAOA,EAAK+B,GAQd,MAJAA,GAAU5F,EAAMA,EAAMzC,OAAS,GAC/B6G,EAAcwB,EAAS/B,EAAKtG,QAC5BsG,EAAK+B,GAAWrJ,EAETjG,MA0LTqC,EAAOP,UAAUmN,OAAS,SAAUhD,EAAMoC,GAKxC,MAJArO,MAAK2N,MAAQrM,EAAOM,MAAMqK,GAC1BjM,KAAKwN,MAAQ9B,EAAMuD,OAAOjP,KAAKwN,MAAOxN,KAAK2N,MAAOU,GAG3CrO,MAuCTqC,EAAOP,UAAUF,MAAQ,WACvB,GAAIX,GAAS,GAAIoB,EAGjB,OAFApB,GAAOuM,MAAQlM,EAAOM,MAAM5B,KAAKwN,OACjCvM,EAAO0M,MAAQrM,EAAOM,MAAM5B,KAAK2N,OAC1B1M,GAOToB,EAAOP,UAAUmK,KAAO,WACtB,MAAOjM,MAAK2N,OAWdtL,EAAOP,UAAUkE,IAAM,SAAUoG,GAC/B,GAAImD,GAAKvP,KACLiB,EAAS,GAAIoB,GACbqH,KACA8F,EAAU,SAAUvJ,EAAOiH,GAC7B,MAAInH,GAAQE,GACHA,EAAMD,IAAI,SAAUkI,EAAOhJ,GAEhC,MADAwE,GAAMwD,GAAOhI,EACNsK,EAAQtB,EAAOhB,EAAM,KAIvBd,EAASnG,EAAOyD,EAAO6F,GAMlC,OAHAtO,GAAOuM,MAAQgC,EAAQxP,KAAKwN,MAAO,GACnCvM,EAAO0M,MAAQrM,EAAOM,MAAM5B,KAAK2N,OAE1B1M,GASToB,EAAOP,UAAUqK,QAAU,SAAUC,GACnC,GAAImD,GAAKvP,KACL0J,KACA8F,EAAU,SAAUvJ,EAAOiH,GACzBnH,EAAQE,GACVA,EAAMkG,QAAQ,SAAU+B,EAAOhJ,GAC7BwE,EAAMwD,GAAOhI,EACbsK,EAAQtB,EAAOhB,EAAM,KAIvBd,EAASnG,EAAOyD,EAAO6F,GAG3BC,GAAQxP,KAAKwN,MAAO,IAOtBnL,EAAOP,UAAUwK,QAAU,WACzB,MAAOhL,GAAOM,MAAM5B,KAAKwN,QAO3BnL,EAAOP,UAAUqE,QAAU,WACzB,MAAOnG,MAAKwN,OAWdnL,EAAOP,UAAUuF,OAAS,SAAUhG,GAClC,MAAOgJ,GAAOhD,OAAOrH,KAAKwN,MAAOnM,IAOnCgB,EAAOP,UAAUwJ,SAAW,WAC1B,MAAOjB,GAAOhD,OAAOrH,KAAKwN,QAwB5B3N,EAAOD,QAAUyC,GAKZ,SAASxC,EAAQD,EAASM,GAE/B,YAyBA,SAASoC,GAAK2D,EAAOwJ,GACnB,KAAMzP,eAAgBsC,IACpB,KAAM,IAAIxB,OAAM,mDAGlB,IAAa+E,QAATI,IAAuBiB,EAASjB,GAClC,KAAM,IAAIO,WAAU,uDAEtB,IAAYX,QAAR4J,KAAuBrF,EAASqF,IAAiB,IAARA,GAC3C,KAAM,IAAIjJ,WAAU,wDAGtB,IAAYX,QAAR4J,EAAmB,CAErB,GAAIC,GAAMC,EAAUF,EACpB,KAAKC,EACH,KAAM,IAAIzG,aAAY,iBAAmBwG,EAAO,IAElDzP,MAAK4P,KAAOF,EAAIE,KAChB5P,KAAK6P,OAASH,EAAIG,WAGlB7P,MAAK4P,KAAOE,EACZ9P,KAAK6P,OAASE,CAGhB/P,MAAKiG,MAAkBJ,QAATI,EAAsBjG,KAAKgQ,WAAW/J,GAAS,KAC7DjG,KAAKiQ,WAAY,EAQnB,QAAS3G,KACP,KAAY,KAAL7I,GAAiB,KAALA,GACjB8I,IAIJ,QAASC,GAAY/I,GACnB,MAASA,IAAK,KAAY,KAALA,GAAkB,KAALA,EAGpC,QAASgJ,GAAShJ,GAChB,MAASA,IAAK,KAAY,KAALA,EAGvB,QAAS8I,KACPG,IACAjJ,EAAIkJ,EAAKC,OAAOF,GAGlB,QAASG,GAAOC,GACdJ,EAAQI,EACRrJ,EAAIkJ,EAAKC,OAAOF,GAGlB,QAASK,KACP,GACID,GADA5I,EAAS,EAYb,IAVA4I,EAAWJ,EAEF,KAALjJ,EACF8I,IAEY,KAAL9I,IACPS,GAAUT,EACV8I,MAGGC,EAAW/I,GAGd,MADAoJ,GAAOC,GACA,IAIT,IAAS,KAALrJ,GAGF,GAFAS,GAAUT,EACV8I,KACKE,EAAQhJ,GAGX,MADAoJ,GAAOC,GACA,SAGN,CACH,KAAOL,EAAQhJ,IACbS,GAAUT,EACV8I,GAEO,MAAL9I,IACFS,GAAUT,EACV8I,KAGJ,KAAOE,EAAQhJ,IACbS,GAAUT,EACV8I,GAIF,IAAS,KAAL9I,GAAiB,KAALA,EAAU,CAUxB,GATAS,GAAUT,EACV8I,KAES,KAAL9I,GAAiB,KAALA,KACdS,GAAUT,EACV8I,MAIGE,EAAQhJ,GAGX,MADAoJ,GAAOC,GACA,IAGT,MAAOL,EAAQhJ,IACbS,GAAUT,EACV8I,IAIJ,MAAOrI,GAGT,QAASgP,KACP,GAAIC,GAAW,EAGf,KADA7G,IACO7I,GAAU,KAALA,GAAiB,KAALA,GACtB0P,GAAY1P,EACZ8I,GAGF,OAAO4G,IAAY,KAwHrB,QAASR,GAAU9H,GACjB,IAAK,GAAI4H,KAAQW,GACf,GAAIA,EAAM1J,eAAe+I,IACnBpF,EAAOgG,SAASxI,EAAK4H,GAAQ,CAC/B,GAAIG,GAAOQ,EAAMX,GACba,EAAazI,EAAIZ,OAASwI,EAAKxI,OAC/BsJ,EAAa1I,EAAI6C,UAAU,EAAG4F,GAC9BT,EAASD,EAAKY,SAASD,EAC3B,IAAe1K,SAAXgK,EAEF,OACED,KAAMA,EACNC,OAAQA,GAOlB,MAAO,MA5ST,GAwDIlG,GAAMD,EAAOjJ,EAxDbyJ,EAAOhK,EAAoB,KAE3BgB,EAASgJ,EAAKhJ,OACdmJ,EAASH,EAAKG,OACdnD,EAAWgD,EAAKhJ,OAAOgG,SACvBkD,EAAWF,EAAKG,OAAOD,QAqK3B9H,GAAKM,MAAQ,SAASiF,GAKpB,GAJA8B,EAAO9B,EACP6B,EAAQ,GACRjJ,EAAI,IAEC2J,EAAST,GACZ,MAAO,KAGTJ,KACAD,GACA,IACImG,GADAxJ,EAAQ8D,GAEZ,IAAI9D,EAAO,CAKT,GAJAwJ,EAAOS,IAEP3G,IACAD,IACI7I,EAEF,MAAO,KAGT,IAAIwF,GAASwJ,EACX,IAEE,MAAO,IAAInN,GAAK4D,OAAOD,GAAQwJ,GAEjC,MAAOgB,SAGN,CAKH,GAJAhB,EAAOS,IAEP3G,IACAD,IACI7I,EAEF,MAAO,KAGT,IAAIgP,EACF,IAEE,MAAO,IAAInN,GAAK,KAAMmN,GAExB,MAAOgB,KAIX,MAAO,OAQTnO,EAAK6H,OAAS,SAASlE,GACrB,MAAQA,aAAiB3D,IAO3BA,EAAKR,UAAUF,MAAQ,WACrB,GAAIA,GAAQ,GAAIU,EAEhB,KAAK,GAAI5B,KAAKV,MACRA,KAAK0G,eAAehG,KACtBkB,EAAMlB,GAAKV,KAAKU,GAIpB,OAAOkB,IASTU,EAAKR,UAAUkO,WAAa,SAAS/J,GACnC,OAAQA,EAAQjG,KAAK4P,KAAKc,QAAU1Q,KAAK4P,KAAK3J,MAAQjG,KAAK6P,OAAO5J,OAUpE3D,EAAKR,UAAU6O,aAAe,SAAU1K,EAAO2K,GAC7C,MAAmB/K,SAAf+K,EACK3K,EAAQjG,KAAK4P,KAAK3J,MAAQjG,KAAK6P,OAAO5J,MAAQjG,KAAK4P,KAAKc,OAGxDzK,EAAQjG,KAAK4P,KAAK3J,MAAQ2K,EAAc5Q,KAAK4P,KAAKc,QAwC7DpO,EAAKuO,gBAAkB,SAAUpB,GAC/B,MAA2B,OAAnBE,EAAUF,IAOpBnN,EAAKR,UAAU6I,QAAU,SAASmG,GAChC,MAAQ9Q,MAAK4P,KAAKkB,OAASA,GAQ7BxO,EAAKR,UAAUiP,UAAY,SAAS5F,GAClC,MAAQnL,MAAK4P,KAAKkB,OAAS3F,EAAMyE,KAAKkB,MAQxCxO,EAAKR,UAAUsC,OAAS,SAAS+G,GAC/B,MAAQnL,MAAK+Q,UAAU5F,IAAUnL,KAAKiG,OAASkF,EAAMlF,OAQvD3D,EAAKR,UAAUkP,GAAK,SAAUC,GAC5B,GAAI9F,EACJ,IAAIf,EAAS6G,GAAgB,CAG3B,GAFA9F,EAAQ,GAAI7I,GAAK,KAAM2O,IAElBjR,KAAK+Q,UAAU5F,GAClB,KAAM,IAAIrK,OAAM,qBAKlB,OAFAqK,GAAMlF,MAAQjG,KAAKiG,MACnBkF,EAAM8E,WAAY,EACX9E,EAEJ,GAAI8F,YAAyB3O,GAAM,CACtC,IAAKtC,KAAK+Q,UAAUE,GAClB,KAAM,IAAInQ,OAAM,qBAElB,IAA4B,OAAxBmQ,EAAchL,MAChB,KAAM,IAAInF,OAAM,wCAMlB,OAHAqK,GAAQ8F,EAAcrP,QACtBuJ,EAAMlF,MAAQjG,KAAKiG,MACnBkF,EAAM8E,WAAY,EACX9E,EAGP,KAAM,IAAIrK,OAAM,yCASpBwB,EAAKR,UAAUgJ,SAAW,SAAUmG,GAClC,GAAI9F,GAAQnL,KAAKgR,GAAGC,EACpB,OAAO9F,GAAMwF,aAAaxF,EAAMlF,MAAOkF,EAAM0E,OAAO5J,QAQtD3D,EAAKR,UAAUwJ,SAAW,WACxB,MAAOtL,MAAKqH,UAOd/E,EAAKR,UAAUqE,QAAU7D,EAAKR,UAAUwJ,SAUxChJ,EAAKR,UAAUuF,OAAS,SAAShG,GAC/B,GAAI4E,GACA4B,CAEJ,IAAmB,OAAf7H,KAAKiG,OAAmBjG,KAAKiQ,UAO/BhK,EAAQjG,KAAK2Q,aAAa3Q,KAAKiG,OAC/B4B,EAAsB,OAAf7H,KAAKiG,MAAmB/E,EAAOmG,OAAOpB,EAAO5E,GAAW,IAAO,GACtEwG,GAAO7H,KAAK6P,OAAOJ,KAAOzP,KAAK4P,KAAKH,SATM,CAC1C,GAAIyB,GAAalR,KAAKmR,aACtBlL,GAAQjG,KAAK2Q,aAAa3Q,KAAKiG,MAAOiL,EAAWjL,OACjD4B,EAAM3G,EAAOmG,OAAOpB,EAAO5E,GAAW,IACtCwG,GAAOqJ,EAAWzB,KAAOzP,KAAK4P,KAAKH,KAQrC,MAAO5H,IAQTvF,EAAKR,UAAUqP,YAAc,WAK3B,GAAIC,GAAWxM,KAAKkD,IAAI9H,KAAKiG,MAAQjG,KAAK4P,KAAK3J,OAC3CiL,EAAanB,EACbsB,EAAWzM,KAAKkD,IAChBlD,KAAK0M,IAAIF,EAAWF,EAAWjL,OAASrB,KAAKW,KAAO,KAEpDiL,EAAWxQ,KAAK4P,KAAKY,QACzB,KAAK,GAAI9P,KAAK8P,GACZ,GAAIA,EAAS9J,eAAehG,GAAI,CAC9B,GAAImP,GAASW,EAAS9P,EACtB,IAAImP,EAAO0B,WAAY,CACrB,GAAI9I,GAAO7D,KAAKkD,IACZlD,KAAK0M,IAAIF,EAAWvB,EAAO5J,OAASrB,KAAKW,KAAO,IAEzC8L,GAAP5I,IACFyI,EAAarB,EACbwB,EAAW5I,IAMnB,MAAOyI,GAGT,IAAIM,IACFC,MACE,IAAKhC,KAAM,GAAIxJ,MAAO,EAAGsL,YAAY,IAEvCG,OACE,IAAKjC,KAAM,GAAIxJ,MAAO,EAAGsL,YAAY,GAErCI,IAAOlC,KAAM,KAAMxJ,MAAO,GAAKsL,YAAY,GAC3CK,GAAMnC,KAAM,IAAKxJ,MAAO,IAAKsL,YAAY,GACzCpN,GAAMsL,KAAM,IAAKxJ,MAAO,IAAKsL,YAAY,GACzCM,GAAMpC,KAAM,IAAKxJ,MAAO,IAAKsL,YAAY,GACzCO,GAAMrC,KAAM,IAAKxJ,MAAO,IAAKsL,YAAY,GACzCQ,GAAMtC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CS,GAAMvC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CvM,GAAMyK,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CU,GAAMxC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CW,GAAMzC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAE1CY,GAAM1C,KAAM,IAAKxJ,MAAO,GAAMsL,YAAY,GAC1C9Q,GAAMgP,KAAM,IAAKxJ,MAAO,IAAMsL,YAAY,GAC1C/Q,GAAMiP,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1Ca,GAAM3C,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1Cc,GAAM5C,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1C7Q,GAAM+O,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3Ce,GAAM7C,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3C3K,GAAM6I,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3CgB,GAAM9C,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3C3N,GAAM6L,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,IAE7CiB,MACE,IAAK/C,KAAM,GAAIxJ,MAAO,EAAGsL,YAAY,GAErCkB,MAAShD,KAAM,OAAQxJ,MAAO,GAAKsL,YAAY,GAC/CmB,OAAUjD,KAAM,QAASxJ,MAAO,IAAKsL,YAAY,GACjDoB,MAASlD,KAAM,OAAQxJ,MAAO,IAAKsL,YAAY,GAC/CqB,MAASnD,KAAM,OAAQxJ,MAAO,IAAKsL,YAAY,GAC/CsB,MAASpD,KAAM,OAAQxJ,MAAO,IAAKsL,YAAY,GAC/CuB,MAASrD,KAAM,OAAQxJ,MAAO,KAAMsL,YAAY,GAChDwB,MAAStD,KAAM,OAAQxJ,MAAO,KAAMsL,YAAY,GAChDyB,KAAQvD,KAAM,MAAOxJ,MAAO,KAAMsL,YAAY,GAC9C0B,OAAUxD,KAAM,QAASxJ,MAAO,KAAMsL,YAAY,GAClD2B,OAAUzD,KAAM,QAASxJ,MAAO,KAAMsL,YAAY,GAElD4B,MAAS1D,KAAM,OAAQxJ,MAAO,GAAMsL,YAAY,GAChD6B,OAAU3D,KAAM,QAASxJ,MAAO,IAAMsL,YAAY,GAClD8B,OAAU5D,KAAM,QAASxJ,MAAO,KAAMsL,YAAY,GAClD+B,OAAU7D,KAAM,QAASxJ,MAAO,KAAMsL,YAAY,GAClDgC,MAAS9D,KAAM,OAAQxJ,MAAO,KAAMsL,YAAY,GAChDiC,MAAS/D,KAAM,OAAQxJ,MAAO,MAAOsL,YAAY,GACjDkC,OAAUhE,KAAM,QAASxJ,MAAO,MAAOsL,YAAY,GACnDmC,MAASjE,KAAM,OAAQxJ,MAAO,MAAOsL,YAAY,GACjDoC,OAAUlE,KAAM,QAASxJ,MAAO,MAAOsL,YAAY,GACnDqC,OAAUnE,KAAM,QAASxJ,MAAO,MAAOsL,YAAY,IAErDsC,SACE,IAAKpE,KAAM,GAAIxJ,MAAO,EAAGsL,YAAY,GAErCI,IAAOlC,KAAM,KAAMxJ,MAAO,IAAKsL,YAAY,GAC3CK,GAAMnC,KAAM,IAAKxJ,MAAO,IAAKsL,YAAY,GACzCpN,GAAMsL,KAAM,IAAKxJ,MAAO,IAAKsL,YAAY,GACzCM,GAAMpC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CO,GAAMrC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CQ,GAAMtC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CS,GAAMvC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CvM,GAAMyK,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CU,GAAMxC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CW,GAAMzC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAE1CY,GAAM1C,KAAM,IAAKxJ,MAAO,IAAMsL,YAAY,GAC1C9Q,GAAMgP,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1C/Q,GAAMiP,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1Ca,GAAM3C,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3Cc,GAAM5C,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3C7Q,GAAM+O,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3Ce,GAAM7C,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3C3K,GAAM6I,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3CgB,GAAM9C,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3C3N,GAAM6L,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,IAE7CuC,OACE,IAAKrE,KAAM,GAAIxJ,MAAO,EAAGsL,YAAY,GAErCI,IAAOlC,KAAM,KAAMxJ,MAAO,IAAKsL,YAAY,GAC3CK,GAAMnC,KAAM,IAAKxJ,MAAO,IAAKsL,YAAY,GACzCpN,GAAMsL,KAAM,IAAKxJ,MAAO,IAAKsL,YAAY,GACzCM,GAAMpC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CO,GAAMrC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CQ,GAAMtC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CS,GAAMvC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CvM,GAAMyK,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CU,GAAMxC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CW,GAAMzC,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAE1CY,GAAM1C,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1C9Q,GAAMgP,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1C/Q,GAAMiP,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1Ca,GAAM3C,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3Cc,GAAM5C,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3C7Q,GAAM+O,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3Ce,GAAM7C,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3C3K,GAAM6I,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3CgB,GAAM9C,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,GAC3C3N,GAAM6L,KAAM,IAAKxJ,MAAO,MAAOsL,YAAY,IAE7CwC,cACE,IAAKtE,KAAM,GAAIxJ,MAAO,EAAGsL,YAAY,GACrCpN,GAAMsL,KAAM,IAAKxJ,MAAO,KAAMsL,YAAY,GAC1CM,GAAMpC,KAAM,IAAKxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GACvDO,GAAMrC,KAAM,IAAKxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GACvDQ,GAAMtC,KAAM,IAAKxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GACvDS,GAAMvC,KAAM,IAAKxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GACvDvM,GAAMyK,KAAM,IAAKxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GACvDU,GAAMxC,KAAM,IAAKxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GACvDW,GAAMzC,KAAM,IAAKxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAEvD0C,IAAOxE,KAAM,KAAMxJ,MAAO,KAAMsL,YAAY,GAC5C2C,IAAOzE,KAAM,KAAMxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GACzD4C,IAAO1E,KAAM,KAAMxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GACzD6C,IAAO3E,KAAM,KAAMxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GACzD8C,IAAO5E,KAAM,KAAMxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GACzD+C,IAAO7E,KAAM,KAAMxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GACzDgD,IAAO9E,KAAM,KAAMxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GACzDiD,IAAO/E,KAAM,KAAMxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,IAE3DkD,aACE,IAAKhF,KAAM,GAAIxJ,MAAO,EAAGsL,YAAY,GACrCoB,MAASlD,KAAM,OAAQxJ,MAAO,KAAMsL,YAAY,GAChDqB,MAASnD,KAAM,OAAQxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAC7DsB,MAASpD,KAAM,OAAQxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAC7DuB,MAASrD,KAAM,OAAQxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAC7DwB,MAAStD,KAAM,OAAQxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAC7DyB,KAAQvD,KAAM,MAAOxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAC3D0B,OAAUxD,KAAM,QAASxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAC/D2B,OAAUzD,KAAM,QAASxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAE/DmD,MAASjF,KAAM,OAAQxJ,MAAO,KAAMsL,YAAY,GAChDoD,MAASlF,KAAM,OAAQxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAC7DqD,MAASnF,KAAM,OAAQxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAC7DsD,MAASpF,KAAM,OAAQxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAC7DuD,MAASrF,KAAM,OAAQxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAC7DwD,KAAQtF,KAAM,MAAOxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAC3DyD,MAASvF,KAAM,OAAQxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,GAC7D0D,MAASxF,KAAM,OAAQxJ,MAAOrB,KAAKoP,IAAI,KAAM,GAAIzC,YAAY,KAI7DxB,GAAeN,KAAM,GAAIxJ,MAAO,EAAGsL,YAAY,GAE/C3G,GACF6G,QAEAyD,UACAC,QACAC,QACAC,WACAC,eACAC,sBACAC,uBAEAC,SACAC,WACAC,UACA9K,SACA+K,QAGEC,KAEA/F,GAAaL,KAAM,GAAIqB,KAAM+E,EAAgB5P,MAAO,EAAGyK,OAAQ,GAE/DN,GAEF0F,OAAQrG,KAAM,QAASqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASgB,KAAMvM,MAAO,EAAGyK,OAAQ,GAC3FqF,MAAOtG,KAAM,OAAQqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,MAAQyK,OAAQ,GAC9FsF,MAAOvG,KAAM,OAAQqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,MAAQyK,OAAQ,GAC9FuF,MAAOxG,KAAM,OAAQqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,MAAQyK,OAAQ,GAC9FwF,MAAOzG,KAAM,OAAQqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,SAAUyK,OAAQ,GAChGyF,MAAO1G,KAAM,OAAQqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,QAAUyK,OAAQ,GAChG0F,KAAM3G,KAAM,MAAOqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,QAAUyK,OAAQ,GAC9F2F,OAAQ5G,KAAM,QAASqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,QAASyK,OAAQ,GACjG4F,UAAW7G,KAAM,WAAYqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,MAAOyK,OAAQ,GAErGlQ,GAAIiP,KAAM,IAAKqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASE,MAAOzL,MAAO,EAAGyK,OAAQ,GACpF6F,MAAO9G,KAAM,KAAMqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,MAAQyK,OAAQ,GAC5F8F,IAAK/G,KAAM,KAAMqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,MAAQyK,OAAQ,GAC1F+F,IAAKhH,KAAM,KAAMqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,MAAQyK,OAAQ,GAC1FgG,IAAKjH,KAAM,KAAMqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,SAAUyK,OAAQ,GAC5FiG,IAAKlH,KAAM,KAAMqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,QAAUyK,OAAQ,GAC5FkG,IAAKnH,KAAM,KAAMqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,QAAUyK,OAAQ,GAC5FmG,IAAKpH,KAAM,KAAMqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,QAASyK,OAAQ,GAC3FoG,KAAMrH,KAAM,MAAOqB,KAAMlG,EAAWsK,OAAQ1E,SAAUgB,EAASC,KAAMxL,MAAO,OAAWyK,OAAQ,GAG/FqG,IAAKtH,KAAM,KAAMqB,KAAMlG,EAAW8K,QAASlF,SAAUgB,EAASqC,QAAS5N,MAAO,EAAGyK,OAAQ,GACzFsG,MAAOvH,KAAM,OAAQqB,KAAMlG,EAAW8K,QAASlF,SAAUgB,EAASC,KAAMxL,MAAO,SAAYyK,OAAQ,GACnGuG,MAAOxH,KAAM,OAAQqB,KAAMlG,EAAW8K,QAASlF,SAAUgB,EAASC,KAAMxL,MAAO,UAAYyK,OAAQ,GACnGwG,MAAOzH,KAAM,OAAQqB,KAAMlG,EAAW8K,QAASlF,SAAUgB,EAASC,KAAMxL,MAAO,UAAYyK,OAAQ,GACnGyG,MAAO1H,KAAM,OAAQqB,KAAMlG,EAAW8K,QAASlF,SAAUgB,EAASC,KAAMxL,MAAO,eAAgByK,OAAQ,GACvG0G,MAAO3H,KAAM,OAAQqB,KAAMlG,EAAW8K,QAASlF,SAAUgB,EAASC,KAAMxL,MAAO,SAAUyK,OAAQ,GACjG2G,MAAO5H,KAAM,OAAQqB,KAAMlG,EAAW8K,QAASlF,SAAUgB,EAASC,KAAMxL,MAAO,SAAUyK,OAAQ,GACjG4G,OAAQ7H,KAAM,QAASqB,KAAMlG,EAAW8K,QAASlF,SAAUgB,EAASC,KAAMxL,MAAO,WAAYyK,OAAQ,GAGrG6G,IAAK9H,KAAM,KAAMqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASsC,MAAO7N,MAAO,EAAGyK,OAAQ,GACtF8G,GAAI/H,KAAM,IAAKqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASE,MAAOzL,MAAO,KAAOyK,OAAQ,GACxF+G,GAAIhI,KAAM,IAAKqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASE,MAAOzL,MAAO,KAAOyK,OAAQ,GACxFgH,OAAQjI,KAAM,QAASqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASgB,KAAMvM,MAAO,KAAOyK,OAAQ,GAC/FiH,MAAOlI,KAAM,OAAQqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,aAAcyK,OAAQ,GACpGkH,MAAOnI,KAAM,OAAQqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,cAAgByK,OAAQ,GACtGmH,MAAOpI,KAAM,OAAQqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,cAAgByK,OAAQ,GACtGoH,UAAWrI,KAAM,WAAYqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,KAAUyK,OAAQ,GACxGqH,YAAatI,KAAM,aAAcqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,MAAUyK,OAAQ,GAE5GsH,MAAOvI,KAAM,OAAQqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,KAAMyK,OAAQ,GAC5FuH,KAAMxI,KAAM,MAAOqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,KAAMyK,OAAQ,GAG1FwH,OAAQzI,KAAM,QAASqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,YAAkByK,OAAQ,GAC1GyH,WAAY1I,KAAM,YAAaqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,aAAiByK,OAAQ,GACjH0H,YAAa3I,KAAM,aAAcqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,YAAeyK,OAAQ,GACjH2H,MAAO5I,KAAM,OAAQqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,YAAcyK,OAAQ,GACpG4H,IAAK7I,KAAM,KAAMqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,KAAMyK,OAAQ,GACxF6H,KAAM9I,KAAM,MAAOqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,YAAcyK,OAAQ,GAClG8H,MAAO/I,KAAM,OAAQqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,YAAcyK,OAAQ,GACpG+H,OAAQhJ,KAAM,QAASqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,YAAcyK,OAAQ,GACtGgI,QAASjJ,KAAM,SAAUqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,WAAayK,OAAQ,GACvGiI,YAAalJ,KAAM,aAAcqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,SAAWyK,OAAQ,GAC7GkI,WAAYnJ,KAAM,YAAaqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,SAAWyK,OAAQ,GAC3GmI,UAAWpJ,KAAM,WAAYqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,QAAWyK,OAAQ,GAGzGoI,MAAOrJ,KAAM,OAAQqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,aAAiByK,OAAQ,GACvGqI,MAAOtJ,KAAM,OAAQqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,YAAeyK,OAAQ,GACrGsI,IAAKvJ,KAAM,KAAMqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,YAAcyK,OAAQ,GAChGuI,IAAKxJ,KAAM,KAAMqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,YAAcyK,OAAQ,GAChGwI,IAAKzJ,KAAM,KAAMqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,YAAcyK,OAAQ,GAChGyI,IAAK1J,KAAM,KAAMqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,YAAcyK,OAAQ,GAChG0I,KAAM3J,KAAM,MAAOqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,WAAayK,OAAQ,GACjG2I,KAAM5J,KAAM,MAAOqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,SAAWyK,OAAQ,GAC/F4I,KAAM7J,KAAM,MAAOqB,KAAMlG,EAAW+K,OAAQnF,SAAUgB,EAASC,KAAMxL,MAAO,SAAWyK,OAAQ,GAI/F6I,GAAI9J,KAAM,IAAKqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASE,MAAOzL,MAAO,KAAOyK,OAAQ,GACtF8I,MAAO/J,KAAM,OAAQqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASgB,KAAMvM,MAAO,KAAOyK,OAAQ,GAE3F+I,KAAMhK,KAAM,MAAOqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASE,MAAOzL,MAAO,UAAWyK,OAAQ,GAC9FgJ,OAAQjK,KAAM,QAASqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASE,MAAOzL,MAAO,IAAMyK,OAAQ,GAE7FiJ,OAAQlK,KAAM,QAASqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASC,KAAMxL,MAAO,YAAayK,OAAQ,GACnGkJ,MAAOnK,KAAM,OAAQqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASC,KAAMxL,MAAO,kBAAoByK,OAAQ,GACxGmJ,OAAQpK,KAAM,QAASqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASC,KAAMxL,MAAO,cAAiByK,OAAQ,GACvGoJ,WAAYrK,KAAM,YAAaqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASC,KAAMxL,MAAO,UAAcyK,OAAQ,GAC5GqJ,eAAgBtK,KAAM,gBAAiBqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASC,KAAMxL,MAAO,UAAWyK,OAAQ,GACjHsJ,OAAQvK,KAAM,QAASqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASC,KAAMxL,MAAO,KAAQyK,OAAQ,GAE9FuJ,IAAKxK,KAAM,KAAMqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASC,KAAMxL,MAAO,YAAayK,OAAQ,GAC7FwJ,IAAKzK,KAAM,KAAMqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASC,KAAMxL,MAAO,kBAAoByK,OAAQ,GACpGyJ,IAAK1K,KAAM,KAAMqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASC,KAAMxL,MAAO,cAAiByK,OAAQ,GACjG0J,KAAM3K,KAAM,MAAOqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASC,KAAMxL,MAAO,UAAcyK,OAAQ,GAChG2J,KAAM5K,KAAM,MAAOqB,KAAMlG,EAAWuK,KAAM3E,SAAUgB,EAASC,KAAMxL,MAAO,UAAWyK,OAAQ,GAG7F4J,GAAI7K,KAAM,IAAKqB,KAAMlG,EAAWwK,KAAM5E,SAAUgB,EAASE,MAAOzL,MAAO,EAAGyK,OAAQ,GAClFzI,KAAMwH,KAAM,MAAOqB,KAAMlG,EAAWwK,KAAM5E,SAAUgB,EAASC,KAAMxL,MAAO,GAAIyK,OAAQ,GACtFkB,GAAInC,KAAM,IAAKqB,KAAMlG,EAAWwK,KAAM5E,SAAUgB,EAASC,KAAMxL,MAAO,KAAMyK,OAAQ,GACpFjG,QAASgF,KAAM,SAAUqB,KAAMlG,EAAWwK,KAAM5E,SAAUgB,EAASgB,KAAMvM,MAAO,EAAGyK,OAAQ,GAC3F6J,KAAM9K,KAAM,MAAOqB,KAAMlG,EAAWwK,KAAM5E,SAAUgB,EAASgB,KAAMvM,MAAO,EAAGyK,OAAQ,GACrF8J,QAAS/K,KAAM,SAAUqB,KAAMlG,EAAWwK,KAAM5E,SAAUgB,EAASC,KAAMxL,MAAO,GAAIyK,OAAQ,GAC5F+J,MAAOhL,KAAM,OAAQqB,KAAMlG,EAAWwK,KAAM5E,SAAUgB,EAASC,KAAMxL,MAAO,KAAMyK,OAAQ,GAC1FgK,KAAMjL,KAAM,MAAOqB,KAAMlG,EAAWwK,KAAM5E,SAAUgB,EAASC,KAAMxL,MAAO,MAAOyK,OAAQ,GAGzFiK,KAAMlL,KAAM,MAAOqB,KAAMlG,EAAWC,MAAO2F,SAAUgB,EAASC,KAAMxL,MAAO,EAAGyK,OAAQ,GAEtFkK,KAAMnL,KAAM,MAAOqB,KAAMlG,EAAWC,MAAO2F,SAAUgB,EAASC,KAAMxL,MAAO,oBAAqCyK,OAAQ,GAExHmK,MAAOpL,KAAM,OAAQqB,KAAMlG,EAAWC,MAAO2F,SAAUgB,EAASC,KAAMxL,MAAO,oBAAqCyK,OAAQ,GAE1HoK,OAAQrL,KAAM,QAASqB,KAAMlG,EAAWC,MAAO2F,SAAUgB,EAASC,KAAMxL,MAAO,kBAAmCyK,OAAQ,GAG1HqK,GAAItL,KAAM,IAAKqB,KAAMlG,EAAWyK,QAAS7E,SAAUgB,EAASE,MAAOzL,MAAO,EAAGyK,OAAQ,GACrFsK,QAASvL,KAAM,SAAUqB,KAAMlG,EAAWyK,QAAS7E,SAAUgB,EAASgB,KAAMvM,MAAO,EAAGyK,OAAQ,GAM9FuK,GAAIxL,KAAM,IAAKqB,KAAMlG,EAAW0K,YAAa9E,SAAUgB,EAASC,KAAMxL,MAAO,EAAGyK,OAAQ,GACxFwK,MAAOzL,KAAM,OAAQqB,KAAMlG,EAAW0K,YAAa9E,SAAUgB,EAASC,KAAMxL,MAAO,EAAGyK,OAAQ,QAC9FyK,MAAO1L,KAAM,OAAQqB,KAAMlG,EAAW0K,YAAa9E,SAAUgB,EAASC,KAAMxL,MAAO,EAAE,IAAKyK,OAAQ,QAClG0K,MAAO3L,KAAM,OAAQqB,KAAMlG,EAAW0K,YAAa9E,SAAUgB,EAASC,KAAMxL,MAAO,EAAE,IAAKyK,OAAQ,GAClG2K,QAAS5L,KAAM,SAAUqB,KAAMlG,EAAW0K,YAAa9E,SAAUgB,EAASC,KAAMxL,MAAO,EAAGyK,OAAQ,GAClG4K,SAAU7L,KAAM,UAAWqB,KAAMlG,EAAW0K,YAAa9E,SAAUgB,EAASC,KAAMxL,MAAO,EAAGyK,OAAQ,QACpG6K,YAAa9L,KAAM,aAAcqB,KAAMlG,EAAW0K,YAAa9E,SAAUgB,EAASC,KAAMxL,MAAO,EAAE,IAAKyK,OAAQ,QAC9G8K,SAAU/L,KAAM,UAAWqB,KAAMlG,EAAW0K,YAAa9E,SAAUgB,EAASC,KAAMxL,MAAO,EAAE,IAAKyK,OAAQ,GAGxG+K,KAAMhM,KAAM,MAAOqB,KAAMlG,EAAW4K,oBAAqBhF,SAAUgB,EAASC,KAAMxL,MAAO,EAAGyK,OAAQ,GACpGgL,MAAOjM,KAAM,OAAQqB,KAAMlG,EAAW4K,oBAAqBhF,SAAUgB,EAASC,KAAMxL,MAAO,EAAGyK,OAAQ,GAGtGiL,IAAKlM,KAAM,KAAMqB,KAAMlG,EAAW2K,mBAAoB/E,SAAUgB,EAASC,KAAMxL,MAAO,EAAGyK,OAAQ,GACjGkL,SAAUnM,KAAM,UAAWqB,KAAMlG,EAAW2K,mBAAoB/E,SAAUgB,EAASC,KAAMxL,MAAO,EAAGyK,OAAQ,GAM3GmL,GAAIpM,KAAM,IAAKqB,KAAMlG,EAAW6K,MAAOjF,SAAUgB,EAASE,MAAOzL,MAAO,EAAGyK,OAAQ,GACnFoL,QAASrM,KAAM,SAAUqB,KAAMlG,EAAW6K,MAAOjF,SAAUgB,EAASgB,KAAMvM,MAAO,EAAGyK,OAAQ,GAC5FqL,KAAMtM,KAAM,MAAOqB,KAAMlG,EAAW6K,MAAOjF,SAAUgB,EAASC,KAAMxL,MAAO,gBAAiByK,OAAQ,GACpGsL,YAAavM,KAAM,aAAcqB,KAAMlG,EAAW6K,MAAOjF,SAAUgB,EAASC,KAAMxL,MAAO,gBAAiByK,OAAQ,GAGlH7J,GAAI4I,KAAM,IAAKqB,KAAMlG,EAAWgL,IAAKpF,SAAUgB,EAASuC,aAAc9N,MAAO,EAAGyK,OAAQ,GACxFuL,MAAOxM,KAAM,OAAQqB,KAAMlG,EAAWgL,IAAKpF,SAAUgB,EAASiD,YAAaxO,MAAO,EAAGyK,OAAQ,GAC7FwL,GAAIzM,KAAM,IAAKqB,KAAMlG,EAAWgL,IAAKpF,SAAUgB,EAASuC,aAAc9N,MAAO,EAAGyK,OAAQ,GACxFyL,OAAQ1M,KAAM,QAASqB,KAAMlG,EAAWgL,IAAKpF,SAAUgB,EAASiD,YAAaxO,MAAO,EAAGyK,OAAQ,IAI7F0L,GACFC,OAAQ,QACRC,OAAQ,OACRC,KAAM,OACNC,MAAO,OACPC,MAAO,OACPC,MAAO,OACPC,KAAM,MACNC,OAAQ,QACRC,UAAW,WAEXC,OAAQ,QACRC,UAAW,WACXC,YAAa,aACbC,OAAQ,QACRC,WAAY,YACZC,YAAa,aACbC,MAAO,OACPC,KAAM,MACNC,MAAO,OACPC,OAAQ,QACRC,QAAS,SACTC,YAAa,aACbC,WAAY,YACZC,UAAW,WACXC,KAAM,MAENC,MAAO,OACPC,KAAM,MACNC,OAAQ,QACRC,OAAQ,QACRC,MAAO,OACPC,OAAQ,QACRC,YAAa,YACbC,eAAgB,gBAChBC,OAAQ,QAERC,QAAS,SACTC,QAAS,SACTC,MAAO,OACPC,KAAM,MAENC,QAAS,MACTC,QAAS,MACTC,UAAW,OACXC,OAAQ,QAERC,QAAS,SACTC,MAAO,OAGT;IAAK,GAAItP,KAAQ2M,GAEf,GAAIA,EAAQ1V,eAAe+I,GAAO,CAChC,GAAIG,GAAOQ,EAAMgM,EAAQ3M,IACrBuP,EAASne,OAAOF,OAAOiP,EAC3BoP,GAAOvP,KAAOA,EACdW,EAAMX,GAAQuP,EAKlB5O,EAAM6O,GAAK7O,EAAMqH,EACjBrH,EAAM8O,MAAQ9O,EAAMsH,MACpBtH,EAAM+O,OAAS/O,EAAM0M,OACrB1M,EAAMgP,GAAKhP,EAAMgK,IACjBhK,EAAMiP,IAAMjP,EAAMgK,IAGlB9X,EAAKkP,SAAWA,EAChBlP,EAAKsI,WAAaA,EAClBtI,EAAK8N,MAAQA,EAMbvQ,EAAOD,QAAU0C,GAKZ,SAASzC,EAAQD,EAASM,GAE/B,YAiBA,SAASqC,GAAMxB,EAAMue,GACnB,KAAMtf,eAAgBuC,IACpB,KAAM,IAAI0G,aAAY,mDAKxBjJ,MAAKe,KAAOA,EACZf,KAAKsf,IAAMA,EAvBb,GAAIpV,GAAOhK,EAAoB,KAC3BoB,EAAS4I,EAAK5I,OACd+I,EAASH,EAAKG,MA6BlB9H,GAAKgd,OAAS,SAAUtZ,GACtB,MAAQA,aAAiB1D,IAQ3BA,EAAKT,UAAUwJ,SAAW,WACxB,GAAIgU,GAAMtf,KAAKsf,QACXE,EAAO,IAcX,IAZIF,EAAI7P,OACN+P,GAAQ,SAAWF,EAAI7P,KAAO,QAE5B6P,EAAIG,WACND,GAAQ,aAAeF,EAAIG,SAAW,QAEpCH,EAAII,cACNF,GAAQ,qBAAuBF,EAAII,YAAc,QAE/CJ,EAAIK,SACNH,GAAQ,gBAAkBF,EAAIK,OAAOrS,KAAK,UAAY,QAEpDgS,EAAIM,SAAU,CAChB,GAAIC,GAAS7f,KAAKe,KAAK8e,QACvBL,IAAQ,aACR,KAAK,GAAIta,GAAI,EAAGA,EAAIoa,EAAIM,SAAS3Y,OAAQ/B,IAAK,CAC5C,GACIwK,GADAoQ,EAAOR,EAAIM,SAAS1a,EAExB,KACEwK,EAAMmQ,EAAOE,KAAKD,GAEpB,MAAO/a,GACL2K,EAAM3K,EAERya,GAAQ,OAASM,EAAO,MACpBpQ,GAASA,YAAenN,KAC1Bid,GAAQ,WAAanV,EAAOhD,OAAOqI,GAAO,MAG9C8P,GAAQ,KAMV,MAJIF,GAAIU,UACNR,GAAQ,aAAeF,EAAIU,QAAQ1S,KAAK,MAAQ,MAG3CkS,GAQTjd,EAAKT,UAAUme,OAAS,WACtB,MAAO3e,GAAOM,MAAM5B,KAAKsf,MAM3B/c,EAAKT,UAAUqE,QAAU5D,EAAKT,UAAUwJ,SAGxCzL,EAAOD,QAAU2C,GAKZ,SAAS1C,GAEd,YAOA,SAAS2C,GAAU0d,GACjB,KAAMlgB,eAAgBwC,IACpB,KAAM,IAAIyG,aAAY,mDAGxBjJ,MAAKkgB,QAAUA,MAOjB1d,EAAUV,UAAUqE,QAAU,WAC5B,MAAOnG,MAAKkgB,SAOd1d,EAAUV,UAAUwJ,SAAW,WAC7B,MAAO,IAAMtL,KAAKkgB,QAAQ5S,KAAK,MAAQ,KAGzCzN,EAAOD,QAAU4C,GAKZ,SAAS3C,EAAQD,EAASM,GAG/B,YA6LA,SAASigB,GAAQC,EAAKlT,EAAKd,GACzB,GAAIlH,GAAGmb,EAAKC,EAAKC,CAElB,IAAQ,GAALrT,EAAO,CACT,GAAKnH,EAAQqa,EAAI,IAMZ,CAGJ,IAFAG,EAAOC,EAAQJ,GACfC,KACInb,EAAE,EAAGA,EAAEqb,EAAKtZ,OAAQ/B,IACvBmb,EAAInb,GAAKib,EAAQI,EAAKrb,GAAIgI,EAAI,EAAGd,EAElC,OAAOiU,GAVP,IADAC,EAAMF,EAAI,GACNlb,EAAE,EAAGA,EAAEkb,EAAInZ,OAAQ/B,IACtBob,EAAMlU,EAASkU,EAAKF,EAAIlb,GAEzB,OAAOob,GAWR,IADAD,KACInb,EAAE,EAAGA,EAAEkb,EAAInZ,OAAQ/B,IACtBmb,EAAInb,GAAKib,EAAQC,EAAIlb,GAAIgI,EAAI,EAAGd,EAEjC,OAAOiU,GAUT,QAASG,GAAQJ,GACf,GAEIlb,GAAGub,EAFHC,EAAIN,EAAInZ,OACR0Z,EAAIP,EAAI,GAAGnZ,OAEXoZ,IACJ,KAAKI,EAAE,EAAKE,EAAFF,EAAKA,IAAK,CAClB,GAAIG,KACJ,KAAK1b,EAAE,EAAKwb,EAAFxb,EAAKA,IACb0b,EAAIlU,KAAK0T,EAAIlb,GAAGub,GAElBJ,GAAI3T,KAAKkU,GAEX,MAAOP,GAxOT,CAAA,GAAInW,GAAOhK,EAAoB,KAE3B2I,EAAa3I,EAAoB,KACjC0I,EAAiB1I,EAAoB,KAErCmC,EAASnC,EAAoB,GAE7BwL,EAAQxB,EAAKwB,MACb3F,EAAUmE,EAAKwB,MAAM3F,OACVmE,GAAKG,OAAOD,SAY3BxK,EAAQihB,YAAc,SAASlV,GAC7B,GAAmB,GAAfA,EAAK1E,OAEP,QAEG,IAAmB,GAAf0E,EAAK1E,OAAa,CAGzB,GAAIyE,GAAQC,EAAK,EAOjB,OANID,aAAiBrJ,KACnBqJ,EAAQA,EAAMvF,WAEXJ,EAAQ2F,KACXA,GAASA,IAEJA,EAIP,MAAOxB,GAAKwB,MAAMmV,YAAYlV,IAUlC/L,EAAQkhB,aAAe,SAASnd,GAC9B,MAAQoC,GAAQpC,IAAOA,YAAatB,IAatCzC,EAAQmhB,QAAU,QAASA,GAAQrV,EAAOU,GACxC,MAAIV,IAA+B,kBAAdA,GAAM1F,IAClB0F,EAAM1F,IAAI,SAAUrC,GACzB,MAAOod,GAAQpd,EAAGyI,KAIbA,EAASV,IAepB9L,EAAQohB,SAAW,QAASA,GAASC,EAAQC,EAAQ9U,GACnD,GAAIsD,GAAK1I,EAAK9B,CAEd,IAAIa,EAAQkb,GACV,GAAIlb,EAAQmb,GAAS,CAEnB,GAAID,EAAOha,QAAUia,EAAOja,OAC1B,KAAM,IAAI2B,GAAeqY,EAAOha,OAAQia,EAAOja,OAKjD,KAFAyI,KACA1I,EAAMia,EAAOha,OACR/B,EAAI,EAAO8B,EAAJ9B,EAASA,IACnBwK,EAAIxK,GAAK8b,EAASC,EAAO/b,GAAIgc,EAAOhc,GAAIkH,OAGvC,CAAA,GAAI8U,YAAkB7e,GAGzB,MADAqN,GAAMsR,EAASC,EAAQC,EAAO/a,UAAWiG,GAClC,GAAI/J,GAAOqN,EAMlB,KAFAA,KACA1I,EAAMia,EAAOha,OACR/B,EAAI,EAAO8B,EAAJ9B,EAASA,IACnBwK,EAAIxK,GAAK8b,EAASC,EAAO/b,GAAIgc,EAAQ9U,OAItC,CAAA,GAAI6U,YAAkB5e,GACzB,MAAI6e,aAAkB7e,IAEpBqN,EAAMsR,EAASC,EAAO9a,UAAW+a,EAAO/a,UAAWiG,GAC5C,GAAI/J,GAAOqN,KAKlBA,EAAMsR,EAASC,EAAO9a,UAAW+a,EAAQ9U,GAClC,GAAI/J,GAAOqN,GAIpB,IAAI3J,EAAQmb,GAIV,IAFAxR,KACA1I,EAAMka,EAAOja,OACR/B,EAAI,EAAO8B,EAAJ9B,EAASA,IACnBwK,EAAIxK,GAAK8b,EAASC,EAAQC,EAAOhc,GAAIkH,OAGpC,CAAA,GAAI8U,YAAkB7e,GAGzB,MADAqN,GAAMsR,EAASC,EAAQC,EAAO/a,UAAWiG,GAClC,GAAI/J,GAAOqN,EAIlBA,GAAMtD,EAAS6U,EAAQC,IAI3B,MAAOxR,IAYT9P,EAAQuhB,OAAS,SAASf,EAAKlT,EAAKd,GAClC,GAAIH,GAAOlG,EAAQqa,GAAO1U,EAAMO,KAAKmU,GAAOA,EAAInU,MAChD,IAAU,EAANiB,EAEF,KAAM,IAAIrE,GAAWqE,EAEvB,IAAIA,GAAOjB,EAAKhF,OAEd,KAAM,IAAI4B,GAAWqE,EAAKjB,EAAKhF,OAGlC,OAAImZ,aAAe/d,GACX,GAAIA,GAAO8d,EAAQC,EAAIja,UAAW+G,EAAKd,IAEvC+T,EAAQC,EAAKlT,EAAKd,IAmE3BxM,EAAQwhB,YAAc,QAASA,GAAa1V,EAAOU,GAC7CV,YAAiBrJ,KACnBqJ,EAAQA,EAAMvF,UAGhB,KAAK,GAAIjB,GAAI,EAAGuH,EAAKf,EAAMzE,OAAYwF,EAAJvH,EAAQA,IAAK,CAC9C,GAAIe,GAAQyF,EAAMxG,EAEda,GAAQE,GACVmb,EAAYnb,EAAOmG,GAGnBA,EAASnG,MAQV,SAASpG,EAAQD,EAASM,GAE/B,YA8DA,SAAS0C,GAAOkd,EAAMze,GACpB,GAAwB,GAApB+G,UAAUnB,QAAmC,GAApBmB,UAAUnB,OACrC,KAAM,IAAI0B,GAAe,QAASP,UAAUnB,OAAQ,EAAG,EAMzD,IAFAoa,GAAehgB,GAAWA,EAAQigB,MAASjgB,EAAQigB,SAE/ClX,EAAS0V,GAGX,MADApd,IAAaod,EACNyB,GAEJ,IAAIxb,EAAQ+Z,IAASA,YAAgBzd,GAExC,MAAOI,GAAWse,QAAQjB,EAAM,SAAU5Q,GACxC,IAAK9E,EAAS8E,GAAO,KAAM,IAAI1I,WAAU,kBAGzC,OADA9D,IAAawM,EACNqS,KAKT,MAAM,IAAI/a,WAAU,6BAoExB,QAAS+D,KACPb,GAAQ,EACRjJ,GAAIiC,GAAWkH,OAAO,GACtB4X,GAAgB,EAChBC,GAAoB,KAStB,QAASlY,KACPG,KACAjJ,GAAIiC,GAAWkH,OAAOF,IAQxB,QAASgY,KACP,MAAOhf,IAAWkH,OAAOF,GAAQ,GAQnC,QAASiY,KAMP,IALAC,GAAaC,GAAUC,KACvBC,GAAQ,GAII,KAALthB,IAAiB,KAALA,IAAmB,MAALA,IAAa+gB,IAE5CjY,GAIF,IAAS,KAAL9I,GACF,KAAY,MAALA,IAAkB,IAALA,IAClB8I,GAKJ,IAAS,IAAL9I,GAGF,YADAmhB,GAAaC,GAAUG,UAKzB,IAAS,MAALvhB,KAAc+gB,GAIhB,MAHAI,IAAaC,GAAUG,UACvBD,GAAQthB,OACR8I,IAKF,IAAI0Y,GAAKxhB,GAAIihB,GACb,IAAiB,GAAbO,EAAGhb,QAAeib,GAAWD,GAK/B,MAJAL,IAAaC,GAAUG,UACvBD,GAAQE,EACR1Y,QACAA,IAKF,IAAI2Y,GAAWzhB,IAIb,MAHAmhB,IAAaC,GAAUG,UACvBD,GAAQthB,OACR8I,IAKF,KAAIC,EAAW/I,IAAf,CAsDA,GAAI0hB,EAAQ1hB,IAAI,CACd,KAAO0hB,EAAQ1hB,KAAMgJ,EAAQhJ,KAC3BshB,IAASthB,GACT8I,GAUF,aANEqY,GADEQ,GAAiBL,IACNF,GAAUG,UAGVH,GAAUQ,QAQ3B,IADAT,GAAaC,GAAUS,QACX,IAAL7hB,IACLshB,IAASthB,GACT8I,GAEF,MAAMgZ,GAAkB,yBAA2BR,GAAQ,KAxEzD,GAHAH,GAAaC,GAAUW,OAGd,KAAL/hB,GACFshB,IAASthB,GACT8I,IAEKE,EAAQhJ,MAEXmhB,GAAaC,GAAUS,aAGtB,CACH,KAAO7Y,EAAQhJ,KACbshB,IAASthB,GACT8I,GAEO,MAAL9I,KACFshB,IAASthB,GACT8I,KAGJ,KAAOE,EAAQhJ,KACbshB,IAASthB,GACT8I,GAIF,IAAS,KAAL9I,IAAiB,KAALA,GAed,IAdAshB,IAASthB,GACT8I,KAES,KAAL9I,IAAiB,KAALA,MACdshB,IAASthB,GACT8I,KAIGE,EAAQhJ,MAEXmhB,GAAaC,GAAUS,SAGlB7Y,EAAQhJ,KACbshB,IAASthB,GACT8I,IAoCR,QAASkZ,KACP,EACEd,WAEc,MAATI,IAOT,QAASW,KACPlB,KAOF,QAASmB,KACPnB,KAUF,QAASW,GAAS1hB,GAChB,MAASA,IAAK,KAAY,KAALA,GAChBA,GAAK,KAAY,KAALA,GACR,KAALA,EASN,QAAS+I,GAAY/I,GACnB,MAASA,IAAK,KAAY,KAALA,GACZ,KAALA,EASN,QAASgJ,GAAShJ,GAChB,MAASA,IAAK,KAAY,KAALA,EAQvB,QAAS8gB,KAEPhX,IAEAoX,GAEA,IAAIhf,GAAOigB,GAIX,IAAa,IAATb,GACF,KAAIH,KAAcC,GAAUG,UAIpBa,EAAY,uBAAyBd,IAGrCQ,EAAkB,oBAAsBR,GAAQ,IAI1D,OAAOpf,GAUT,QAASigB,KACP,GAAIjgB,GAAMmgB,EAAOC,CAEjB,IAAa,IAAThB,GAEF,MAAO,IAAIiB,GAAa,YAAa,YAOvC,KAJa,MAATjB,IAA0B,KAATA,KACnBpf,EAAOsgB,KAGO,MAATlB,IAA0B,KAATA,IACjBe,IAEHA,EAAQ,GAAII,GACRvgB,IACFogB,EAAoB,KAAThB,GACXe,EAAMK,IAAIxgB,EAAMogB,KAIpBpB,IACa,MAATI,IAA0B,KAATA,IAAyB,IAATA,KACnCpf,EAAOsgB,IAEPF,EAAoB,KAAThB,GACXe,EAAMK,IAAIxgB,EAAMogB,GAIpB,OAAID,GACKA,EAGFngB,EAQT,QAASsgB,KAEP,GAAIrB,IAAcC,GAAUQ,QAAmB,YAATN,GACpC,KAAMQ,GAAkB,8FAI1B,OAAOa,KAST,QAASA,KACP,GAAI3T,GAAM9D,EAAMmU,EAAMuD,EAElB1gB,EAAO2gB,GAEX,IAAa,KAATvB,GAAc,CAChB,GAAIpf,YAAgB4gB,IAKlB,MAHA9T,GAAO9M,EAAK8M,KACZgT,IACA3C,EAAOsD,IACA,GAAII,GAAe/T,EAAMqQ,EAE7B,IAAInd,YAAgB8gB,GAIvB,MAFAhB,KACA3C,EAAOsD,IACA,GAAIM,IAAW/gB,EAAMmd,EAEzB,IAAInd,YAAgBghB,MAEvBN,GAAQ,EACR1X,KAEA8D,EAAO9M,EAAKihB,OAAOnU,KACnB9M,EAAKkhB,OAAO1X,QAAQ,SAAU2X,EAAOpa,GAC/Boa,YAAiBP,IACnB5X,EAAKjC,GAASoa,EAAMrU,KAGpB4T,GAAQ,IAIRA,GAGF,MAFAZ,KACA3C,EAAOsD,IACA,GAAIW,GAAuBtU,EAAM9D,EAAMmU,EAIlD,MAAMyC,GAAkB,mDAG1B,MAAO5f,GAaT,QAAS2gB,KAGP,IAFA,GAAI3gB,GAAOqhB,IAEK,KAATjC,IAAc,CAGnB,GAAIkC,GAAOxC,EACXA,IAAoBD,GACpBiB,GAEA,IAAIyB,GAAYvhB,EACZwhB,EAAWH,GAEf,IAAa,KAATjC,GAAc,KAAMQ,GAAkB,gDAE1Cd,IAAoB,KACpBgB,GAEA,IAAI2B,GAAYd,GAEhB3gB,GAAO,GAAI0hB,GAAgBH,EAAWC,EAAUC,GAGhD3C,GAAoBwC,EAGtB,MAAOthB,GAsET,QAASqhB,KACP,GAAIrhB,GAAM2hB,EAAW7U,EAAM8U,EAAIV,CAY/B,KAVAlhB,EAAO6hB,IAEPF,GACEG,KAAM,QACNC,KAAM,UACNC,IAAK,UACLC,IAAK,SACLC,KAAM,YACNC,KAAM,YAED/C,KAASuC,IACd7U,EAAOsS,GACPwC,EAAKD,EAAU7U,GAEfgT,IACAoB,GAAUlhB,EAAM6hB,KAChB7hB,EAAO,GAAIoiB,GAAatV,EAAM8U,EAAIV,EAGpC,OAAOlhB,GAQT,QAAS6hB,KACP,GAAI7hB,GAAM2hB,EAAW7U,EAAM8U,EAAIV,CAS/B,KAPAlhB,EAAOqiB,IAEPV,GACEtT,GAAO,KACPuF,KAAO,MAGFwL,KAASuC,IACd7U,EAAOsS,GACPwC,EAAKD,EAAU7U,GAEfgT,IACAoB,GAAUlhB,EAAMqiB,KAChBriB,EAAO,GAAIoiB,GAAatV,EAAM8U,EAAIV,EAGpC,OAAOlhB,GAQT,QAASqiB,KACP,GAAIriB,GAAMkhB,IAWV,IAPElhB,EAFW,KAATof,GAEK,GAAIiB,GAAa,IAAK,UAItBiC,IAGI,KAATlD,IAAiBN,KAAsBD,GAAgB,CAKzD,IAHAqC,EAAOnX,KAAK/J,GAGI,KAATof,IACLU,IAIEoB,EAAOnX,KAFI,KAATqV,IAAyB,KAATA,IAAyB,KAATA,IAAyB,IAATA,GAEtC,GAAIwB,IAAW,OAIf0B,IAKhB,IAAqB,GAAjBpB,EAAO5c,OAAa,CACtB,GAAIwE,GAAOoY,EAAO,EAClBA,GAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKpY,EAEd9I,EAAO,GAAIuiB,IAAUrB,GAGvB,MAAOlhB,GAQT,QAASsiB,KACP,GAAItiB,GAAM2hB,EAAW7U,EAAM8U,EAAIV,CAQ/B,KANAlhB,EAAOwiB,IAEPb,GACEc,IAAK,MACLC,IAAK,YAEAtD,KAASuC,IACd7U,EAAOsS,GACPwC,EAAKD,EAAU7U,GAEfgT,IACAoB,GAAUlhB,EAAMwiB,KAChBxiB,EAAO,GAAIoiB,GAAatV,EAAM8U,EAAIV,EAGpC,OAAOlhB,GAQT,QAASwiB,KACP,GAAIxiB,GAAM2hB,EAAW7U,EAAM8U,EAAIV,CAa/B,IAXAlhB,EAAO2iB,IAEPhB,GACEiB,IAAK,WACLC,KAAM,cACNC,IAAK,SACLC,KAAM,YACNC,IAAK,MACLC,IAAO,OAGL7D,KAASuC,GACX,KAAOvC,KAASuC,IACd7U,EAAOsS,GACPwC,EAAKD,EAAU7U,GAEfgT,IACAoB,GAAUlhB,EAAM2iB,KAChB3iB,EAAO,GAAIoiB,GAAatV,EAAM8U,EAAIV,EAiBtC,QAZKjC,IAAcC,GAAUQ,QACf,MAATN,IAAkBpf,YAAgBqgB,IAClCpB,IAAcC,GAAUW,UAAY7f,YAAgBqgB,KAC3C,KAATjB,IAAyB,KAATA,MAMnBpf,EAAO,GAAIoiB,GAAa,IAAK,YAAapiB,EAAMwiB,OAG3CxiB,EAQT,QAAS2iB,KACP,GAAI7V,GAAM8U,EAAIV,CAEd,OAAa,KAAT9B,IAAyB,KAATA,IAClBtS,EAAOsS,GACPwC,EAAa,KAAR9U,EAAc,YAAc,aAEjCgT,IACAoB,GAAUyB,KAEH,GAAIP,GAAatV,EAAM8U,EAAIV,IAG7BgC,IAST,QAASA,KACP,GAAIljB,GAAM8M,EAAM8U,EAAIV,CAapB,OAXAlhB,GAAOmjB,KAEM,KAAT/D,IAAyB,MAATA,MAClBtS,EAAOsS,GACPwC,EAAc,KAAR9U,EAAe,MAAQ,SAE7BgT,IACAoB,GAAUlhB,EAAM2iB,KAChB3iB,EAAO,GAAIoiB,GAAatV,EAAM8U,EAAIV,IAG7BlhB,EAQT,QAASmjB,KACP,GAAInjB,GAAM2hB,EAAW7U,EAAM8U,EAAIV,CAS/B,KAPAlhB,EAAOojB,IAEPzB,GACE0B,IAAK,YACLC,IAAM,aAGDlE,KAASuC,IACd7U,EAAOsS,GACPwC,EAAKD,EAAU7U,GAEfkS,IACAkC,GAAUlhB,GAEVA,EAAO,GAAIoiB,GAAatV,EAAM8U,EAAIV,EAGpC,OAAOlhB,GA+BT,QAASojB,KACP,GAAiBG,GAAbrC,IAEJ,IAAIjC,IAAcC,GAAUQ,QAAUhB,GAAYU,IAAQ,CAMxD,GALAmE,EAAU7E,GAAYU,IAEtBJ,IAGa,KAATI,GAAc,CAMhB,GALA8B,KAEAnB,IACAf,IAEa,KAATI,GAIF,IAHA8B,EAAOnX,KAAK4W,KAGI,KAATvB,IACLJ,IACAkC,EAAOnX,KAAK4W,IAIhB,IAAa,KAATvB,GACF,KAAMQ,GAAkB,yBAE1BI,KACAhB,IAKF,MAAO,IAAIuE,GAAQrC,GAGrB,MAAOsC,KAQT,QAASA,KACP,GAAIxjB,GAAM8M,CAEV,OAAImS,KAAcC,GAAUQ,QACvBT,IAAcC,GAAUG,WAAaD,KAASK,KACjD3S,EAAOsS,GAEPJ,IAGAhf,EAAO,GAAI4gB,IAAW9T,GAGtB9M,EAAOyjB,EAAezjB,GACtBA,EAAO0jB,EAAW1jB,IAIb2jB,IAWT,QAASF,GAAgBxC,GACvB,GAAIC,EAEJ,IAAa,KAAT9B,GAAc,CAMhB,GALA8B,KAEAnB,IACAf,IAEa,KAATI,GAIF,IAHA8B,EAAOnX,KAAK4W,KAGI,KAATvB,IACLJ,IACAkC,EAAOnX,KAAK4W,IAIhB,IAAa,KAATvB,GACF,KAAMQ,GAAkB,yBAK1B,OAHAI,KACAhB,IAEO,GAAIgC,IAAaC,EAAQC,GAGlC,MAAOD,GAWT,QAASyC,GAAY1jB,GAGnB,IAFA,GAAIkhB,GAEY,KAAT9B,IAAc,CAMnB,GALA8B,KAEAnB,IACAf,IAEa,KAATI,GAIF,IAHA8B,EAAOnX,KAAK4W,KAGI,KAATvB,IACLJ,IACAkC,EAAOnX,KAAK4W,IAIhB,IAAa,KAATvB,GACF,KAAMQ,GAAkB,yBAE1BI,KACAhB,IAEAhf,EAAO,GAAI8gB,GAAU9gB,EAAMkhB,GAG7B,MAAOlhB,GAST,QAAS2jB,KACP,GAAI3jB,GAAMkF,EAAK0e,CAEf,IAAa,KAATxE,GAAc,CAIhB,IAFAla,EAAM,GACN0e,EAAQ,GACI,IAAL9lB,KAAiB,KAALA,IAAsB,MAAT8lB,IAC9B1e,GAAOpH,GACP8lB,EAAQ9lB,GACR8I,GAIF,IADAoY,IACa,KAATI,GACF,KAAMQ,GAAkB,2BAU1B,OARAZ,KAGAhf,EAAO,GAAIqgB,GAAanb,EAAK,UAG7BlF,EAAO0jB,EAAW1jB,GAKpB,MAAO6jB,KAQT,QAASA,KACP,GAAI9a,GAAOmY,EAAQ4C,EAAMC,CAEzB,IAAa,KAAT3E,GAAc,CAKhB,GAHAW,IACAf,IAEa,KAATI,GAAc,CAEhB,GAAI3U,GAAMuZ,GAEV,IAAa,KAAT5E,GAAc,CAMhB,IAJA0E,EAAO,EACP5C,GAAUzW,GAGM,KAAT2U,IACLJ,IAEAkC,EAAO4C,GAAQE,IACfF,GAGF,IAAa,KAAT1E,GACF,KAAMQ,GAAkB,2BAE1BI,KACAhB,IAGA+E,EAAO7C,EAAO,GAAGvC,MAAMra,MACvB,KAAK,GAAIoC,GAAI,EAAOod,EAAJpd,EAAUA,IACxB,GAAIwa,EAAOxa,GAAGiY,MAAMra,QAAUyf,EAC5B,KAAM7D,GAAY,+BACRgB,EAAOxa,GAAGiY,MAAMra,OAAS,OAASyf,EAAO,IAIvDhb,GAAQ,GAAIkb,GAAU/C,OAEnB,CAEH,GAAa,KAAT9B,GACF,KAAMQ,GAAkB,2BAE1BI,KACAhB,IAEAjW,EAAQ0B,OAKVuV,KACAhB,IACAjW,EAAQ,GAAIkb,MAGd,OAAOlb,GAGT,MAAO3B,KAOT,QAAS4c,KAIP,IAHA,GAAI9C,IAAUT,KACVpc,EAAM,EAEM,KAAT+a,IACLJ,IAGAkC,EAAO7c,GAAOoc,IACdpc,GAGF,OAAO,IAAI4f,GAAU/C,GAQvB,QAAS9Z,KACP,GAAI7I,EAEJ,OAAI0gB,KAAcC,GAAUW,QAE1BthB,EAAS6gB,GACTJ,IAEO,GAAIqB,GAAa9hB,EAAQ,WAG3B2lB,IAQT,QAASA,KACP,GAAIlkB,EAGJ,IAAa,KAATof,GAAc,CAOhB,GALAW,IACAf,IAEAhf,EAAOygB,IAEM,KAATrB,GACF,KAAMQ,GAAkB,yBAK1B,OAHAI,KACAhB,IAEOhf,EAGT,MAAOmkB,KAQT,QAASA,KACP,KAEQvE,GAFK,IAATR,GAEsB,+BAEA,kBAoB5B,QAASgF,KACP,MAAOrd,IAAQqY,GAAM9a,OAAS,EAShC,QAASsb,GAAmByE,GAC1B,GAAIvmB,GAAIsmB,IACJ9kB,EAAQ,GAAIgH,aAAY+d,EAAU,UAAYvmB,EAAI,IAGtD,OAFAwB,GAAM,QAAUxB,EAETwB,EAST,QAAS4gB,GAAamE,GACpB,GAAIvmB,GAAIsmB,IACJ9kB,EAAQ,GAAInB,OAAMkmB,EAAU,UAAYvmB,EAAI,IAGhD,OAFAwB,GAAM,QAAUxB,EAETwB,EAxvCT,GAAIiI,GAAOhK,EAAoB,KAE3ByI,EAAiBzI,EAAoB,KAErCkK,EAAWF,EAAKG,OAAOD,SACvBrE,EAAUD,MAAMC,QAKhB1D,GAJO6H,EAAKwD,MAAMlM,KAGRtB,EAAoB,GACrBA,EAAoB,IAE7BuC,GADOvC,EAAoB,IACdA,EAAoB,KAGjC0mB,EAAY1mB,EAAoB,KAChCsjB,EAAiBtjB,EAAoB,KACrCgjB,EAAYhjB,EAAoB,KAChCmkB,EAAkBnkB,EAAoB,KACtC8iB,EAAe9iB,EAAoB,KACnC6jB,EAAyB7jB,EAAoB,KAC7CujB,EAAYvjB,EAAoB,KAChC6kB,EAAe7kB,EAAoB,KACnCyjB,GAAezjB,EAAoB,KACnCglB,GAAYhlB,EAAoB,KAChCqjB,GAAarjB,EAAoB,KACjCwjB,GAAaxjB,EAAoB,KA+DjC2hB,IACFC,KAAO,EACPE,UAAY,EACZQ,OAAS,EACTH,OAAS,EACTC,QAAU,GAIRJ,IACF+E,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAM,EACNC,KAAK,EAELnC,KAAK,EACLC,KAAK,EACLE,KAAK,EACLC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,KAAK,EACL6B,KAAK,EACLC,MAAM,EACNzB,KAAK,EACLC,KAAM,EACNyB,KAAK,EACLC,KAAK,EACLC,KAAK,EAELnD,MAAM,EACNC,MAAM,EACNC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,MAAM,GAIJ1C,IACFwD,KAAO,EACP5U,IAAM,EACNuF,MAAM,GAGJ8K,MACA3e,GAAa,GACbgH,GAAQ,EACRjJ,GAAI,GACJshB,GAAQ,GACRH,GAAaC,GAAUC,KACvBN,GAAgB,EAChBC,GAAoB,IA2mCxB5hB,GAAOD,QAAUgD,GAKZ,SAAS/C,EAAQD,EAASM,GAE/B,YAqDA,SAAS2C,GAAO9B,GACd,KAAMf,eAAgB6C,IACpB,KAAM,IAAIoG,aACN,mDAGN,MAAMlI,YAAgBF,SACpB,KAAM,IAAI2F,WAAU,oCAGtBxG,MAAKe,KAAOA,EACZf,KAAK6nB,SA9DP,GAAIC,GAAS5nB,EAAoB,GAyEjC2C,GAAOf,UAAUc,MAAQ,WACvB,KAAM,IAAI9B,OAAM,wDAUlB+B,EAAOf,UAAUimB,QAAU,WACzB,KAAM,IAAIjnB,OAAM,4DASlB+B,EAAOf,UAAUie,KAAO,SAAUD,GAEhC,MAAOgI,GAAOhI,GACTiI,QAAQ/nB,KAAKe,MACbgf,KAAK/f,KAAK6nB,QASjBhlB,EAAOf,UAAU+L,IAAM,SAAU4B,GAE/B,MAAOzP,MAAK6nB,MAAMpY,IAQpB5M,EAAOf,UAAU0M,IAAM,SAAUiB,EAAMxJ,GAErC,MAAOjG,MAAK6nB,MAAMpY,GAAQxJ,GAO5BpD,EAAOf,UAAUkmB,OAAS,SAAUvY,SAE3BzP,MAAK6nB,MAAMpY,IAMpB5M,EAAOf,UAAUmmB,MAAQ,WACvB,IAAK,GAAIxY,KAAQzP,MAAK6nB,MAChB7nB,KAAK6nB,MAAMnhB,eAAe+I,UACrBzP,MAAK6nB,MAAMpY,IAKxB5P,EAAOD,QAAUiD,GAKZ,SAAShD,EAAQD,EAASM,GAE/B,YAEAN,GAAQgnB,UAAY1mB,EAAoB,KACxCN,EAAQ4jB,eAAiBtjB,EAAoB,KAC7CN,EAAQsjB,UAAYhjB,EAAoB,KACxCN,EAAQykB,gBAAkBnkB,EAAoB,KAC9CN,EAAQojB,aAAe9iB,EAAoB,KAC3CN,EAAQ6jB,UAAYvjB,EAAoB,KACxCN,EAAQmkB,uBAAyB7jB,EAAoB,KACrDN,EAAQ+jB,aAAezjB,EAAoB,KAC3CN,EAAQsoB,KAAOhoB,EAAoB,KACnCN,EAAQmlB,aAAe7kB,EAAoB,KAC3CN,EAAQslB,UAAYhlB,EAAoB,KACxCN,EAAQ2jB,WAAarjB,EAAoB,KACzCN,EAAQ8jB,WAAaxjB,EAAoB,MAKpC,SAASL,EAAQD,EAASM,GAG/BN,EAAQmF,EAAI7E,EAAoB,KAChCN,EAAQoF,EAAI9E,EAAoB,KAChCN,EAAQ,SAAWM,EAAoB,KACvCN,EAAQsF,EAAIhF,EAAoB,KAChCN,EAAkB,SAAIM,EAAoB,KAC1CN,EAAQyF,IAAMnF,EAAoB,KAClCN,EAAQ2F,KAAOrF,EAAoB,KACnCN,EAAQ4F,MAAQtF,EAAoB,KACpCN,EAAQ6F,OAASvF,EAAoB,KACrCN,EAAQkE,IAAM5D,EAAoB,KAClCN,EAAQ,QAAUM,EAAoB,KACtCN,EAAQ8E,GAAKxE,EAAoB,KACjCN,EAAQiF,GAAK3E,EAAoB,KACjCN,EAAQqF,IAAM/E,EAAoB,KAClCN,EAAQ8F,QAAUxF,EAAoB,KACtCN,EAAQ+F,MAAQzF,EAAoB,KACpCN,EAAQkF,IAAM5E,EAAoB,KAClCN,EAAQ,QAAUM,EAAoB,KACtCN,EAAQgG,QAAU1F,EAAoB,KAGtCN,EAAQkI,IAAM5H,EAAoB,KAClCN,EAAQujB,IAAMjjB,EAAoB,KAClCN,EAAQsM,KAAOhM,EAAoB,KACnCN,EAAQuoB,KAAOjoB,EAAoB,KACnCN,EAAQwoB,OAASloB,EAAoB,KACrCN,EAAQyoB,UAAYnoB,EAAoB,KACxCN,EAAQ0oB,YAAcpoB,EAAoB,KAC1CN,EAAQ2oB,OAASroB,EAAoB,KACrCN,EAAQyD,IAAMnD,EAAoB,KAClCN,EAAQ4oB,IAAMtoB,EAAoB,KAClCN,EAAQ6oB,MAAQvoB,EAAoB,KACpCN,EAAQ8oB,IAAMxoB,EAAoB,KAClCN,EAAQ+oB,IAAMzoB,EAAoB,KAClCN,EAAQ0R,IAAMpR,EAAoB,KAClCN,EAAQgpB,MAAQ1oB,EAAoB,KACpCN,EAAQgmB,IAAM1lB,EAAoB,KAClCN,EAAQipB,SAAW3oB,EAAoB,KACvCN,EAAQkpB,KAAO5oB,EAAoB,KACnCN,EAAQoU,IAAM9T,EAAoB,KAClCN,EAAQwH,MAAQlH,EAAoB,KACpCN,EAAQsE,KAAOhE,EAAoB,KACnCN,EAAQ4D,KAAOtD,EAAoB,KACnCN,EAAQmpB,OAAS7oB,EAAoB,KACrCN,EAAQopB,SAAW9oB,EAAoB,KACvCN,EAAQqpB,WAAa/oB,EAAoB,KACzCN,EAAQspB,UAAYhpB,EAAoB,KACxCN,EAAQupB,KAAOjpB,EAAoB,KAGnCN,EAAQwpB,QAAUlpB,EAAoB,KACtCN,EAAQmH,UAAY7G,EAAoB,KACxCN,EAAe,MAAIM,EAAoB,KACvCN,EAAQypB,OAASnpB,EAAoB,KACrCN,EAAQ0pB,SAAWppB,EAAoB,KACvCN,EAAQ2pB,QAAUrpB,EAAoB,KACtCN,EAAQ4pB,UAAYtpB,EAAoB,KACxCN,EAAQ6pB,QAAUvpB,EAAoB,KAGtCN,EAAQsJ,IAAMhJ,EAAoB,KAClCN,EAAQ8pB,KAAOxpB,EAAoB,KACnCN,EAAQmJ,GAAK7I,EAAoB,KACjCN,EAAQoJ,GAAK9I,EAAoB,KAGjCN,EAAQ+pB,UAAYzpB,EAAoB,KACxCN,EAAQ,WAAaM,EAAoB,KACzCN,EAAQgqB,QAAU1pB,EAAoB,KACtCN,EAAQ8J,MAAQxJ,EAAoB,KACpCN,EAAQqB,OAASf,EAAoB,KACrCN,EAAQsB,OAAShB,EAAoB,KACrCN,EAAQyK,OAASnK,EAAoB,KACrCN,EAAQgQ,KAAO1P,EAAoB,KAGnCN,EAAc,KAAKM,EAAoB,KACvCN,EAAQiqB,KAAQ3pB,EAAoB,KAGpCN,EAAgB,OAAIM,EAAoB,KACxCN,EAAQkqB,IAAM5pB,EAAoB,KAClCN,EAAQmqB,KAAO7pB,EAAoB,KACnCN,EAAQoqB,IAAM9pB,EAAoB,KAClCN,EAAQqqB,QAAU/pB,EAAoB,KACtCN,EAAQsqB,IAAMhqB,EAAoB,KAClCN,EAAQuqB,KAAOjqB,EAAoB,KACnCN,EAAQoN,MAAQ9M,EAAoB,KACpCN,EAAQqP,OAAS/O,EAAoB,KACrCN,EAAQqM,KAAO/L,EAAoB,KACnCN,EAAQwqB,QAAUlqB,EAAoB,KACtCN,EAAQwP,OAASlP,EAAoB,KACrCN,EAAQyqB,UAAYnqB,EAAoB,KACxCN,EAAQ0qB,MAAQpqB,EAAoB,KAGpCN,EAAQ2qB,aAAerqB,EAAoB,KAE3CN,EAAQ4qB,UAAYtqB,EAAoB,KACxCN,EAAQ6qB,aAAevqB,EAAoB,KAC3CN,EAAQ8qB,WAAaxqB,EAAoB,KACzCN,EAAQ+qB,OAASzqB,EAAoB,KACrCN,EAAQgrB,UAAY1qB,EAAoB,KAGxCN,EAAQ8I,IAAMxI,EAAoB,KAClCN,EAAQirB,KAAO3qB,EAAoB,KACnCN,EAAQkrB,OAAS5qB,EAAoB,KACrCN,EAAQqI,IAAM/H,EAAoB,KAClCN,EAAQmrB,KAAO7qB,EAAoB,KACnCN,EAAQorB,IAAM9qB,EAAoB,KAClCN,EAAQqrB,IAAM/qB,EAAoB,KAClCN,EAAQ,OAASM,EAAoB,KAGrCN,EAAQsrB,KAAOhrB,EAAoB,KACnCN,EAAQurB,KAAOjrB,EAAoB,KACnCN,EAAQwrB,KAAOlrB,EAAoB,KACnCN,EAAQsL,MAAQhL,EAAoB,KACpCN,EAAQmL,IAAM7K,EAAoB,KAClCN,EAAQyrB,KAAOnrB,EAAoB,KACnCN,EAAQ0rB,IAAMprB,EAAoB,KAClCN,EAAQ2rB,KAAOrrB,EAAoB,KACnCN,EAAQ4rB,IAAMtrB,EAAoB,KAClCN,EAAQ6rB,KAAOvrB,EAAoB,KACnCN,EAAQ2a,IAAMra,EAAoB,KAClCN,EAAQ8rB,KAAOxrB,EAAoB,KACnCN,EAAQoL,IAAM9K,EAAoB,KAClCN,EAAQ+rB,KAAOzrB,EAAoB,KACnCN,EAAQgsB,IAAM1rB,EAAoB,KAClCN,EAAQisB,KAAO3rB,EAAoB,KAGnCN,EAAQoR,GAAK9Q,EAAoB,KAGjCN,EAAQgC,MAAS1B,EAAoB,KACrCN,EAAQoG,IAAO9F,EAAoB,KACnCN,EAAQuM,QAAWjM,EAAoB,KACvCN,EAAQyH,OAAUnH,EAAoB,KAEtCN,EAAQ,UAAaM,EAAoB,KACzCN,EAAQksB,KAAQ5rB,EAAoB,KACpCN,EAAQ,UAAaM,EAAoB,MAKpC,SAASL,EAAQD,EAASM,GAE/B,YAEA,IAAIuB,GAAYvB,EAAoB,KAChC6rB,EAAiB7rB,EAAoB,KAAK8rB,UAC1C9kB,EAAWhH,EAAoB,GAAGgH,SAClC2Z,EAAc3gB,EAAoB,KAAK2gB,WAU3ChhB,GAAOD,QAAU,SAAUmB,GACzBA,EAAKkrB,OAAOD,UAAY,WAEtB,GAAIrgB,GAAOkV,EAAYzY,WAGnB8jB,EAAYvgB,EAAK1E,OAAS,EAC1BgH,EAAOtC,EAAKugB,EACZhlB,GAAS+G,GACXtC,EAAKugB,GAAaje,EAAO,EAElBA,YAAgBxM,KACvBkK,EAAKugB,GAAaje,EAAK5J,MAAM,GAG/B,KACE,MAAOtD,GAAKkrB,OAAOlf,MAAMhM,EAAM4K,GAEjC,MAAO8E,GACL,KAAMsb,GAAetb,OAQtB,SAAS5Q,EAAQD,EAASM,GAE/B,YAEA,EAAA,GAAImC,GAASnC,EAAoB,EACjBA,GAAoB,KACxBA,EAAoB,GACpBA,EAAoB,GACjBA,EAAoB,GAAGgH,SACxBpB,MAAMC,QASpBlG,EAAOD,QAAU,SAAUmB,GACzBA,EAAKoL,QAAQ6f,UAAY,SAAUroB,EAAGyI,GACpC,GAAwB,GAApBhE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,UAAWP,UAAUnB,OAAQ,EAGnE,IAAIklB,GAAUxoB,YAAatB,GAASsB,EAAEwC,UAAYxC,CAClD,KAAImC,MAAMC,QAAQomB,GAiBhB,KAAM,IAAIprB,GAAKkB,MAAM6G,qBAAqB,UAAW/H,EAAK,UAAU4C,GAhBpE,IAAI+F,MAEA8F,EAAU,SAAUvJ,EAAOiH,GAC7B,MAAIpH,OAAMC,QAAQE,GACTA,EAAMD,IAAI,SAAUkI,EAAOhJ,GAEhC,MADAwE,GAAMwD,GAAOhI,EAAI,EACVsK,EAAQtB,EAAOhB,EAAM,SAI9Bd,GAASnG,EAAOyD,EAAO/F,GAI3B6L,GAAQ2c,EAAS,MAUlB,SAAStsB,EAAQD,EAASM,GAE/B,YAEA,IAAIuB,GAAYvB,EAAoB,KAChCiC,EAAQjC,EAAoB,GAC5BkC,EAAQlC,EAAoB,GAC5BmC,EAASnC,EAAoB,GAC7BgH,EAAWhH,EAAoB,GAAGgH,SAClCnB,EAAUD,MAAMC,OASpBlG,GAAOD,QAAU,SAAUmB,GACzBA,EAAK2I,MAAMsiB,UAAY,WAErB,IAAK,GADDrgB,MACKzG,EAAI,EAAGuH,EAAKrE,UAAUnB,OAAYwF,EAAJvH,EAAQA,IAAK,CAClD,GAAIgE,GAAMd,UAAUlD,EAKpB,IAHIgE,YAAe7G,KAAQ6G,EAAMA,EAAIoD,WAGjCpD,YAAe/G,GACjB+G,EAAIqC,QACJrC,EAAIsC,KAAQtC,EAAIuC,KAAKtF,UAAY,EAAI,EAAI,MAEtC,IAAIJ,EAAQmD,GAAM,CACrB,IAAK,GAAIuX,GAAI,EAAG2L,EAAKljB,EAAIjC,OAAYmlB,EAAJ3L,EAAQA,IACvCvX,EAAIuX,GAAMvX,EAAIuX,YAAchf,GAAayH,EAAIuX,GAAG3V,WAAa5B,EAAIuX,EAGnE,IAAIhV,GAAOvC,EAAIjC,OAAS,EAAIiC,EAAI,GAAK,CACrCA,GAAI,KACJA,EAAI,IAAOuC,EAAO,EAAI,EAAI,MAEnBvE,GAASgC,GAChBA,IAEOA,YAAezH,KACtByH,EAAMA,EAAI4B,WAAa,EAGzBa,GAAKzG,GAAKgE,EAGZ,GAAIwG,GAAM,GAAItN,EAEd,OADAA,GAAM2K,MAAM2C,EAAK/D,GACV+D,KAON,SAAS7P,EAAQD,EAASM,GAE/B,YAEA,EAAA,GAAImC,GAASnC,EAAoB,EACjBA,GAAoB,KACxBA,EAAoB,GACpBA,EAAoB,GACjBA,EAAoB,GAAGgH,SACxBpB,MAAMC,QASpBlG,EAAOD,QAAU,SAAUmB,GACzBA,EAAKiF,IAAIgmB,UAAY,SAAUroB,EAAGyI,GAChC,GAAwB,GAApBhE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIolB,GAAW1oB,YAAatB,GACxB8pB,EAAUE,EAAW1oB,EAAEwC,UAAYxC,CACvC,IAAImC,MAAMC,QAAQomB,GAAU,CAC1B,GAAIziB,MAEA8F,EAAU,SAAUvJ,EAAOiH,GAC7B,MAAIpH,OAAMC,QAAQE,GACTA,EAAMD,IAAI,SAAUkI,EAAOhJ,GAEhC,MADAwE,GAAMwD,GAAOhI,EAAI,EACVsK,EAAQtB,EAAOhB,EAAM,KAIvBd,EAASnG,EAAOyD,EAAO/F,IAI9B+L,EAAMF,EAAQ2c,EAAS,EAC3B,OAAOE,GAAW,GAAIhqB,GAAOqN,GAAOA,EAEpC,KAAM,IAAI3O,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,OAQjE,SAAS9D,EAAQD,EAASM,GAE/B,YAEA,IAAIuB,GAAYvB,EAAoB,KAChC6rB,EAAiB7rB,EAAoB,KAAK8rB,UAC1C9kB,EAAWhH,EAAoB,GAAGgH,SAClC4Z,EAAe5gB,EAAoB,IAAI4gB,aACvCD,EAAc3gB,EAAoB,KAAK2gB,WAU3ChhB,GAAOD,QAAU,SAAUmB,GACzBA,EAAK2H,IAAIsjB,UAAY,WACnB,GAAIrgB,GAAOkV,EAAYzY,UAGvB,IAAmB,GAAfuD,EAAK1E,QAAe6Z,EAAanV,EAAK,IAAK,CAC7C,GAAIuB,GAAMvB,EAAK,EACXzE,GAASgG,GACXvB,EAAK,GAAKuB,EAAM,EAETA,YAAezL,KACtBkK,EAAK,GAAKuB,EAAI7I,MAAM,IAIxB,IACE,MAAOtD,GAAK2H,IAAIqE,MAAMhM,EAAM4K,GAE9B,MAAO8E,GACL,KAAMsb,GAAetb,OAQtB,SAAS5Q,EAAQD,EAASM,GAE/B,YAEA,IAAIuB,GAAYvB,EAAoB,KAChC6rB,EAAiB7rB,EAAoB,KAAK8rB,UAC1C9kB,EAAWhH,EAAoB,GAAGgH,SAClC4Z,EAAe5gB,EAAoB,IAAI4gB,aACvCD,EAAc3gB,EAAoB,KAAK2gB,WAU3ChhB,GAAOD,QAAU,SAAUmB,GACzBA,EAAK8pB,KAAKmB,UAAY,WACpB,GAAIrgB,GAAOkV,EAAYzY,UAGvB,IAAmB,GAAfuD,EAAK1E,QAAe6Z,EAAanV,EAAK,IAAK,CAC7C,GAAIuB,GAAMvB,EAAK,EACXzE,GAASgG,GACXvB,EAAK,GAAKuB,EAAM,EAETA,YAAezL,KACtBkK,EAAK,GAAKuB,EAAI7I,MAAM,IAIxB,IACE,MAAOtD,GAAK8pB,KAAK9d,MAAMhM,EAAM4K,GAE/B,MAAO8E,GACL,KAAMsb,GAAetb,OAQtB,SAAS5Q,EAAQD,EAASM,GAE/B,YAEA,IAAIuB,GAAYvB,EAAoB,KAChC6rB,EAAiB7rB,EAAoB,KAAK8rB,UAC1C9kB,EAAWhH,EAAoB,GAAGgH,SAClC4Z,EAAe5gB,EAAoB,IAAI4gB,aACvCD,EAAc3gB,EAAoB,KAAK2gB,WAU3ChhB,GAAOD,QAAU,SAAUmB,GACzBA,EAAKkH,IAAI+jB,UAAY,WACnB,GAAIrgB,GAAOkV,EAAYzY,UAGvB,IAAmB,GAAfuD,EAAK1E,QAAe6Z,EAAanV,EAAK,IAAK,CAC7C,GAAIuB,GAAMvB,EAAK,EACXzE,GAASgG,GACXvB,EAAK,GAAKuB,EAAM,EAETA,YAAezL,KACtBkK,EAAK,GAAKuB,EAAI7I,MAAM,IAIxB,IACE,MAAOtD,GAAKkH,IAAI8E,MAAMhM,EAAM4K,GAE9B,MAAO8E,GACL,KAAMsb,GAAetb,OAQtB,SAAS5Q,EAAQD,EAASM,GAE/B,YAEA,IAAIosB,GAAYpsB,EAAoB,KAAKosB,UACrCzL,EAAc3gB,EAAoB,KAAK2gB,WAS3ChhB,GAAOD,QAAU,SAAUmB,GACzBA,EAAKiM,MAAMgf,UAAY,WACrB,GAAIrgB,GAAOkV,EAAYzY,WAEnB8jB,EAAYvgB,EAAK1E,OAAS,EAC1BgH,EAAOtC,EAAKugB,EAKhB,OAJKI,GAAUre,IACbtC,EAAKe,MAAK,GAGL3L,EAAKiM,MAAMD,MAAMhM,EAAM4K,MAO7B,SAAS9L,EAAQD,EAASM,GAE/B,YAEA,IAAI6rB,GAAiB7rB,EAAoB,KAAK8rB,UAE1CnL,GADY3gB,EAAoB,KAAKosB,UACvBpsB,EAAoB,KAAK2gB,YAS3ChhB,GAAOD,QAAU,SAAUmB,GACzBA,EAAKqO,OAAO4c,UAAY,WACtB,IACE,MAAOjrB,GAAKqO,OAAOrC,MAAMhM,EAAM8f,EAAYzY,YAE7C,MAAOqI,GACL,KAAMsb,GAAetb,OAQtB,SAAS5Q,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAqBzB,QAASkC,GAAUgD,GACjB,KAAMjG,eAAgBiD,IACpB,KAAM,IAAIgG,aAAY,mDAItBjJ,MAAKiG,MADHA,YAAiBhD,GACNgD,EAAMA,MAGNA,EAmCjB,QAASsmB,GAAY9c,EAAMxJ,GACzB,GAAIumB,GAAQ1mB,MAAMhE,UAAU0qB,KAG1BvpB,GAASnB,UAAU2N,GAFA,kBAAVxJ,GAEkB,WACzB,GAAI0F,IAAQ3L,KAAKiG,OAAOgmB,OAAOO,EAAMjsB,KAAK6H,UAAW,GACrD,OAAO,IAAInF,GAASgD,EAAM8G,MAAM/M,KAAM2L,KAKb,GAAI1I,GAASgD,GA3E5C,GAAIoE,GAASnK,EAAoB,IAsCjC+C,GAASnB,UAAU2qB,KAAO,WACxB,MAAOzsB,MAAKiG,OAQdhD,EAASnB,UAAUqE,QAAU,WAC3B,MAAOnG,MAAKiG,OAOdhD,EAASnB,UAAUwJ,SAAW,WAC5B,MAAOjB,GAAOhD,OAAOrH,KAAKiG,QAuB5BhD,EAASspB,YAAcA,CAKvB,KAAK,GAAIzlB,KAAQ/F,GACXA,EAAK2F,eAAeI,IACtBylB,EAAYzlB,EAAM/F,EAAK+F,GAI3B,OAAO7D,KAMJ,SAASpD,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAC3B4nB,EAAS5nB,EAAoB,IAE7BuC,EAAavC,EAAoB,IAEjCkK,EAAWF,EAAKG,OAAOD,SACvB0W,EAAere,EAAWqe,YAoC9B/f,GAAKgnB,QAAU,SAAkBjI,GAC/B,GAAwB,GAApB1X,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,UAAWP,UAAUnB,OAAQ,EAGnE,IAAImD,EAAS0V,GAEX,MAAOgI,GAAOhI,GAAMiI,QAAQhnB,EAEzB,IAAI+f,EAAahB,GAEpB,MAAOrd,GAAWse,QAAQjB,EAAM,SAAU5Q,GACxC,MAAO4Y,GAAO5Y,GAAM6Y,QAAQhnB,IAK9B,MAAM,IAAIyF,WAAU,wCAQrB,SAAS3G,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAC3B4nB,EAAS5nB,EAAoB,IAE7BuC,EAAavC,EAAoB,IAEjCkK,EAAWF,EAAKG,OAAOD,SACvB0W,EAAere,EAAWqe,YA+B9B/f,GAAKgf,KAAO,SAAgBD,EAAM+H,GAChC,GAAwB,GAApBzf,UAAUnB,QAAmC,GAApBmB,UAAUnB,OACrC,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAAG,EAMnE,IAFA4gB,EAAQA,MAEJzd,EAAS0V,GAEX,MAAOgI,GAAOhI,GACTiI,QAAQhnB,GACRgf,KAAK8H,EAEP,IAAI/G,EAAahB,GAEpB,MAAOrd,GAAWse,QAAQjB,EAAM,SAAU5Q,GACxC,MAAO4Y,GAAO5Y,GACT6Y,QAAQhnB,GAAMgf,KAAK8H,IAK1B,MAAM,IAAIrhB,WAAU,wCAQrB,SAAS3G,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAIwB,GAAOrC,EAAoB,GAoB/Ba,GAAK8oB,KAAO,SAAc6C,GACxB,GAAwB,GAApBtkB,UAAUnB,OACZ,KAAM,IAAIgC,aAAY,+CACZb,UAAUnB,OAAS,yBAG/B,IAAI0C,GAAO,IACX,IAAK+iB,YAAkBtmB,SAA+B,gBAAb,GACvCuD,EAAO+iB,MAEJ,CACH,GAAI5lB,EACJ,KAAKA,IAAQ/F,GAEX,GAAIA,EAAK2F,eAAeI,IAAU4lB,IAAW3rB,EAAK+F,GAAQ,CACxD6C,EAAO7C,CACP,QAmBN,GAAIwY,GAAMve,EAAK2B,WAAWI,KAAK6G,EAC/B,KAAKA,IAAS2V,EACZ,KAAM,IAAIxe,OAAM,8BAAgC6I,EAAO,IAEzD,OAAO,IAAIpH,GAAKxB,EAAMue,MAOrB,SAASzf,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAI+mB,GAAS5nB,EAAoB,GAkCjCa,GAAK6B,MAAQ,WACX,MAAOklB,GAAO/a,MAAM+a,EAAQ1f,cAQ3B,SAASvI,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAE9BuC,GADSvC,EAAoB,GAChBA,EAAoB,KAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YA0B9B/f,GAAK+G,IAAM,QAASA,GAAInE,GACtB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIC,EAASvD,GACX,MAAOiB,MAAKkD,IAAInE,EAGlB,IAAI2G,EAAU3G,GACZ,MAAOiB,MAAKpB,KAAKG,EAAEoF,GAAKpF,EAAEoF,GAAKpF,EAAEqF,GAAKrF,EAAEqF,GAG1C,IAAIrF,YAAalC,GACf,MAAOkC,GAAEmE,KAGX,IAAIgZ,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGmE,EAG/B,IAAIwkB,EAAU3oB,IAAY,OAANA,EAClB,MAAOiB,MAAKkD,IAAInE,EAGlB,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,OAO/D,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAE9BoC,GADSpC,EAAoB,GACtBA,EAAoB,KAC3BuC,EAAavC,EAAoB,IAEjCosB,EAAYpiB,EAAK,WAAWoiB,UAC5BplB,EAAWgD,EAAKhJ,OAAOgG,SACvBkD,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAgC9B/f,GAAKoiB,IAAM,QAASA,GAAIxf,EAAGC,GACzB,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIC,EAASvD,GAAI,CACf,GAAIuD,EAAStD,GAEX,MAAOD,GAAIC,CAER,IAAI0G,EAAU1G,GAEjB,MAAO,IAAI1B,GACPyB,EAAIC,EAAEmF,GACNnF,EAAEoF,IAKV,GAAIsB,EAAU3G,GAAI,CAChB,GAAI2G,EAAU1G,GAEZ,MAAO,IAAI1B,GACPyB,EAAEoF,GAAKnF,EAAEmF,GACTpF,EAAEqF,GAAKpF,EAAEoF,GAGV,IAAI9B,EAAStD,GAEhB,MAAO,IAAI1B,GACPyB,EAAEoF,GAAKnF,EACPD,EAAEqF,IAKV,GAAImB,EAAOxG,IACLwG,EAAOvG,GAAI,CACb,GAAe,MAAXD,EAAEsC,MACJ,KAAM,IAAInF,OAAM,mDAGlB,IAAe,MAAX8C,EAAEqC,MACJ,KAAM,IAAInF,OAAM,mDAGlB,KAAK6C,EAAEoN,UAAUnN,GACf,KAAM,IAAI9C,OAAM,qBAGlB,IAAI4O,GAAM/L,EAAE/B,OAGZ,OAFA8N,GAAIzJ,OAASrC,EAAEqC,MACfyJ,EAAIO,WAAY,EACTP,EAIX,GAAI/L,YAAalC,GASf,MAPIyF,GAAStD,GACXA,EAAInC,EAAUM,QAAQ6B,IAEf0oB,EAAU1oB,IAAY,OAANA,KACvBA,EAAI,GAAInC,GAAUmC,EAAI,EAAI,IAGxBA,YAAanC,GACRkC,EAAEJ,KAAKK,GAITuf,EAAIxf,EAAEmH,WAAYlH,EAE3B,IAAIA,YAAanC,GASf,MAPIyF,GAASvD,GACXA,EAAIlC,EAAUM,QAAQ4B,IAEf2oB,EAAU3oB,IAAY,OAANA,KACvBA,EAAI,GAAIlC,GAAUkC,EAAI,EAAI,IAGxBA,YAAalC,GACRkC,EAAEJ,KAAKK,GAITuf,EAAIxf,EAAGC,EAAEkH,WAGlB,IAAIgW,EAAand,IAAMmd,EAAald,GAClC,MAAOnB,GAAWue,SAASrd,EAAGC,EAAGuf,EAGnC,IAAI/Y,EAASzG,IAAMyG,EAASxG,GAC1B,MAAOD,GAAIC,CAGb,IAAI0oB,EAAU3oB,IAAY,OAANA,EAClB,MAAOwf,IAAKxf,EAAGC,EAEjB,IAAI0oB,EAAU1oB,IAAY,OAANA,EAClB,MAAOuf,GAAIxf,GAAIC,EAGjB,MAAM,IAAI7C,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6C,OAOlF,SAAS/D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BxL,EAAcre,EAAWqe,aACzBxW,EAAYpI,EAAQoI,SA8BxBvJ,GAAKmL,KAAO,QAASA,GAAKvI,GACxB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAIC,EAASvD,GACX,MAAOiB,MAAKsH,KAAKvI,EAGnB,IAAI2G,EAAU3G,GACZ,MAAO,IAAIzB,GACP0C,KAAKsH,KAAKvI,EAAEoF,IACZnE,KAAKsH,KAAKvI,EAAEqF,IAIlB,IAAIrF,YAAalC,GACf,MAAOkC,GAAEuI,MAGX,IAAI4U,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGuI,EAG/B,IAAIogB,EAAU3oB,IAAY,OAANA,EAClB,MAAOiB,MAAKsH,KAAKvI,EAGnB,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YA0B9B/f,GAAKonB,KAAO,QAASA,GAAKxkB,GACxB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAIC,EAASvD,GACX,MAAOA,GAAIA,EAAIA,CAGjB,IAAI2G,EAAU3G,GACZ,MAAO5C,GAAK8nB,SAAS9nB,EAAK8nB,SAASllB,EAAGA,GAAIA,EAG5C,IAAIA,YAAalC,GACf,MAAOkC,GAAEK,MAAML,GAAGK,MAAML,EAG1B,IAAImd,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGwkB,EAG/B,IAAImE,EAAU3oB,IAAY,OAANA,EAClB,MAAOwkB,IAAMxkB,EAGf,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAASmB,GAsJxB,QAAS4rB,GAAgBhpB,EAAGC,GAC1B,GAAIgpB,GAAMhpB,EAAEmF,GAAKnF,EAAEmF,GAAKnF,EAAEoF,GAAKpF,EAAEoF,EACjC,OAAW,IAAP4jB,EACK,GAAI1qB,IACNyB,EAAEoF,GAAKnF,EAAEmF,GAAKpF,EAAEqF,GAAKpF,EAAEoF,IAAM4jB,GAC7BjpB,EAAEqF,GAAKpF,EAAEmF,GAAKpF,EAAEoF,GAAKnF,EAAEoF,IAAM4jB,GAK3B,GAAI1qB,GACE,GAARyB,EAAEoF,GAAYpF,EAAEoF,GAAK,EAAK,EAClB,GAARpF,EAAEqF,GAAYrF,EAAEqF,GAAK,EAAK,GAjKnC,GAAIkB,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAE9BoC,GADSpC,EAAoB,GACtBA,EAAoB,KAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAiC9B/f,GAAKqnB,OAAS,QAASA,GAAOzkB,EAAGC,GAC/B,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,SAAUP,UAAUnB,OAAQ,EAGlE,IAAIC,EAASvD,GAAI,CACf,GAAIuD,EAAStD,GAEX,MAAOD,GAAIC,CAER,IAAI0G,EAAU1G,GAEjB,MAAO+oB,GAAe,GAAIzqB,GAAQyB,EAAG,GAAIC,GAI7C,GAAI0G,EAAU3G,GAAI,CAChB,GAAI2G,EAAU1G,GAEZ,MAAO+oB,GAAehpB,EAAGC,EAEtB,IAAIsD,EAAStD,GAEhB,MAAO+oB,GAAehpB,EAAG,GAAIzB,GAAQ0B,EAAG,IAI5C,GAAID,YAAalC,GASf,MAPIyF,GAAStD,GACXA,EAAInC,EAAUM,QAAQ6B,IAEf0oB,EAAU1oB,IAAY,OAANA,KACvBA,EAAI,GAAInC,GAAUmC,EAAI,EAAI,IAGxBA,YAAanC,GACRkC,EAAEF,IAAIG,GAIRwkB,EAAOzkB,EAAEmH,WAAYlH,EAE9B,IAAIA,YAAanC,GASf,MAPIyF,GAASvD,GACXA,EAAIlC,EAAUM,QAAQ4B,IAEf2oB,EAAU3oB,IAAY,OAANA,KACvBA,EAAI,GAAIlC,GAAUkC,EAAI,EAAI,IAGxBA,YAAalC,GACRkC,EAAEF,IAAIG,GAIRwkB,EAAOzkB,EAAGC,EAAEkH,WAGrB,IAAIX,EAAOxG,IACLuD,EAAStD,GAAI,CACf,GAAI8L,GAAM/L,EAAE/B,OAEZ,OADA8N,GAAIzJ,OAASrC,EACN8L,EAIX,GAAIoR,EAAand,GACf,MAAImd,GAAald,GAKR7C,EAAK8nB,SAASllB,EAAG5C,EAAKmpB,IAAItmB,IAI1BnB,EAAWue,SAASrd,EAAGC,EAAGwkB,EAIrC,IAAItH,EAAald,GAEf,MAAO7C,GAAK8nB,SAASllB,EAAG5C,EAAKmpB,IAAItmB,GAGnC,IAAI0oB,EAAU3oB,IAAY,OAANA,EAClB,MAAOykB,IAAQzkB,EAAGC,EAEpB,IAAI0oB,EAAU1oB,IAAY,OAANA,EAClB,MAAOwkB,GAAOzkB,GAAIC,EAGpB,MAAM,IAAI7C,GAAKkB,MAAM6G,qBAAqB,SAAU/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6C,OA+BrF,SAAS/D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAI0B,GAAavC,EAAoB,GA4BrCa,GAAKsnB,UAAY,SAAmB1kB,EAAGC,GACrC,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,YAAaP,UAAUnB,OAAQ,EAGrE,OAAOxE,GAAWue,SAASrd,EAAGC,EAAG7C,EAAKqnB,SAIxCrnB,EAAK8rB,QAAU,WACb,KAAM,IAAI/rB,OAAM,+CAOf,SAASjB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GACI0B,IADOvC,EAAoB,KACdA,EAAoB,IA4BrCa,GAAKunB,YAAc,SAAqB3kB,EAAGC,GACzC,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,cAAeP,UAAUnB,OAAQ,EAGvE,OAAOxE,GAAWue,SAASrd,EAAGC,EAAG7C,EAAK8nB,WAIxC9nB,EAAK+rB,UAAY,WACf,KAAM,IAAIhsB,OAAM,mDAOf,SAASjB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GACI0B,IADOvC,EAAoB,KACdA,EAAoB,IAyBrCa,GAAKwnB,OAAS,SAAgB5kB,EAAGC,GAC/B,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,SAAUP,UAAUnB,OAAQ,EAGlE,OAAOxE,GAAWue,SAASrd,EAAGC,EAAG7C,EAAKiT,MAIxCjT,EAAKgsB,KAAO,WACV,KAAM,IAAIjsB,OAAM,yCAOf,SAASjB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAE9BuC,GADSvC,EAAoB,GAChBA,EAAoB,KAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YA8B9B/f,GAAKsC,IAAM,QAASA,GAAKM,GACvB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIC,EAASvD,GACX,MAAOiB,MAAKvB,IAAIM,EAGlB,IAAI2G,EAAU3G,GAAI,CAChB,GAAI0F,GAAIzE,KAAKvB,IAAIM,EAAEoF,GACnB,OAAO,IAAI7G,GACPmH,EAAIzE,KAAKmG,IAAIpH,EAAEqF,IACfK,EAAIzE,KAAKoG,IAAIrH,EAAEqF,KAIrB,GAAIrF,YAAalC,GACf,MAAOkC,GAAEN,KAGX,IAAIyd,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGN,EAG/B,IAAIipB,EAAU3oB,IAAY,OAANA,EAClB,MAAOiB,MAAKvB,IAAIM,EAGlB,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,OAO/D,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YA6B9B/f,GAAKynB,IAAM,QAASA,GAAI7kB,GACtB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIC,EAASvD,GACX,MAAQA,GAAI,EAAKiB,KAAK6jB,MAAM9kB,GAAKiB,KAAKsH,KAAKvI,EAG7C,IAAI2G,EAAU3G,GACZ,MAAO,IAAIzB,GACNyB,EAAEoF,GAAK,EAAKnE,KAAK6jB,MAAM9kB,EAAEoF,IAAMnE,KAAKsH,KAAKvI,EAAEoF,IAC3CpF,EAAEqF,GAAK,EAAKpE,KAAK6jB,MAAM9kB,EAAEqF,IAAMpE,KAAKsH,KAAKvI,EAAEqF,IAIlD,IAAIrF,YAAalC,GACf,MAAOkC,GAAEqpB,aAAerpB,EAAEuI,OAASvI,EAAE8kB,OAGvC,IAAI3H,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAG6kB,EAG/B,IAAI8D,EAAU3oB,IAAY,OAANA,EAClB,MAAO6kB,IAAK7kB,EAGd,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,OAO/D,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YA6B9B/f,GAAK0nB,MAAQ,QAASA,GAAM9kB,GAC1B,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,QAASP,UAAUnB,OAAQ,EAGjE,IAAIC,EAASvD,GACX,MAAOiB,MAAK6jB,MAAM9kB,EAGpB,IAAI2G,EAAU3G,GACZ,MAAO,IAAIzB,GACP0C,KAAK6jB,MAAM9kB,EAAEoF,IACbnE,KAAK6jB,MAAM9kB,EAAEqF,IAInB,IAAIrF,YAAalC,GACf,MAAOkC,GAAE8kB,OAGX,IAAI3H,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAG8kB,EAG/B,IAAI6D,EAAU3oB,IAAY,OAANA,EAClB,MAAO8kB,IAAO9kB,EAGhB,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,QAAS/H,EAAK,UAAU4C,OAOjE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA4HzB,QAASksB,GAAQrmB,EAAGC,GAClB,IAAKD,EAAEsmB,UAAYrmB,EAAEqmB,QACnB,KAAM,IAAIpsB,OAAM,qDAKlB,KADA,GAAIqsB,GAAO,GAAI1rB,GAAU,IACjBoF,EAAEumB,UAAU,CAClB,GAAI/jB,GAAIzC,EAAEgf,IAAI/e,EACdD,GAAIC,EACJA,EAAIwC,EAEN,MAAOzC,GAAEqY,GAAGkO,GAAQvmB,EAAEymB,MAAQzmB,EAvIhC,GAAIsD,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BnlB,EAAY+C,EAAKhJ,OAAOiG,UACxB2Z,EAAere,EAAWqe,YA2B9B/f,GAAK2nB,IAAM,QAASA,KAClB,GAEIrf,GAFAzC,EAAIwB,UAAU,GACdvB,EAAIuB,UAAU,EAGlB,IAAwB,GAApBA,UAAUnB,OAAa,CAEzB,GAAIC,EAASN,IAAMM,EAASL,GAAI,CAC9B,IAAKM,EAAUP,KAAOO,EAAUN,GAC9B,KAAM,IAAI/F,OAAM,qDAIlB,MAAY,GAAL+F,GACLwC,EAAIzC,EAAIC,EACRD,EAAIC,EACJA,EAAIwC,CAEN,OAAY,GAAJzC,GAAUA,EAAIA,EAIxB,GAAIka,EAAala,IAAMka,EAAaja,GAClC,MAAOpE,GAAWue,SAASpa,EAAGC,EAAG6hB,EAGnC,IAAI9hB,YAAanF,GASf,MAPIyF,GAASL,GACXA,EAAIpF,EAAUM,QAAQ8E,IAEfylB,EAAUzlB,IAAY,OAANA,KACvBA,EAAI,GAAIpF,GAAUoF,EAAI,EAAI,IAGxBA,YAAapF,GACRwrB,EAAQrmB,EAAGC,GAIb6hB,EAAI9hB,EAAEkE,WAAYjE,EAE3B,IAAIA,YAAapF,GASf,MAPIyF,GAASN,GACXA,EAAInF,EAAUM,QAAQ6E,IAEf0lB,EAAU1lB,IAAY,OAANA,KACvBA,EAAI,GAAInF,GAAUmF,EAAI,EAAI,IAGxBA,YAAanF,GACRwrB,EAAQrmB,EAAGC,GAIb6hB,EAAI9hB,EAAEkE,WAAYjE,EAG3B,IAAIylB,EAAU1lB,IAAY,OAANA,EAClB,MAAO8hB,IAAK9hB,EAAGC,EAEjB,IAAIylB,EAAUzlB,IAAY,OAANA,EAClB,MAAO6hB,GAAI9hB,GAAIC,EAGjB,MAAM,IAAI9F,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU6F,GAAI7F,EAAK,UAAU8F,IAGrF,GAAIuB,UAAUnB,OAAS,EAAG,CAExB,IAAK,GAAI/B,GAAI,EAAGA,EAAIkD,UAAUnB,OAAQ/B,IACpC0B,EAAI8hB,EAAI9hB,EAAGwB,UAAUlD,GAEvB,OAAO0B,GAIT,KAAM,IAAIqC,aAAY,iDA6BrB,SAASpJ,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAsIzB,QAASusB,GAAQ1mB,EAAGC,GAClB,IAAKD,EAAEsmB,UAAYrmB,EAAEqmB,QACnB,KAAM,IAAIpsB,OAAM,qDAGlB,IAAI8F,EAAEwmB,UAAYvmB,EAAEumB,SAClB,MAAO,IAAI3rB,GAAU,EAMvB,KADA,GAAIspB,GAAOnkB,EAAE5C,MAAM6C,IACXA,EAAEumB,UAAU,CAClB,GAAIG,GAAI1mB,CACRA,GAAID,EAAEgf,IAAI2H,GACV3mB,EAAI2mB,EAEN,MAAOxC,GAAKtnB,IAAImD,GAAGkB,MAtJrB,GAAIoC,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BnlB,EAAY+C,EAAKhJ,OAAOiG,UACxB2Z,EAAere,EAAWqe,YA+B9B/f,GAAK4nB,IAAM,QAASA,KAClB,GAEI4E,GAFA3mB,EAAIwB,UAAU,GACdvB,EAAIuB,UAAU,EAGlB,IAAwB,GAApBA,UAAUnB,OAAa,CAEzB,GAAIC,EAASN,IAAMM,EAASL,GAAI,CAC9B,IAAKM,EAAUP,KAAOO,EAAUN,GAC9B,KAAM,IAAI/F,OAAM,qDAGlB,IAAS,GAAL8F,GAAe,GAALC,EACZ,MAAO,EAMT,KADA,GAAIkkB,GAAOnkB,EAAIC,EACH,GAALA,GACL0mB,EAAI1mB,EACJA,EAAID,EAAI2mB,EACR3mB,EAAI2mB,CAEN,OAAO3oB,MAAKkD,IAAIijB,EAAOnkB,GAIzB,GAAIka,EAAala,IAAMka,EAAaja,GAClC,MAAOpE,GAAWue,SAASpa,EAAGC,EAAG8hB,EAGnC,IAAI/hB,YAAanF,GASf,MAPIyF,GAASL,GACXA,EAAIpF,EAAUM,QAAQ8E,IAEfylB,EAAUzlB,IAAY,OAANA,KACvBA,EAAI,GAAIpF,GAAUoF,EAAI,EAAI,IAGxBA,YAAapF,GACR6rB,EAAQ1mB,EAAGC,GAIb8hB,EAAI/hB,EAAEkE,WAAYjE,EAE3B,IAAIA,YAAapF,GASf,MAPIyF,GAASN,GACXA,EAAInF,EAAUM,QAAQ6E,IAEf0lB,EAAU1lB,IAAY,OAANA,KACvBA,EAAI,GAAInF,GAAUmF,EAAI,EAAI,IAGxBA,YAAanF,GACR6rB,EAAQ1mB,EAAGC,GAIb8hB,EAAI/hB,EAAEkE,WAAYjE,EAG3B,IAAIylB,EAAU1lB,IAAY,OAANA,EAClB,MAAO+hB,IAAK/hB,EAAGC,EAEjB,IAAIylB,EAAUzlB,IAAY,OAANA,EAClB,MAAO8hB,GAAI/hB,GAAIC,EAGjB,MAAM,IAAI9F,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU6F,GAAI7F,EAAK,UAAU8F,IAGrF,GAAIuB,UAAUnB,OAAS,EAAG,CAExB,IAAK,GAAI/B,GAAI,EAAGA,EAAIkD,UAAUnB,OAAQ/B,IACpC0B,EAAI+hB,EAAI/hB,EAAGwB,UAAUlD,GAEvB,OAAO0B,GAIT,KAAM,IAAIqC,aAAY,iDAkCrB,SAASpJ,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YAoC9B/f,GAAKuQ,IAAM,QAASA,GAAI3N,EAAGmN,GACzB,GAAwB,GAApB1I,UAAUnB,OAAa,CAEzB,GAAIC,EAASvD,GACX,MAAIA,IAAK,EACAiB,KAAK0M,IAAI3N,GAIT2N,EAAI,GAAIpP,GAAQyB,EAAG,GAI9B,IAAI2G,EAAU3G,GACZ,MAAO,IAAIzB,GACP0C,KAAK0M,IAAI1M,KAAKpB,KAAKG,EAAEoF,GAAKpF,EAAEoF,GAAKpF,EAAEqF,GAAKrF,EAAEqF,KAC1CpE,KAAKsG,MAAMvH,EAAEqF,GAAIrF,EAAEoF,IAIzB,IAAIpF,YAAalC,GACf,MAAIkC,GAAEqpB,aAEG1b,EAAI3N,EAAEmH,YAGNnH,EAAE2B,IAIb,IAAIwb,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAG2N,EAG/B,IAAIgb,EAAU3oB,IAAY,OAANA,EAClB,MAAO2N,IAAK3N,EAGd,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,IAE7D,GAAwB,GAApByE,UAAUnB,OAEjB,MAAOlG,GAAKqnB,OAAO9W,EAAI3N,GAAI2N,EAAIR,GAG/B,MAAM,IAAI/P,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAAG,MAQjE,SAASpH,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YA2B9B/f,GAAK6nB,MAAQ,QAASA,GAAMjlB,GAC1B,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,QAASP,UAAUnB,OAAQ,EAGjE,IAAIC,EAASvD,GACX,MAAIA,IAAK,EACAiB,KAAK0M,IAAI3N,GAAKiB,KAAKW,KAInBqjB,EAAM,GAAI1mB,GAAQyB,EAAG,GAIhC,IAAIA,YAAalC,GACf,MAAIkC,GAAEqpB,aAEGpE,EAAMjlB,EAAEmH,YAGRnH,EAAE2N,KAIb,IAAIhH,EAAU3G,GACZ,MAAO,IAAIzB,GACP0C,KAAK0M,IAAI1M,KAAKpB,KAAKG,EAAEoF,GAAKpF,EAAEoF,GAAKpF,EAAEqF,GAAKrF,EAAEqF,KAAOpE,KAAKW,KACtDX,KAAKsG,MAAMvH,EAAEqF,GAAIrF,EAAEoF,IAAMnE,KAAKW,KAIpC,IAAIub,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGilB,EAG/B,IAAI0D,EAAU3oB,IAAY,OAANA,EAClB,MAAOilB,IAAOjlB,EAGhB,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,QAAS/H,EAAK,UAAU4C,OAOjE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAmHzB,QAASysB,GAAK7pB,EAAGC,GACf,GAAIA,EAAI,EAIN,MAAOD,GAAIC,EAAIgB,KAAK6jB,MAAM9kB,EAAIC,EAE3B,IAAS,GAALA,EACP,MAAOD,EAIP,MAAM,IAAI7C,OAAM,+CA9HpB,GAAIoJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BxL,EAAere,EAAWqe,YAqC9B/f,GAAK6kB,IAAM,QAASA,GAAIjiB,EAAGC,GACzB,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAK/D,IAAIC,EAASvD,IACPuD,EAAStD,GAEX,MAAO4pB,GAAK7pB,EAAGC,EAInB,IAAID,YAAalC,GASf,MAPIyF,GAAStD,GACXA,EAAInC,EAAUM,QAAQ6B,IAEf0oB,EAAU1oB,IAAY,OAANA,KACvBA,EAAI,GAAInC,GAAUmC,EAAI,EAAI,IAGxBA,YAAanC,GACRmC,EAAEwpB,SAAWzpB,EAAIA,EAAEiiB,IAAIhiB,GAIzBgiB,EAAIjiB,EAAEmH,WAAYlH,EAE3B,IAAIA,YAAanC,GASf,MAPIyF,GAASvD,GACXA,EAAIlC,EAAUM,QAAQ4B,IAEf2oB,EAAU3oB,IAAY,OAANA,KACvBA,EAAI,GAAIlC,GAAUkC,EAAI,EAAI,IAGxBA,YAAalC,GACRmC,EAAEwpB,SAAWzpB,EAAIA,EAAEiiB,IAAIhiB,GAIzBgiB,EAAIjiB,EAAGC,EAAEkH,WAKlB,IAAIgW,EAAand,IAAMmd,EAAald,GAClC,MAAOnB,GAAWue,SAASrd,EAAGC,EAAGgiB,EAGnC,IAAI0G,EAAU3oB,IAAY,OAANA,EAClB,MAAOiiB,IAAKjiB,EAAGC,EAEjB,IAAI0oB,EAAU1oB,IAAY,OAANA,EAClB,MAAOgiB,GAAIjiB,GAAIC,EAGjB,MAAM,IAAI7C,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6C,OA8BlF,SAAS/D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAASmB,GAqPxB,QAAS0sB,GAAsB9pB,EAAGC,GAOhC,IAAK,GALD8L,MACA+W,EAAO9iB,EAAEsD,OACTyf,EAAO9iB,EAAE,GAAGqD,OACZhD,EAAMN,EAAE,GAAGsD,OAENoC,EAAI,EAAOod,EAAJpd,EAAUA,IAAK,CAC7BqG,EAAIrG,KACJ,KAAK,GAAI5I,GAAI,EAAOimB,EAAJjmB,EAAUA,IAAK,CAE7B,IAAK,GADDitB,GAAS,KACJrb,EAAI,EAAOpO,EAAJoO,EAASA,IAAK,CAC5B,GAAI3R,GAAIK,EAAK8nB,SAASllB,EAAE0F,GAAGgJ,GAAIzO,EAAEyO,GAAG5R,GACpCitB,GAAqB,OAAXA,EAAmBhtB,EAAIK,EAAKoiB,IAAIuK,EAAQhtB,GAEpDgP,EAAIrG,GAAG5I,GAAKitB,GAIhB,GAAIvgB,GAAoB,IAATsZ,GAAuB,IAATC,CAC7B,OAAOvZ,GAAWuC,EAAI,GAAG,GAAKA,EAWhC,QAASie,GAAsBhqB,EAAGC,GAMhC,IAAK,GAJD8L,MACA+W,EAAO7iB,EAAEqD,OACTyf,EAAO9iB,EAAE,GAAGqD,OAEPxG,EAAI,EAAOimB,EAAJjmB,EAAUA,IAAK,CAE7B,IAAK,GADDitB,GAAS,KACJrkB,EAAI,EAAOod,EAAJpd,EAAUA,IAAK,CAC7B,GAAI3I,GAAIK,EAAK8nB,SAASllB,EAAE0F,GAAIzF,EAAEyF,GAAG5I,GACjCitB,GAAgB,IAANrkB,EAAW3I,EAAIK,EAAKoiB,IAAIuK,EAAQhtB,GAE5CgP,EAAIjP,GAAKitB,EAGX,MAAsB,KAAfhe,EAAIzI,OAAeyI,EAAI,GAAKA,EAWrC,QAASke,GAAsBjqB,EAAGC,GAMhC,IAAK,GAJD8L,MACA+W,EAAO9iB,EAAEsD,OACTyf,EAAO/iB,EAAE,GAAGsD,OAEPoC,EAAI,EAAOod,EAAJpd,EAAUA,IAAK,CAE7B,IAAK,GADDqkB,GAAS,KACJjtB,EAAI,EAAOimB,EAAJjmB,EAAUA,IAAK,CAC7B,GAAIC,GAAIK,EAAK8nB,SAASllB,EAAE0F,GAAG5I,GAAImD,EAAEnD,GACjCitB,GAAgB,IAANjtB,EAAWC,EAAIK,EAAKoiB,IAAIuK,EAAQhtB,GAE5CgP,EAAIrG,GAAKqkB,EAGX,MAAsB,KAAfhe,EAAIzI,OAAeyI,EAAI,GAAKA,EAWrC,QAASme,GAAsBlqB,EAAGC,GAEhC,GAAIoD,GAAMrD,EAAEsD,MAEZ,KAAKD,EACH,KAAM,IAAIlG,OAAM,oCAIlB,KAAK,GADDgtB,GAAM,EACD5oB,EAAI,EAAO8B,EAAJ9B,EAASA,IACvB4oB,EAAM/sB,EAAKoiB,IAAI2K,EAAK/sB,EAAK8nB,SAASllB,EAAEuB,GAAItB,EAAEsB,IAE5C,OAAO4oB,GAUT,QAASC,GAAkBpqB,EAAGC,GAK5B,MAAY,IAARD,EAAEqF,GAEQ,GAARpF,EAAEoF,GAEG,GAAI9G,GAAQyB,EAAEoF,GAAKnF,EAAEmF,GAAI,GAEjB,GAARnF,EAAEmF,GAEF,GAAI7G,GACP,EACAyB,EAAEoF,GAAKnF,EAAEoF,IAKN,GAAI9G,GACPyB,EAAEoF,GAAKnF,EAAEmF,GACTpF,EAAEoF,GAAKnF,EAAEoF,IAIA,GAARrF,EAAEoF,GAEG,GAARnF,EAAEoF,GAEG,GAAI9G,GACP,EACAyB,EAAEqF,GAAKpF,EAAEmF,IAGE,GAARnF,EAAEmF,GAEF,GAAI7G,IAASyB,EAAEqF,GAAKpF,EAAEoF,GAAI,GAI1B,GAAI9G,IACNyB,EAAEqF,GAAKpF,EAAEoF,GACVrF,EAAEqF,GAAKpF,EAAEmF,IAMH,GAARnF,EAAEoF,GAEG,GAAI9G,GACPyB,EAAEoF,GAAKnF,EAAEmF,GACTpF,EAAEqF,GAAKpF,EAAEmF,IAGE,GAARnF,EAAEmF,GAEF,GAAI7G,IACNyB,EAAEqF,GAAKpF,EAAEoF,GACVrF,EAAEoF,GAAKnF,EAAEoF,IAKN,GAAI9G,GACPyB,EAAEoF,GAAKnF,EAAEmF,GAAKpF,EAAEqF,GAAKpF,EAAEoF,GACvBrF,EAAEoF,GAAKnF,EAAEoF,GAAKrF,EAAEqF,GAAKpF,EAAEmF,IAhajC,GAAImB,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BmC,EAASnC,EAAoB,GAC7BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCwL,EAAQxB,EAAKwB,MACbxE,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBvE,EAAUD,MAAMC,QAChBoE,EAAS7H,EAAK6H,MAiClBpJ,GAAK8nB,SAAW,QAASA,GAASllB,EAAGC,GACnC,GAAI8L,EAEJ,IAAwB,GAApBtH,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,WAAYP,UAAUnB,OAAQ,EAGpE,IAAIC,EAASvD,GAAI,CACf,GAAIuD,EAAStD,GAEX,MAAOD,GAAIC,CAER,IAAI0G,EAAU1G,GAEjB,MAAOmqB,GAAkB,GAAI7rB,GAAQyB,EAAG,GAAIC,EAEzC,IAAIuG,EAAOvG,GAGd,MAFA8L,GAAM9L,EAAEhC,QACR8N,EAAIzJ,MAAuB,OAAdyJ,EAAIzJ,MAAkByJ,EAAIM,WAAWrM,GAAM+L,EAAIzJ,MAAQtC,EAC7D+L,EAIX,GAAIpF,EAAU3G,GAAI,CAChB,GAAIuD,EAAStD,GAEX,MAAOmqB,GAAkBpqB,EAAG,GAAIzB,GAAQ0B,EAAG,GAExC,IAAI0G,EAAU1G,GAEjB,MAAOmqB,GAAkBpqB,EAAGC,GAIhC,GAAID,YAAalC,GASf,MAPIyF,GAAStD,GACXA,EAAInC,EAAUM,QAAQ6B,IAEf0oB,EAAU1oB,IAAY,OAANA,KACvBA,EAAI,GAAInC,GAAUmC,EAAI,EAAI,IAGxBA,YAAanC,GACRkC,EAAEK,MAAMJ,GAIVilB,EAASllB,EAAEmH,WAAYlH,EAEhC,IAAIA,YAAanC,GASf,MAPIyF,GAASvD,GACXA,EAAIlC,EAAUM,QAAQ4B,IAEf2oB,EAAU3oB,IAAY,OAANA,KACvBA,EAAI,GAAIlC,GAAUkC,EAAI,EAAI,IAGxBA,YAAalC,GACRkC,EAAEK,MAAMJ,GAIVilB,EAASllB,EAAGC,EAAEkH,WAGvB,IAAIX,EAAOxG,IACLuD,EAAStD,GAGX,MAFA8L,GAAM/L,EAAE/B,QACR8N,EAAIzJ,MAAuB,OAAdyJ,EAAIzJ,MAAkByJ,EAAIM,WAAWpM,GAAM8L,EAAIzJ,MAAQrC,EAC7D8L,CAIX,IAAI3J,EAAQpC,GAAI,CACd,GAAIoC,EAAQnC,GAAI,CAEd,GAAIoqB,GAAQtiB,EAAMO,KAAKtI,GACnBsqB,EAAQviB,EAAMO,KAAKrI,EAEvB,IAAoB,GAAhBoqB,EAAM/mB,OAAa,CACrB,GAAoB,GAAhBgnB,EAAMhnB,OAAa,CAErB,GAAI+mB,EAAM,IAAMC,EAAM,GACpB,KAAM,IAAIC,YAAW,kFAENF,EAAM,GACjB,UAAYC,EAAM,GAClBD,EAAM,GAAK,OAASC,EAAM,GAAK,IAGrC,OAAOJ,GAAsBlqB,EAAGC,GAE7B,GAAoB,GAAhBqqB,EAAMhnB,OAAa,CAE1B,GAAI+mB,EAAM,IAAMC,EAAM,GACpB,KAAM,IAAIC,YAAW,gFAENF,EAAM,GACjB,UAAYC,EAAM,GAAK,IAAMA,EAAM,GAAK,KACxCD,EAAM,GAAK,OAASC,EAAM,GAAK,IAGrC,OAAON,GAAsBhqB,EAAGC,GAGhC,KAAM,IAAI9C,OAAM,wDACAmtB,EAAMhnB,OAAS,gBAG9B,GAAoB,GAAhB+mB,EAAM/mB,OAAa,CAC1B,GAAoB,GAAhBgnB,EAAMhnB,OAAa,CAErB,GAAI+mB,EAAM,IAAMC,EAAM,GACpB,KAAM,IAAIC,YAAW,mFAENF,EAAM,GAAK,IAAMA,EAAM,GAClC,UAAYC,EAAM,GAAK,KACvBD,EAAM,GAAK,OAASC,EAAM,GAAK,IAGrC,OAAOL,GAAsBjqB,EAAGC,GAE7B,GAAoB,GAAhBqqB,EAAMhnB,OAAa,CAE1B,GAAI+mB,EAAM,IAAMC,EAAM,GACpB,KAAM,IAAIC,YAAW,iFAENF,EAAM,GAAK,IAAMA,EAAM,GAClC,UAAYC,EAAM,GAAK,IAAMA,EAAM,GAAK,KACxCD,EAAM,GAAK,OAASC,EAAM,GAAK,IAGrC,OAAOR,GAAsB9pB,EAAGC,GAGhC,KAAM,IAAI9C,OAAM,wDACAmtB,EAAMhnB,OAAS,gBAIjC,KAAM,IAAInG,OAAM,wDACAktB,EAAM/mB,OAAS,gBAG9B,MAAIrD,aAAavB,IAEpBqN,EAAMmZ,EAASllB,EAAGC,EAAEuC,WACbJ,EAAQ2J,GAAO,GAAIrN,GAAOqN,GAAOA,GAIjCjN,EAAWue,SAASrd,EAAGC,EAAGilB,GAIrC,GAAIllB,YAAatB,GACf,MAAIuB,aAAavB,IAEfqN,EAAMmZ,EAASllB,EAAEwC,UAAWvC,EAAEuC,WACvBJ,EAAQ2J,GAAO,GAAIrN,GAAOqN,GAAOA,IAKxCA,EAAMmZ,EAASllB,EAAEwC,UAAWvC,GACrBmC,EAAQ2J,GAAO,GAAIrN,GAAOqN,GAAOA,EAI5C,IAAI3J,EAAQnC,GAEV,MAAOnB,GAAWue,SAASrd,EAAGC,EAAGilB,EAE9B,IAAIjlB,YAAavB,GAEpB,MAAO,IAAIA,GAAOI,EAAWue,SAASrd,EAAGC,EAAEuC,UAAW0iB,GAGxD,IAAIyD,EAAU3oB,IAAY,OAANA,EAClB,MAAOklB,IAAUllB,EAAGC,EAEtB,IAAI0oB,EAAU1oB,IAAY,OAANA,EAClB,MAAOilB,GAASllB,GAAIC,EAGtB,MAAM,IAAI7C,GAAKkB,MAAM6G,qBAAqB,WAAY/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6C,OAiMvF,SAAS/D,EAAQD,EAASM,GAE/B,YAEAL;EAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE7BwL,EAAQxL,EAAoB,KAE5BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BmC,EAASnC,EAAoB,GAG7BgH,GAFahH,EAAoB,IAEtBgK,EAAKhJ,OAAOgG,UACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBvE,EAAUD,MAAMC,OAwClBhF,GAAK+nB,KAAO,QAASA,GAAKnlB,EAAGjD,GAC3B,GAAI0H,UAAUnB,OAAS,GAAKmB,UAAUnB,OAAS,EAC7C,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAAG,EAGlE,IAAIC,EAASvD,GAEX,MAAOiB,MAAKkD,IAAInE,EAGlB,IAAI2G,EAAU3G,GAEZ,MAAOiB,MAAKpB,KAAKG,EAAEoF,GAAKpF,EAAEoF,GAAKpF,EAAEqF,GAAKrF,EAAEqF,GAG1C,IAAIrF,YAAalC,GAEf,MAAOkC,GAAEmE,KAGX,IAAIwkB,EAAU3oB,IAAY,OAANA,EAElB,MAAOiB,MAAKkD,IAAInE,EAGlB,IAAIoC,EAAQpC,GAAI,CAEd,GAAIqqB,GAAQtiB,EAAMO,KAAKtI,EAKvB,IAHS,MAALjD,IACFA,EAAI,GAEc,GAAhBstB,EAAM/mB,OAAa,CAErB,GAAIvG,IAAMwF,OAAOioB,mBAA2B,QAANztB,EAAa,CAEjD,GAAI2R,EAMJ,OALAtR,GAAKoL,QAAQxI,EAAG,SAAUsC,GACxB,GAAImoB,GAAIrtB,EAAK+G,IAAI7B,KACZoM,GAAKtR,EAAKsoB,OAAO+E,EAAG/b,MACvBA,EAAI+b,KAED/b,EAET,GAAI3R,IAAMwF,OAAOmoB,mBAA2B,SAAN3tB,EAAc,CAElD,GAAI2R,EAMJ,OALAtR,GAAKoL,QAAQxI,EAAG,SAAUsC,GACxB,GAAImoB,GAAIrtB,EAAK+G,IAAI7B,KACZoM,GAAKtR,EAAKwoB,QAAQ6E,EAAG/b,MACxBA,EAAI+b,KAED/b,EAET,GAAU,QAAN3R,EACA,MAAOooB,GAAKnlB,EAChB,IAAIuD,EAASxG,KAAO4G,MAAM5G,GAAI,CAE5B,IAAKK,EAAKutB,MAAM5tB,EAAG,GAAI,CAErB,GAAI2R,GAAI,CAIR,OAHAtR,GAAKoL,QAAQxI,EAAG,SAAUsC,GACxBoM,EAAItR,EAAKoiB,IAAIpiB,EAAKiT,IAAIjT,EAAK+G,IAAI7B,GAAQvF,GAAI2R,KAEtCtR,EAAKiT,IAAI3B,EAAG,EAAI3R,GAEzB,MAAOwF,QAAOioB,kBAGhB,KAAM,IAAIrtB,OAAM,+BAEb,GAAoB,GAAhBktB,EAAM/mB,OAAa,CAE1B,GAAS,GAALvG,EAAQ,CAIV,IAAK,GAFDD,MAEKyE,EAAI,EAAGA,EAAIvB,EAAEsD,OAAQ/B,IAG5B,IAAK,GAFDmE,GAAI1F,EAAEuB,GAEDub,EAAI,EAAGA,EAAIpX,EAAEpC,OAAQwZ,IAC5BhgB,EAAEggB,GAAK1f,EAAKoiB,IAAI1iB,EAAEggB,IAAM,EAAG1f,EAAK+G,IAAIuB,EAAEoX,IAG1C,OAAO1f,GAAK2H,IAAIjI,GAElB,GAAIC,GAAKwF,OAAOioB,mBAA2B,QAANztB,EAAa,CAIhD,IAAK,GAFD2R,GAAI,EAECnN,EAAI,EAAGA,EAAIvB,EAAEsD,OAAQ/B,IAAK,CAIjC,IAAK,GAHDqpB,GAAK,EACLllB,EAAI1F,EAAEuB,GAEDub,EAAI,EAAGA,EAAIpX,EAAEpC,OAAQwZ,IAC5B8N,EAAKxtB,EAAKoiB,IAAIoL,EAAIxtB,EAAK+G,IAAIuB,EAAEoX,IAE3B1f,GAAKsoB,OAAOkF,EAAIlc,KAClBA,EAAIkc,GAER,MAAOlc,GAET,GAAU,QAAN3R,EAAa,CAEf,GAAIyR,GAAIpR,EAAKgpB,KAAKhpB,EAAK8nB,SAAS9nB,EAAKspB,UAAU1mB,GAAIA,IAC/C2W,EAAI,CAIR,OAHAvZ,GAAKoL,QAAQgG,EAAG,SAAUlM,GACxBqU,EAAIvZ,EAAKoiB,IAAIld,EAAOqU,KAEfvZ,EAAKyC,KAAK8W,GAEnB,GAAS,GAAL5Z,EAEF,KAAM,IAAII,OAAM,6FAGlB,MAAM,IAAIA,OAAM,gCAIpB,GAAI6C,YAAatB,GACf,MAAOymB,GAAKnlB,EAAEwC,UAAWzF,EAG3B,MAAM,IAAIK,GAAKkB,MAAM6G,qBAAqB,OAAQnF,MAOjD,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAwKzB,QAASytB,GAAY7qB,EAAGC,GAGtB,GAAI6qB,GAAQ1tB,EAAKuQ,IAAI3N,GACjB+qB,EAAQ3tB,EAAK8nB,SAAS4F,EAAO7qB,EACjC,OAAO7C,GAAKsC,IAAIqrB,GA5KlB,GAAIxkB,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BmC,EAASnC,EAAoB,GAG7BwL,GAFaxL,EAAoB,IAEzBgK,EAAKwB,OACbxE,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BvmB,EAAUD,MAAMC,QAChBoB,EAAY+C,EAAKhJ,OAAOiG,UACxBmD,EAAYpI,EAAQoI,SA6BxBvJ,GAAKiT,IAAM,QAASA,GAAIrQ,EAAGC,GACzB,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIC,EAASvD,GAAI,CACf,GAAIuD,EAAStD,GACX,MAAIuD,GAAUvD,IAAMD,GAAK,EAEhBiB,KAAKoP,IAAIrQ,EAAGC,GAGZ4qB,EAAW,GAAItsB,GAAQyB,EAAG,GAAI,GAAIzB,GAAQ0B,EAAG,GAGnD,IAAI0G,EAAU1G,GACjB,MAAO4qB,GAAW,GAAItsB,GAAQyB,EAAG,GAAIC,GAIzC,GAAI0G,EAAU3G,GAAI,CAChB,GAAIuD,EAAStD,GACX,MAAO4qB,GAAW7qB,EAAG,GAAIzB,GAAQ0B,EAAG,GAEjC,IAAI0G,EAAU1G,GACjB,MAAO4qB,GAAW7qB,EAAGC,GAIzB,GAAID,YAAalC,GASf,MAPIyF,GAAStD,GACXA,EAAInC,EAAUM,QAAQ6B,IAEf0oB,EAAU1oB,IAAY,OAANA,KACvBA,EAAI,GAAInC,GAAUmC,EAAI,EAAI,IAGxBA,YAAanC,GACXmC,EAAEuD,cAAgBxD,EAAEqpB,aACfrpB,EAAEqQ,IAAIpQ,GAINoQ,EAAIrQ,EAAEmH,WAAYlH,EAAEkH,YAKtBkJ,EAAIrQ,EAAEmH,WAAYlH,EAI7B,IAAIA,YAAanC,GASf,MAPIyF,GAASvD,GACXA,EAAIlC,EAAUM,QAAQ4B,IAEf2oB,EAAU3oB,IAAY,OAANA,KACvBA,EAAI,GAAIlC,GAAUkC,EAAI,EAAI,IAGxBA,YAAalC,GACXmC,EAAEuD,cAAgBxD,EAAEqpB,aACfrpB,EAAEqQ,IAAIpQ,GAINoQ,EAAIrQ,EAAEmH,WAAYlH,EAAEkH,YAKtBkJ,EAAIrQ,EAAGC,EAAEkH,WAIpB,IAAI/E,EAAQpC,GAAI,CACd,IAAKuD,EAAStD,KAAOuD,EAAUvD,IAAU,EAAJA,EACnC,KAAM,IAAI4C,WAAU,mDACD5C,EAAI,IAGzB,IAAI0W,GAAI5O,EAAMO,KAAKtI,EACnB,IAAgB,GAAZ2W,EAAErT,OACJ,KAAM,IAAInG,OAAM,2CACAwZ,EAAErT,OAAS,eAE7B,IAAIqT,EAAE,IAAMA,EAAE,GACZ,KAAM,IAAIxZ,OAAM,sCACEwZ,EAAE,GAAK,IAAMA,EAAE,GAAK,IAMxC,KAFA,GAAI5K,GAAM3O,EAAKipB,IAAI1P,EAAE,IAAInU,UACrBwoB,EAAKhrB,EACFC,GAAK,GACK,IAAN,EAAJA,KACH8L,EAAM3O,EAAK8nB,SAAS8F,EAAIjf,IAE1B9L,IAAM,EACN+qB,EAAK5tB,EAAK8nB,SAAS8F,EAAIA,EAEzB,OAAOjf,GAEJ,GAAI/L,YAAatB,GACpB,MAAO,IAAIA,GAAO2R,EAAIrQ,EAAEwC,UAAWvC,GAGrC,IAAI0oB,EAAU3oB,IAAY,OAANA,EAClB,MAAOqQ,IAAKrQ,EAAGC,EAEjB,IAAI0oB,EAAU1oB,IAAY,OAANA,EAClB,MAAOoQ,GAAIrQ,GAAIC,EAGjB,MAAM,IAAI7C,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6C,OAsBlF,SAAS/D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA+HzB,QAAS6tB,GAAa3oB,EAAOtE,GAC3B,GAAIjB,GAAIkE,KAAKoP,IAAI,GAAIrS,EACrB,OAAOiD,MAAKwC,MAAMnB,EAAQvF,GAAKA,EAhIjC,GAAIwJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBC,EAAY+C,EAAKhJ,OAAOiG,UACxBmlB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YAiC9B/f,GAAKqG,MAAQ,QAASA,GAAMzD,EAAG0O,GAC7B,GAAwB,GAApBjK,UAAUnB,QAAmC,GAApBmB,UAAUnB,OACrC,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,QAASP,UAAUnB,OAAQ,EAAG,EAGpE,IAASpB,QAALwM,EAAgB,CAElB,GAAInL,EAASvD,GACX,MAAOiB,MAAKwC,MAAMzD,EAGpB,IAAI2G,EAAU3G,GACZ,MAAO,IAAIzB,GACP0C,KAAKwC,MAAMzD,EAAEoF,IACbnE,KAAKwC,MAAMzD,EAAEqF,IAInB,IAAIrF,YAAalC,GACf,MAAOkC,GAAEkrB,gBAAgB,EAG3B,IAAI/N,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGyD,EAG/B,IAAIklB,EAAU3oB,IAAY,OAANA,EAClB,MAAOiB,MAAKwC,MAAMzD,EAGpB,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,QAAS/H,EAAK,UAAU4C,IAIlE,IAAKuD,EAASmL,KAAOlL,EAAUkL,GAAI,CACjC,KAAIA,YAAa5Q,IAGZ,CAAA,GAAI6qB,EAAUja,IAAY,OAAN1O,EACvB,MAAOyD,GAAMzD,GAAI0O,EAGjB,MAAM,IAAI7L,WAAU,2DANpB6L,EAAInK,WAAWmK,EAAElM,WASrB,GAAQ,EAAJkM,GAASA,EAAI,GACf,KAAM,IAAIvR,OAAO,mEAGnB,IAAIoG,EAASvD,GACX,MAAOirB,GAAYjrB,EAAG0O,EAGxB,IAAI/H,EAAU3G,GACZ,MAAO,IAAIzB,GACP0sB,EAAYjrB,EAAEoF,GAAIsJ,GAClBuc,EAAYjrB,EAAEqF,GAAIqJ,GAIxB,IAAI1O,YAAalC,GACf,MAAOkC,GAAEkrB,gBAAgBxc,EAG3B,IAAIyO,EAAand,IAAMmd,EAAazO,GAClC,MAAO5P,GAAWue,SAASrd,EAAG0O,EAAGjL,EAGnC,IAAIklB,EAAU3oB,IAAY,OAANA,EAClB,MAAOyD,IAAOzD,EAAG0O,EAGnB,MAAM,IAAItR,GAAKkB,MAAM6G,qBAAqB,QAAS/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAUsR,OAoBtF,SAASxS,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgB,EAASgJ,EAAKhJ,OACdgG,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YAgC9B/f,GAAKmD,KAAO,QAASA,GAAKP,GACxB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAIC,EAASvD,GACX,MAAOzC,GAAOgD,KAAKP,EAGrB,IAAI2G,EAAU3G,GAAI,CAChB,GAAImE,GAAMlD,KAAKpB,KAAKG,EAAEoF,GAAKpF,EAAEoF,GAAKpF,EAAEqF,GAAKrF,EAAEqF,GAC3C,OAAO,IAAI9G,GAAQyB,EAAEoF,GAAKjB,EAAKnE,EAAEqF,GAAKlB,GAGxC,GAAInE,YAAalC,GACf,MAAO,IAAIA,GAAUkC,EAAEmrB,IAAI,GAG7B,IAAIhO,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGO,EAG/B,IAAIooB,EAAU3oB,IAAY,OAANA,EAClB,MAAOzC,GAAOgD,KAAKP,EAGrB,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YA0B9B/f,GAAKyC,KAAO,QAASA,GAAMG,GACzB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAIC,EAASvD,GACX,MAAIA,IAAK,EACAiB,KAAKpB,KAAKG,GAGVH,EAAK,GAAItB,GAAQyB,EAAG,GAI/B,IAAI2G,EAAU3G,GAAI,CAChB,GAEIoF,GAAIC,EAFJK,EAAIzE,KAAKpB,KAAKG,EAAEoF,GAAKpF,EAAEoF,GAAKpF,EAAEqF,GAAKrF,EAAEqF,GAkBzC,OAbED,GADEpF,EAAEoF,IAAM,EACL,GAAMnE,KAAKpB,KAAK,GAAO6F,EAAI1F,EAAEoF,KAG7BnE,KAAKkD,IAAInE,EAAEqF,IAAMpE,KAAKpB,KAAK,GAAK6F,EAAI1F,EAAEoF,KAI3CC,EADErF,EAAEoF,IAAM,EACL,GAAMnE,KAAKpB,KAAK,GAAO6F,EAAI1F,EAAEoF,KAG7BnE,KAAKkD,IAAInE,EAAEqF,IAAMpE,KAAKpB,KAAK,GAAK6F,EAAI1F,EAAEoF,KAGzCpF,EAAEqF,IAAM,EACH,GAAI9G,GAAQ6G,EAAIC,GAGhB,GAAI9G,GAAQ6G,GAAKC,GAI5B,GAAIrF,YAAalC,GACf,MAAIkC,GAAEqpB,aAEGxpB,EAAKG,EAAEmH,YAGPnH,EAAEH,MAIb,IAAIsd,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGH,EAG/B,IAAI8oB,EAAU3oB,IAAY,OAANA,EAClB,MAAOH,IAAMG,EAGf,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YA4B9B/f,GAAKgoB,OAAS,QAASA,GAAOplB,GAC5B,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,SAAUP,UAAUnB,OAAQ,EAGlE,IAAIC,EAASvD,GACX,MAAOA,GAAIA,CAGb,IAAI2G,EAAU3G,GACZ,MAAO5C,GAAK8nB,SAASllB,EAAGA,EAG1B,IAAIA,YAAalC,GACf,MAAOkC,GAAEK,MAAML,EAGjB,IAAImd,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGolB,EAG/B,IAAIuD,EAAU3oB,IAAY,OAANA,EAClB,MAAOA,GAAIA,CAGb,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,SAAU/H,EAAK,UAAU4C,OAOlE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAE9BoC,GADSpC,EAAoB,GACtBA,EAAoB,KAC3BuC,EAAavC,EAAoB,IAEjCosB,EAAYpiB,EAAK,WAAWoiB,UAC5BplB,EAAWgD,EAAKhJ,OAAOgG,SACvBoD,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAmC9B/f,GAAKioB,SAAW,QAASA,GAASrlB,EAAGC,GACnC,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,WAAYP,UAAUnB,OAAQ,EAGpE,IAAIC,EAASvD,GAAI,CACf,GAAIuD,EAAStD,GAEX,MAAOD,GAAIC,CAER,IAAI0G,EAAU1G,GAEjB,MAAO,IAAI1B,GACPyB,EAAIC,EAAEmF,IACJnF,EAAEoF,QAIP,IAAIsB,EAAU3G,GAAI,CACrB,GAAIuD,EAAStD,GAEX,MAAO,IAAI1B,GACPyB,EAAEoF,GAAKnF,EACPD,EAAEqF,GAGH,IAAIsB,EAAU1G,GAEjB,MAAO,IAAI1B,GACPyB,EAAEoF,GAAKnF,EAAEmF,GACTpF,EAAEqF,GAAKpF,EAAEoF,IAKjB,GAAIrF,YAAalC,GASf,MAPIyF,GAAStD,GACXA,EAAInC,EAAUM,QAAQ6B,IAEf0oB,EAAU1oB,IAAY,OAANA,KACvBA,EAAI,GAAInC,GAAUmC,EAAI,EAAI,IAGxBA,YAAanC,GACRkC,EAAEU,MAAMT,GAIVolB,EAASrlB,EAAEmH,WAAYlH,EAEhC,IAAIA,YAAanC,GASf,MAPIyF,GAASvD,GACXA,EAAIlC,EAAUM,QAAQ4B,IAEf2oB,EAAU3oB,IAAY,OAANA,KACvBA,EAAI,GAAIlC,GAAUkC,EAAI,EAAI,IAGxBA,YAAalC,GACRkC,EAAEU,MAAMT,GAIVolB,EAASrlB,EAAGC,EAAEkH,WAGvB,IAAIX,EAAOxG,IACLwG,EAAOvG,GAAI,CACb,GAAe,MAAXD,EAAEsC,MACJ,KAAM,IAAInF,OAAM,mDAGlB,IAAe,MAAX8C,EAAEqC,MACJ,KAAM,IAAInF,OAAM,mDAGlB,KAAK6C,EAAEoN,UAAUnN,GACf,KAAM,IAAI9C,OAAM,qBAGlB,IAAI4O,GAAM/L,EAAE/B,OAIZ,OAHA8N,GAAIzJ,OAASrC,EAAEqC,MACfyJ,EAAIO,WAAY,EAETP,EAIX,GAAIoR,EAAand,IAAMmd,EAAald,GAClC,MAAOnB,GAAWue,SAASrd,EAAGC,EAAGolB,EAGnC,IAAIsD,EAAU3oB,IAAY,OAANA,EAClB,MAAOqlB,IAAUrlB,EAAGC,EAEtB,IAAI0oB,EAAU1oB,IAAY,OAANA,EAClB,MAAOolB,GAASrlB,GAAIC,EAGtB,MAAM,IAAI7C,GAAKkB,MAAM6G,qBAAqB,WAAY/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6C,OAOvF,SAAS/D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BliB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAyB9B/f,GAAKkoB,WAAa,QAASA,GAAWtlB,GACpC,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,aAAcP,UAAUnB,OAAQ,EAGtE,IAAIC,EAASvD,GACX,OAAQA,CAGV,IAAI2G,EAAU3G,GACZ,MAAO,IAAIzB,IACNyB,EAAEoF,IACFpF,EAAEqF,GAIT,IAAIrF,YAAalC,GACf,MAAOkC,GAAE0pB,KAGX,IAAIljB,EAAOxG,GAAI,CACb,GAAI+L,GAAM/L,EAAE/B,OAEZ,OADA8N,GAAIzJ,OAAStC,EAAEsC,MACRyJ,EAGT,GAAIoR,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGslB,EAG/B,IAAIqD,EAAU3oB,IAAMyG,EAASzG,IAAY,OAANA,EAEjC,MAAyB,aAAjB/C,EAAOM,OAAyB,GAAIO,IAAWkC,IAAKA,CAG9D,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,aAAc/H,EAAK,UAAU4C,KAIzE5C,EAAKguB,MAAQ,WACX,KAAM,IAAIjuB,OAAM,4DAOf,SAASjB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BliB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YA0B9B/f,GAAKmoB,UAAY,QAASA,GAAUvlB,GAClC,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,YAAaP,UAAUnB,OAAQ,EAGrE,IAAIC,EAASvD,GACX,MAAOA,EAGT,IAAI2G,EAAU3G,GACZ,MAAOA,GAAE/B,OAGX,IAAI+B,YAAalC,GACf,MAAOkC,EAGT,IAAIwG,EAAOxG,GACT,MAAOA,GAAE/B,OAGX,IAAIkf,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGulB,EAG/B,IAAIoD,EAAU3oB,IAAMyG,EAASzG,IAAY,OAANA,EAEjC,MAAyB,aAAjB/C,EAAOM,OAAyB,GAAIO,IAAWkC,IAAKA,CAG9D,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,YAAa/H,EAAK,UAAU4C,OAOrE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAkG/B,QAASouB,GAAMpoB,EAAGC,GAQhB,IANA,GAAI0mB,GACA0B,EACA5lB,EACA1F,EAAI,EAAGurB,EAAQ,EACftrB,EAAI,EAAGurB,EAAQ,EAEZtoB,GACLooB,EAAIrqB,KAAK6jB,MAAM7hB,EAAIC,GACnBwC,EAAIzC,EAAIC,EAER0mB,EAAI5pB,EACJA,EAAIurB,EAAQD,EAAItrB,EAChBurB,EAAQ3B,EAERA,EAAI3pB,EACJA,EAAIurB,EAAQF,EAAIrrB,EAChBurB,EAAQ5B,EAER3mB,EAAIC,EACJA,EAAIwC,CAGN,IAAIqG,EAOJ,OALEA,GADM,EAAJ9I,IACMA,GAAIsoB,GAAQC,IAGbvoB,EAAGA,EAAIsoB,EAAQ,EAAGC,GAED,UAAlBvuB,EAAOK,OAAsByO,EAAM,GAAIrN,GAAOqN,GAUxD,QAAS0f,GAASxoB,EAAGC,GASnB,IAPA,GAAI0mB,GACA0B,EACA5lB,EACA8jB,EAAO,GAAI1rB,GAAU,GACrBkC,EAAI,GAAIlC,GAAU,GAAIytB,EAAQ,GAAIztB,GAAU,GAC5CmC,EAAI,GAAInC,GAAU,GAAI0tB,EAAQ,GAAI1tB,GAAU,IAExCoF,EAAEumB,UACR6B,EAAIroB,EAAEnD,IAAIoD,GAAG4hB,QACbpf,EAAIzC,EAAEgf,IAAI/e,GAEV0mB,EAAI5pB,EACJA,EAAIurB,EAAM7qB,MAAM4qB,EAAEjrB,MAAML,IACxBurB,EAAQ3B,EAERA,EAAI3pB,EACJA,EAAIurB,EAAM9qB,MAAM4qB,EAAEjrB,MAAMJ,IACxBurB,EAAQ5B,EAER3mB,EAAIC,EACJA,EAAIwC,CAGN,IAAIqG,EAOJ,OALEA,GADE9I,EAAEqY,GAAGkO,IACAvmB,EAAEymB,MAAO6B,EAAM7B,MAAO8B,EAAM9B,QAG5BzmB,EAAIA,EAAEwmB,SAAmB,EAAR8B,EAAWC,GAEX,UAAlBvuB,EAAOK,OAAsByO,EAAM,GAAIrN,GAAOqN,GA1KxD,GAAIxF,GAAOhK,EAAoB,KAE3BmC,EAASnC,EAAoB,GAC7BuB,EAAYV,EAAKS,KAAKC,UAEtByF,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BnlB,EAAY+C,EAAKhJ,OAAOiG,SAyB5BpG,GAAKooB,KAAO,QAASA,GAAKviB,EAAGC,GAC3B,GAAwB,GAApBuB,UAAUnB,OAAa,CAEzB,GAAIC,EAASN,IAAMM,EAASL,GAAI,CAC9B,IAAKM,EAAUP,KAAOO,EAAUN,GAC9B,KAAM,IAAI/F,OAAM,sDAGlB,OAAOkuB,GAAMpoB,EAAGC,GAGlB,GAAID,YAAanF,GASf,MAPIyF,GAASL,GACXA,EAAIpF,EAAUM,QAAQ8E,IAEfylB,EAAUzlB,IAAY,OAANA,KACvBA,EAAI,GAAIpF,GAAUoF,EAAI,EAAI,IAGxBA,YAAapF,GACR2tB,EAASxoB,EAAGC,GAIdsiB,EAAKviB,EAAEkE,WAAYjE,EAE5B,IAAIA,YAAapF,GASf,MAPIyF,GAASN,GACXA,EAAInF,EAAUM,QAAQ6E,IAEf0lB,EAAU1lB,IAAY,OAANA,KACvBA,EAAI,GAAInF,GAAUmF,EAAI,EAAI,IAGxBA,YAAanF,GACR2tB,EAASxoB,EAAGC,GAIdsiB,EAAKviB,EAAEkE,WAAYjE,EAG5B,IAAIylB,EAAU1lB,IAAY,OAANA,EAClB,MAAOuiB,IAAMviB,EAAGC,EAElB,IAAIylB,EAAUzlB,IAAY,OAANA,EAClB,MAAOsiB,GAAKviB,GAAIC,EAGlB,MAAM,IAAI9F,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU6F,GAAI7F,EAAK,UAAU8F,IAItF,KAAM,IAAIoC,aAAY,0CA0FrB,SAASpJ,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBqB,EAAc2B,EAAKhJ,OAAOqH,YAC1B+jB,EAAYpiB,EAAK,WAAWoiB,UAC5BliB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAmC9B/f,GAAKqoB,QAAU,QAASA,GAAQzlB,EAAGC,GACjC,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,UAAWP,UAAUnB,OAAQ,EAGnE,IAAIC,EAASvD,IAAMuD,EAAStD,GAC1B,MAAO2E,GAAY5E,EAAGC,EAAGhD,EAAOQ,SAAW,EAAKuC,EAAIC,EAAI,EAAI,EAG9D,IAAID,YAAalC,GASf,MAPIyF,GAAStD,GACXA,EAAInC,EAAUM,QAAQ6B,IAEf0oB,EAAU1oB,IAAY,OAANA,KACvBA,EAAI,GAAInC,GAAUmC,EAAI,EAAI,IAGxBA,YAAanC,GACR,GAAIA,GAAUkC,EAAEmrB,IAAIlrB,IAItBwlB,EAAQzlB,EAAEmH,WAAYlH,EAE/B,IAAIA,YAAanC,GASf,MAPIyF,GAASvD,GACXA,EAAIlC,EAAUM,QAAQ4B,IAEf2oB,EAAU3oB,IAAY,OAANA,KACvBA,EAAI,GAAIlC,GAAUkC,EAAI,EAAI,IAGxBA,YAAalC,GACR,GAAIA,GAAUkC,EAAEmrB,IAAIlrB,IAItBwlB,EAAQzlB,EAAGC,EAAEkH,WAGtB,IAAKX,EAAOxG,IAAQwG,EAAOvG,GAAK,CAC9B,IAAKD,EAAEoN,UAAUnN,GACf,KAAM,IAAI9C,OAAM,2CAElB,OAAQ6C,GAAEsC,MAAQrC,EAAEqC,MAAS,EAAMtC,EAAEsC,MAAQrC,EAAEqC,MAAS,GAAK,EAG/D,GAAI6a,EAAand,IAAMmd,EAAald,GAClC,MAAOnB,GAAWue,SAASrd,EAAGC,EAAGwlB,EAKnC,IAAIhf,EAASzG,IAAMyG,EAASxG,GAC1B,MAAQD,GAAIC,EAAK,EAAUA,EAAJD,EAAS,GAAK,CAGvC,IAAI2oB,EAAU3oB,IAAY,OAANA,EAClB,MAAOylB,IAASzlB,EAAGC,EAErB,IAAI0oB,EAAU1oB,IAAY,OAANA,EAClB,MAAOwlB,GAAQzlB,GAAIC,EAGrB,IAAI0G,EAAU3G,IAAM2G,EAAU1G,GAC5B,KAAM,IAAI4C,WAAU,sDAGtB,MAAM,IAAIzF,GAAKkB,MAAM6G,qBAAqB,UAAW/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6C,OAOtF,SAAS/D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAmDzB,QAASsuB,GAAW1rB,EAAGC,GACrB,GAAImC,EAAQpC,GAAI,CACd,GAAIoC,EAAQnC,GAAI,CACd,GAAIoD,GAAMrD,EAAEsD,MACZ,IAAID,IAAQpD,EAAEqD,OAAQ,OAAO,CAE7B,KAAK,GAAI/B,GAAI,EAAO8B,EAAJ9B,EAASA,IACvB,IAAKmqB,EAAW1rB,EAAEuB,GAAItB,EAAEsB,IAAK,OAAO,CAGtC,QAAO,EAGP,OAAO,EAIT,MAAIa,GAAQnC,IACH,EAGA7C,EAAKutB,MAAM3qB,EAAGC,GAvE3B,GAAInB,GAAavC,EAAoB,IAEjC4gB,EAAere,EAAWqe,aAC1B/a,EAAUD,MAAMC,OA6BpBhF,GAAKgG,UAAY,SAAmBpD,EAAGC,GACrC,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,YAAaP,UAAUnB,OAAQ,EAGrE,OAAI6Z,GAAand,IAAMmd,EAAald,GAC3ByrB,EAAW1rB,EAAEwC,UAAWvC,EAAEuC,WAG5BpF,EAAKutB,MAAM3qB,EAAGC,MAuCpB,SAAS/D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBqB,EAAc2B,EAAKhJ,OAAOqH,YAC1B+jB,EAAYpiB,EAAK,WAAWoiB,UAC5BliB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YA6C9B/f,GAAKutB,MAAQ,QAASA,GAAM3qB,EAAGC,GAC7B,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,QAASP,UAAUnB,OAAQ,EAGjE,IAAIC,EAASvD,GAAI,CACf,GAAIuD,EAAStD,GACX,MAAO2E,GAAY5E,EAAGC,EAAGhD,EAAOQ,QAE7B,IAAIkJ,EAAU1G,GACjB,MAAO2E,GAAY5E,EAAGC,EAAEmF,GAAInI,EAAOQ,UAAYmH,EAAY3E,EAAEoF,GAAI,EAAGpI,EAAOQ,SAI/E,GAAIkJ,EAAU3G,GAAI,CAChB,GAAIuD,EAAStD,GACX,MAAO2E,GAAY5E,EAAEoF,GAAInF,EAAGhD,EAAOQ,UAAYmH,EAAY5E,EAAEqF,GAAI,EAAGpI,EAAOQ,QAExE,IAAIkJ,EAAU1G,GACjB,MAAO2E,GAAY5E,EAAEoF,GAAInF,EAAEmF,GAAInI,EAAOQ,UAAYmH,EAAY5E,EAAEqF,GAAIpF,EAAEoF,GAAIpI,EAAOQ,SAIrF,GAAIuC,YAAalC,GASf,MAPIyF,GAAStD,GACXA,EAAInC,EAAUM,QAAQ6B,GAEf0oB,EAAU1oB,KACjBA,EAAI,GAAInC,GAAUmC,EAAI,EAAI,IAGxBA,YAAanC,GACRkC,EAAE2rB,GAAG1rB,GAIP0qB,EAAM3qB,EAAEmH,WAAYlH,EAE7B,IAAIA,YAAanC,GASf,MAPIyF,GAASvD,GACXA,EAAIlC,EAAUM,QAAQ4B,GAEf2oB,EAAU3oB,KACjBA,EAAI,GAAIlC,GAAUkC,EAAI,EAAI,IAGxBA,YAAalC,GACRkC,EAAE2rB,GAAG1rB,GAIP0qB,EAAM3qB,EAAGC,EAAEkH,WAGpB,IAAKX,EAAOxG,IAAQwG,EAAOvG,GAAK,CAC9B,IAAKD,EAAEoN,UAAUnN,GACf,KAAM,IAAI9C,OAAM,2CAElB,OAAO6C,GAAEsC,OAASrC,EAAEqC,MAGtB,GAAI6a,EAAand,IAAMmd,EAAald,GAClC,MAAOnB,GAAWue,SAASrd,EAAGC,EAAG0qB,EAKnC,IAAIlkB,EAASzG,IAAMyG,EAASxG,GAC1B,MAAOD,IAAKC,CAGd,IAAI0oB,EAAU3oB,GACZ,MAAO2qB,IAAO3qB,EAAGC,EAEnB,IAAI0oB,EAAU1oB,GACZ,MAAO0qB,GAAM3qB,GAAIC,EAGnB,IAAU,OAAND,EACF,MAAa,QAANC,CAET,IAAU,OAANA,EACF,MAAa,QAAND,CAGT,IAAUkC,SAANlC,EACF,MAAakC,UAANjC,CAET,IAAUiC,SAANjC,EACF,MAAaiC,UAANlC,CAGT,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,QAAS/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6C,OAOpF,SAAS/D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBqB,EAAc2B,EAAKhJ,OAAOqH,YAC1B+jB,EAAYpiB,EAAK,WAAWoiB,UAC5BliB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAgC9B/f,GAAKsoB,OAAS,QAASA,GAAO1lB,EAAGC,GAC/B,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,SAAUP,UAAUnB,OAAQ,EAGlE,IAAIC,EAASvD,IAAMuD,EAAStD,GAC1B,OAAQ2E,EAAY5E,EAAGC,EAAGhD,EAAOQ,UAAYuC,EAAIC,CAGnD,IAAID,YAAalC,GASf,MAPIyF,GAAStD,GACXA,EAAInC,EAAUM,QAAQ6B,IAEf0oB,EAAU1oB,IAAY,OAANA,KACvBA,EAAI,GAAInC,GAAUmC,EAAI,EAAI,IAGxBA,YAAanC,GACRkC,EAAE4rB,GAAG3rB,GAIPylB,EAAO1lB,EAAEmH,WAAYlH,EAE9B,IAAIA,YAAanC,GASf,MAPIyF,GAASvD,GACXA,EAAIlC,EAAUM,QAAQ4B,IAEf2oB,EAAU3oB,IAAY,OAANA,KACvBA,EAAI,GAAIlC,GAAUkC,EAAI,EAAI,IAGxBA,YAAalC,GACRkC,EAAE4rB,GAAG3rB,GAIPylB,EAAO1lB,EAAGC,EAAEkH,WAGrB,IAAKX,EAAOxG,IAAQwG,EAAOvG,GAAK,CAC9B,IAAKD,EAAEoN,UAAUnN,GACf,KAAM,IAAI9C,OAAM,2CAElB,OAAO6C,GAAEsC,MAAQrC,EAAEqC,MAGrB,GAAI6a,EAAand,IAAMmd,EAAald,GAClC,MAAOnB,GAAWue,SAASrd,EAAGC,EAAGylB,EAKnC,IAAIjf,EAASzG,IAAMyG,EAASxG,GAC1B,MAAOD,GAAIC,CAGb,IAAI0oB,EAAU3oB,IAAY,OAANA,EAClB,MAAO0lB,IAAQ1lB,EAAGC,EAEpB,IAAI0oB,EAAU1oB,IAAY,OAANA,EAClB,MAAOylB,GAAO1lB,GAAIC,EAGpB,IAAI0G,EAAU3G,IAAM2G,EAAU1G,GAC5B,KAAM,IAAI4C,WAAU,sDAGtB,MAAM,IAAIzF,GAAKkB,MAAM6G,qBAAqB,SAAU/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6C,OAOrF,SAAS/D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBqB,EAAc2B,EAAKhJ,OAAOqH,YAC1B+jB,EAAYpiB,EAAK,WAAWoiB,UAC5BliB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YA4B9B/f,GAAKuoB,SAAW,QAASA,GAAS3lB,EAAGC,GACnC,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,WAAYP,UAAUnB,OAAQ,EAGpE,IAAIC,EAASvD,IAAMuD,EAAStD,GAC1B,MAAO2E,GAAY5E,EAAGC,EAAGhD,EAAOQ,UAAYuC,EAAIC,CAGlD,IAAID,YAAalC,GASf,MAPIyF,GAAStD,GACXA,EAAInC,EAAUM,QAAQ6B,IAEf0oB,EAAU1oB,IAAY,OAANA,KACvBA,EAAI,GAAInC,GAAUmC,EAAI,EAAI,IAGxBA,YAAanC,GACRkC,EAAE6rB,IAAI5rB,GAIR0lB,EAAS3lB,EAAEmH,WAAYlH,EAEhC,IAAIA,YAAanC,GASf,MAPIyF,GAASvD,GACXA,EAAIlC,EAAUM,QAAQ4B,IAEf2oB,EAAU3oB,IAAY,OAANA,KACvBA,EAAI,GAAIlC,GAAUkC,EAAI,EAAI,IAGxBA,YAAalC,GACRkC,EAAE6rB,IAAI5rB,GAIR0lB,EAAS3lB,EAAGC,EAAEkH,WAGvB,IAAKX,EAAOxG,IAAQwG,EAAOvG,GAAK,CAC9B,IAAKD,EAAEoN,UAAUnN,GACf,KAAM,IAAI9C,OAAM,2CAElB,OAAO6C,GAAEsC,OAASrC,EAAEqC,MAGtB,GAAI6a,EAAand,IAAMmd,EAAald,GAClC,MAAOnB,GAAWue,SAASrd,EAAGC,EAAG0lB,EAKnC,IAAIlf,EAASzG,IAAMyG,EAASxG,GAC1B,MAAOD,IAAKC,CAGd,IAAI0oB,EAAU3oB,IAAY,OAANA,EAClB,MAAO2lB,IAAU3lB,EAAGC,EAEtB,IAAI0oB,EAAU1oB,IAAY,OAANA,EAClB,MAAO0lB,GAAS3lB,GAAIC,EAGtB,IAAI0G,EAAU3G,IAAM2G,EAAU1G,GAC5B,KAAM,IAAI4C,WAAU,sDAGtB,MAAM,IAAIzF,GAAKkB,MAAM6G,qBAAqB,WAAY/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6C,KAI1F7C,EAAK0uB,SAAW,WACd,KAAM,IAAI3uB,OAAM,+CAOf,SAASjB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBqB,EAAc2B,EAAKhJ,OAAOqH,YAC1B+jB,EAAYpiB,EAAK,WAAWoiB,UAC5BliB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAgC9B/f,GAAKwoB,QAAU,QAASA,GAAQ5lB,EAAGC,GACjC,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,UAAWP,UAAUnB,OAAQ,EAGnE,IAAIC,EAASvD,IAAMuD,EAAStD,GAC1B,OAAQ2E,EAAY5E,EAAGC,EAAGhD,EAAOQ,UAAgBwC,EAAJD,CAG/C,IAAIA,YAAalC,GASf,MAPIyF,GAAStD,GACXA,EAAInC,EAAUM,QAAQ6B,IAEf0oB,EAAU1oB,IAAY,OAANA,KACvBA,EAAI,GAAInC,GAAUmC,EAAI,EAAI,IAGxBA,YAAanC,GACRkC,EAAEsb,GAAGrb,GAIP2lB,EAAQ5lB,EAAEmH,WAAYlH,EAE/B,IAAIA,YAAanC,GASf,MAPIyF,GAASvD,GACXA,EAAIlC,EAAUM,QAAQ4B,IAEf2oB,EAAU3oB,IAAY,OAANA,KACvBA,EAAI,GAAIlC,GAAUkC,EAAI,EAAI,IAGxBA,YAAalC,GACRkC,EAAEsb,GAAGrb,GAIP2lB,EAAQ5lB,EAAGC,EAAEkH,WAGtB,IAAKX,EAAOxG,IAAQwG,EAAOvG,GAAK,CAC9B,IAAKD,EAAEoN,UAAUnN,GACf,KAAM,IAAI9C,OAAM,2CAElB,OAAO6C,GAAEsC,MAAQrC,EAAEqC,MAGrB,GAAI6a,EAAand,IAAMmd,EAAald,GAClC,MAAOnB,GAAWue,SAASrd,EAAGC,EAAG2lB,EAKnC,IAAInf,EAASzG,IAAMyG,EAASxG,GAC1B,MAAWA,GAAJD,CAGT,IAAI2oB,EAAU3oB,IAAY,OAANA,EAClB,MAAO4lB,IAAS5lB,EAAGC,EAErB,IAAI0oB,EAAU1oB,IAAY,OAANA,EAClB,MAAO2lB,GAAQ5lB,GAAIC,EAGrB,IAAI0G,EAAU3G,IAAM2G,EAAU1G,GAC5B,KAAM,IAAI4C,WAAU,sDAGtB,MAAM,IAAIzF,GAAKkB,MAAM6G,qBAAqB,UAAW/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6C,OAOtF,SAAS/D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBqB,EAAc2B,EAAKhJ,OAAOqH,YAC1B+jB,EAAYpiB,EAAK,WAAWoiB,UAC5BliB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YA2B9B/f,GAAKyoB,UAAY,QAASA,GAAU7lB,EAAGC,GACrC,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,YAAaP,UAAUnB,OAAQ,EAGrE,IAAIC,EAASvD,IAAMuD,EAAStD,GAC1B,MAAO2E,GAAY5E,EAAGC,EAAGhD,EAAOQ,UAAgBwC,EAAJD,CAG9C,IAAIA,YAAalC,GASf,MAPIyF,GAAStD,GACXA,EAAInC,EAAUM,QAAQ6B,IAEf0oB,EAAU1oB,IAAY,OAANA,KACvBA,EAAI,GAAInC,GAAUmC,EAAI,EAAI,IAGxBA,YAAanC,GACRkC,EAAE+rB,IAAI9rB,GAIR4lB,EAAU7lB,EAAEmH,WAAYlH,EAEjC,IAAIA,YAAanC,GASf,MAPIyF,GAASvD,GACXA,EAAIlC,EAAUM,QAAQ4B,IAEf2oB,EAAU3oB,IAAY,OAANA,KACvBA,EAAI,GAAIlC,GAAUkC,EAAI,EAAI,IAGxBA,YAAalC,GACRkC,EAAE+rB,IAAI9rB,GAIR4lB,EAAU7lB,EAAGC,EAAEkH,WAGxB,IAAKX,EAAOxG,IAAQwG,EAAOvG,GAAK,CAC9B,IAAKD,EAAEoN,UAAUnN,GACf,KAAM,IAAI9C,OAAM,2CAElB,OAAO6C,GAAEsC,OAASrC,EAAEqC,MAGtB,GAAI6a,EAAand,IAAMmd,EAAald,GAClC,MAAOnB,GAAWue,SAASrd,EAAGC,EAAG4lB,EAKnC,IAAIpf,EAASzG,IAAMyG,EAASxG,GAC1B,MAAYA,IAALD,CAGT,IAAI2oB,EAAU3oB,IAAY,OAANA,EAClB,MAAO6lB,IAAW7lB,EAAGC,EAEvB,IAAI0oB,EAAU1oB,IAAY,OAANA,EAClB,MAAO4lB,GAAU7lB,GAAIC,EAGvB,IAAI0G,EAAU3G,IAAM2G,EAAU1G,GAC5B,KAAM,IAAI4C,WAAU,sDAGtB,MAAM,IAAIzF,GAAKkB,MAAM6G,qBAAqB,YAAa/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6C,KAI3F7C,EAAK4uB,UAAY,WACf,KAAM,IAAI7uB,OAAM,iDAOf,SAASjB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBqB,EAAc2B,EAAKhJ,OAAOqH,YAC1B+jB,EAAYpiB,EAAK,WAAWoiB,UAC5BliB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YA4C9B/f,GAAK0oB,QAAU,QAASA,GAAQ9lB,EAAGC,GACjC,GAAwB,GAApBwE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,UAAWP,UAAUnB,OAAQ,EAGnE,IAAIC,EAASvD,GAAI,CACf,GAAIuD,EAAStD,GACX,OAAQ2E,EAAY5E,EAAGC,EAAGhD,EAAOQ,QAE9B,IAAIkJ,EAAU1G,GACjB,OAAQ2E,EAAY5E,EAAGC,EAAEmF,GAAInI,EAAOQ,WAAamH,EAAY3E,EAAEoF,GAAI,EAAGpI,EAAOQ,SAIjF,GAAIkJ,EAAU3G,GAAI,CAChB,GAAIuD,EAAStD,GACX,OAAQ2E,EAAY5E,EAAEoF,GAAInF,EAAGhD,EAAOQ,WAAamH,EAAY5E,EAAEqF,GAAI,EAAGpI,EAAOQ,QAE1E,IAAIkJ,EAAU1G,GACjB,OAAQ2E,EAAY5E,EAAEoF,GAAInF,EAAEmF,GAAInI,EAAOQ,WAAamH,EAAY5E,EAAEqF,GAAIpF,EAAEoF,GAAIpI,EAAOQ,SAIvF,GAAIuC,YAAalC,GASf,MAPIyF,GAAStD,GACXA,EAAInC,EAAUM,QAAQ6B,GAEf0oB,EAAU1oB,KACjBA,EAAI,GAAInC,GAAUmC,EAAI,EAAI,IAGxBA,YAAanC,IACPkC,EAAE2rB,GAAG1rB,GAIR6lB,EAAQ9lB,EAAEmH,WAAYlH,EAE/B,IAAIA,YAAanC,GASf,MAPIyF,GAASvD,GACXA,EAAIlC,EAAUM,QAAQ4B,GAEf2oB,EAAU3oB,KACjBA,EAAI,GAAIlC,GAAUkC,EAAI,EAAI,IAGxBA,YAAalC,IACPkC,EAAE2rB,GAAG1rB,GAIR6lB,EAAQ9lB,EAAGC,EAAEkH,WAGtB,IAAKX,EAAOxG,IAAQwG,EAAOvG,GAAK,CAC9B,IAAKD,EAAEoN,UAAUnN,GACf,KAAM,IAAI9C,OAAM,2CAElB,OAAO6C,GAAEsC,OAASrC,EAAEqC,MAGtB,GAAI6a,EAAand,IAAMmd,EAAald,GAClC,MAAOnB,GAAWue,SAASrd,EAAGC,EAAG6lB,EAKnC,IAAIrf,EAASzG,IAAMyG,EAASxG,GAC1B,MAAOD,IAAKC,CAGd,IAAI0oB,EAAU3oB,GACZ,MAAO8lB,IAAS9lB,EAAGC,EAErB,IAAI0oB,EAAU1oB,GACZ,MAAO6lB,GAAQ9lB,GAAIC,EAGrB,IAAU,OAAND,EACF,MAAa,QAANC,CAET,IAAU,OAANA,EACF,MAAa,QAAND,CAGT,IAAUkC,SAANlC,EACF,MAAakC,UAANjC,CAET,IAAUiC,SAANjC,EACF,MAAaiC,UAANlC,CAGT,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,UAAW/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6C,OAOtF,SAAS/D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BxL,EAAere,EAAWqe,aAC1BxW,EAAYpI,EAAQoI,SA6BxBvJ,GAAKmI,IAAM,QAASA,GAAIvF,GACtB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIC,EAASvD,GACX,MAAOiB,MAAKsG,MAAM,EAAGvH,EAGvB,IAAI2G,EAAU3G,GACZ,MAAOiB,MAAKsG,MAAMvH,EAAEqF,GAAIrF,EAAEoF,GAG5B,IAAI+X,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGuF,EAG/B,IAAIojB,EAAU3oB,IAAY,OAANA,EAClB,MAAOuF,IAAKvF,EAGd,IAAIA,YAAalC,GAGf,MAAOyH,GAAIvF,EAAEmH,WAGf,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,OAO/D,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCoB,EAAS4I,EAAK5I,OACd4F,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BxL,EAAcre,EAAWqe,aACzBxW,EAAYpI,EAAQoI,SA2BxBvJ,GAAK2oB,KAAO,QAASA,GAAK/lB,GACxB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,OAAIC,GAASvD,GACJA,EAGLA,YAAalC,GACR,GAAIA,GAAUkC,GAGnB2G,EAAU3G,GACL,GAAIzB,GAAQyB,EAAEoF,IAAKpF,EAAEqF,IAG1B8X,EAAand,GACRlB,EAAWse,QAAQpd,EAAG+lB,GAG3B4C,EAAU3oB,IAAY,OAANA,GACVA,EAIHrC,EAAOM,MAAM+B,MAOnB,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCoB,EAAS4I,EAAK5I,OACd4F,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BxL,EAAere,EAAWqe,aAC1BxW,EAAYpI,EAAQoI,SA6BxBvJ,GAAKgI,GAAK,QAASA,GAAGpF,GACpB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,KAAMP,UAAUnB,OAAQ,EAG9D,OAAIC,GAASvD,GACJA,EAGLA,YAAalC,GACR,GAAIA,GAAUkC,GAGnB2G,EAAU3G,GACLA,EAAEoF,GAGP+X,EAAand,GACRlB,EAAWse,QAAQpd,EAAGoF,GAG3BujB,EAAU3oB,IAAY,OAANA,GACVA,EAIHrC,EAAOM,MAAM+B,MAOnB,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BxL,EAAcre,EAAWqe,aACzBxW,EAAYpI,EAAQoI,SA6BxBvJ,GAAKiI,GAAK,QAASA,GAAGrF,GACpB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,KAAMP,UAAUnB,OAAQ,EAG9D,OAAIC,GAASvD,GACJ,EAGLA,YAAalC,GACR,GAAIA,GAAU,GAGnB6I,EAAU3G,GACLA,EAAEqF,GAGP8X,EAAand,GACRlB,EAAWse,QAAQpd,EAAGqF,GAG3BsjB,EAAU3oB,IAAY,OAANA,EACX,EAIF,KAON,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAG3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjC4gB,EAAere,EAAWqe,aAC1B5Z,EAAWgD,EAAKhJ,OAAOgG,SACvBkD,EAAWF,EAAKG,OAAOD,SACvBkiB,EAAYpiB,EAAK,WAAWoiB,SA2BhCvrB,GAAK4oB,UAAY,QAASA,GAAU1jB,GAClC,GAAImC,UAAUnB,OAAS,EACrB,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,YAAaP,UAAUnB,OAAQ,EAAG,EAGxE,IAAKhB,YAAiBxE,IAAcyF,EAASjB,IAAUmE,EAASnE,GAC9D,MAAO,IAAIxE,GAAUwE,EAGvB,IAAIqmB,EAAUrmB,IAAoB,OAAVA,EACtB,MAAO,IAAIxE,IAAWwE,EAGxB,IAAI6a,EAAa7a,GACf,MAAOxD,GAAWse,QAAQ9a,EAAO0jB,EAGnC,IAAwB,GAApBvhB,UAAUnB,OACZ,MAAO,IAAIxF,GAAU,EAGvB,MAAM,IAAIV,GAAKkB,MAAM6G,qBAAqB,YAAa/H,EAAK,UAAUkF,OAOrE,SAASpG,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjC4gB,EAAere,EAAWqe,aAC1B5Z,EAAWgD,EAAKhJ,OAAOgG,SACvBkD,EAAWF,EAAKG,OAAOD,QA6B3BrJ,GAAK,WAAa,QAAS6uB,GAAM3pB,GAC/B,GAAwB,GAApBmC,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,UAAWP,UAAUnB,OAAQ,EAAG,EAGtE,IAAc,SAAVhB,GAAoBA,KAAU,EAChC,OAAO,CAGT,IAAc,UAAVA,GAAqBA,KAAU,GAAmB,OAAVA,EAC1C,OAAO,CAGT,IAAIA,YAAiBI,SACnB,MAAgB,IAATJ,CAGT,IAAIiB,EAASjB,GACX,MAAkB,KAAVA,CAGV,IAAIA,YAAiBxE,GACnB,OAAQwE,EAAMmnB,QAGhB,IAAIhjB,EAASnE,GAAQ,CAEnB,GAAI4pB,GAAQ5pB,EAAM6pB,aAClB,IAAc,SAAVD,EACF,OAAO,CAEJ,IAAc,UAAVA,EACP,OAAO,CAIT,IAAI5rB,GAAMiC,OAAOD,EACjB,IAAa,IAATA,IAAgBqB,MAAMrD,GACxB,MAAgB,KAARA,EAIZ,GAAI6c,EAAa7a,GACf,MAAOxD,GAAWse,QAAQ9a,EAAO2pB,EAGnC,MAAM,IAAI3mB,aAAYhD,EAAMqF,WAAa,2BAOxC,SAASzL,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC4gB,EAAere,EAAWqe,aAC1B5Z,EAAWgD,EAAKhJ,OAAOgG,SACvBkD,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,SAwCxBvJ,GAAK6oB,QAAU,QAASA,KACtB,OAAQxhB,UAAUnB,QAChB,IAAK,GAEH,MAAO,IAAI/E,GAAQ,EAAG,EAExB,KAAK,GAEH,GAAIgH,GAAMd,UAAU,EAEpB,IAAIlB,EAASgC,GACX,MAAO,IAAIhH,GAAQgH,EAAK,EAG1B,IAAIA,YAAezH,GAEjB,MAAO,IAAIS,GAAQgH,EAAI4B,WAAY,EAGrC,IAAIR,EAAUpB,GAEZ,MAAOA,GAAItH,OAGb,IAAIwI,EAASlB,GAAM,CACjB,GAAIzI,GAAIyB,EAAQU,MAAMsG,EACtB,IAAIzI,EACF,MAAOA,EAGP,MAAM,IAAIwI,aAAY,WAAaC,EAAM,gCAI7C,GAAI4X,EAAa5X,GACf,MAAOzG,GAAWse,QAAQ7X,EAAK0gB,EAGjC,IAAmB,gBAAR1gB,GAAkB,CAC3B,GAAG,MAAQA,IAAO,MAAQA,GACxB,MAAO,IAAIhH,GAAQgH,EAAIH,GAAIG,EAAIF,GAC1B,IAAI,KAAOE,IAAO,OAASA,GAChC,MAAOhH,GAAQkH,UAAUF,EAAIG,EAAGH,EAAIjE,KAIxC,KAAM,IAAIuB,WAAU,+EAEtB,KAAK,GAEH,GAAIuC,GAAKX,UAAU,GACfY,EAAKZ,UAAU,EAYnB,IATIW,YAActH,KAChBsH,EAAKA,EAAG+B,YAIN9B,YAAcvH,KAChBuH,EAAKA,EAAG8B,YAGN5D,EAAS6B,IAAO7B,EAAS8B,GAC3B,MAAO,IAAI9G,GAAQ6G,EAAIC,EAGvB,MAAM,IAAIxC,WAAU,8DAGxB,SACE,KAAM,IAAIzF,GAAKkB,MAAM0G,eAAe,UAAWP,UAAUnB,OAAQ,EAAG,OAQvE,SAASpH,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAEIU,IAFOvB,EAAoB,KAEfa,EAAKS,KAAKC,WACtBW,EAAQlC,EAAoB,EAyChCa,GAAK2I,MAAQ,WAEX,GAAIiC,GAAO7F,MAAMhE,UAAU0qB,MAAMzf,MAAM3E,WAAWpC,IAAI,SAAUkD,GAC9D,MAAIA,aAAezH,GACVyH,EAAI4B,WAEJhF,MAAMC,QAAQmD,GACdA,EAAIlD,IAAI,SAAUkJ,GACvB,MAAQA,aAAgBzN,GAAayN,EAAKpE,WAAaoE,IAIlDhG,IAIPwG,EAAM,GAAItN,EAEd,OADAA,GAAM2K,MAAM2C,EAAK/D,GACV+D,KAON,SAAS7P,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GACIsB,IADOnC,EAAoB,KAClBA,EAAoB,GA2BjCa,GAAKE,OAAS,SAAgBsM,GAC5B,GAAInF,UAAUnB,OAAS,EACrB,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,SAAUP,UAAUnB,OAAQ,EAAG,EAGrE,OAAO,IAAI5E,GAAOkL,MAOjB,SAAS1N,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjC4gB,EAAere,EAAWqe,aAC1B5Z,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BliB,EAAWF,EAAKG,OAAOD,QAwB3BrJ,GAAKG,OAAS,QAASA,GAAQ+E,GAC7B,OAAQmC,UAAUnB,QAChB,IAAK,GACH,MAAO,EAET,KAAK,GACH,GAAI6Z,EAAa7a,GACf,MAAOxD,GAAWse,QAAQ9a,EAAO/E,EAGnC,IAAI+E,YAAiBxE,GACnB,MAAOwE,GAAM6E,UAGf,IAAIV,EAASnE,GAAQ,CACnB,GAAIhC,GAAMiC,OAAOD,EAIjB,IAHIqB,MAAMrD,KACRA,EAAMiC,OAAOD,EAAME,YAEjBmB,MAAMrD,GACR,KAAM,IAAIgF,aAAYhD,EAAMqF,WAAa,sBAE3C,OAAOrH,GAGT,GAAIqoB,EAAUrmB,IAAoB,OAAVA,EACtB,OAAQA,CAGV,IAAIiB,EAASjB,GACX,MAAOA,EAGT,MAAM,IAAIlF,GAAKkB,MAAM6G,qBAAqB,SAAU/H,EAAK,UAAUkF,GAErE,SACE,KAAM,IAAIlF,GAAKkB,MAAM0G,eAAe,SAAUP,UAAUnB,OAAQ,EAAG,OAQtE,SAASpH,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAI8B,GAAS3C,EAAoB,GA6CjCa,GAAK8e,OAAS,WACZ,MAAO,IAAIhd,GAAO9B,MAOjB,SAASlB,GAEd,YAEAA,GAAOD,QAAU,SAAUmB,GAoCzBA,EAAKgvB,OAAS,SAAgB9pB,GAE5B,MAAO,IAAIlF,GAAKiC,SAASC,SAASgD,MAOjC,SAASpG,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuC,EAAavC,EAAoB,IAEjCgB,EAASgJ,EAAKhJ,OACdgG,EAAWgD,EAAKhJ,OAAOgG,SACvB4Z,EAAere,EAAWqe,YA2B9B/f,GAAKsJ,OAAS,QAASA,GAAQpE,GAC7B,OAAQmC,UAAUnB,QAChB,IAAK,GACH,MAAO,EAET,KAAK,GACH,MAAIC,GAASjB,GACJ/E,EAAOmG,OAAOpB,GAGnB6a,EAAa7a,GACRxD,EAAWse,QAAQ9a,EAAOoE,GAGrB,OAAVpE,EACK,OAGFA,EAAMqF,UAEf,SACE,KAAM,IAAIvK,GAAKkB,MAAM0G,eAAe,SAAUP,UAAUnB,OAAQ,EAAG,OAQtE,SAASpH,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBa,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC4gB,EAAere,EAAWqe,aAC1B1W,EAAWF,EAAKG,OAAOD,QAyB3BrJ,GAAK6O,KAAO,QAASA,GAAKjE,GACxB,OAAOvD,UAAUnB,QACf,IAAK,GAEH,GAAIiC,GAAMd,UAAU,EAEpB,IAAIc,YAAe5G,GAEjB,MAAO4G,GAAItH,OAGb,IAAIwI,EAASlB,GAAM,CACjB,GAAI5G,EAAKuO,gBAAgB3H,GACvB,MAAO,IAAI5G,GAAK,KAAM4G,EAGxB,IAAIkJ,GAAI9P,EAAKM,MAAMsG,EACnB,IAAIkJ,EACF,MAAOA,EAGT,MAAM,IAAInJ,aAAY,WAAaC,EAAM,sBAG3C,GAAI4X,EAAanV,GACf,MAAOlJ,GAAWse,QAAQpV,EAAMiE,EAGlC,MAAM,IAAIpJ,WAAU,4DAEtB,KAAK,GAGH,MAAI4B,WAAU,YAAc3G,GAEnB,GAAIa,GAAK8F,UAAU,GAAG0C,WAAY1C,UAAU,IAG5C,GAAI9F,GAAK8F,UAAU,GAAIA,UAAU,GAG5C,SACE,KAAM,IAAIrH,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAAG,OAQpE,SAASpH,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAmHzB,QAASivB,GAAQppB,EAAGC,EAAGopB,EAAW/iB,GAChC,GAAU+iB,EAAN/iB,EAAiB,CAEnB,GAAItG,EAAEK,QAAUJ,EAAEI,OAChB,KAAM,IAAIlG,GAAKkB,MAAM2G,eAAehC,EAAEK,OAAQJ,EAAEI,OAIlD,KAAK,GADDxG,MACKyE,EAAI,EAAGA,EAAI0B,EAAEK,OAAQ/B,IAC5BzE,EAAEyE,GAAK8qB,EAAQppB,EAAE1B,GAAI2B,EAAE3B,GAAI+qB,EAAW/iB,EAAM,EAE9C,OAAOzM,GAIP,MAAOmG,GAAEqlB,OAAOplB,GAjIpB,GAAIqD,GAAOhK,EAAoB,KAE3BuB,EAAYvB,EAAoB,KAChCmC,EAASnC,EAAoB,GAC7BuC,EAAavC,EAAoB,IAEjCoB,EAAS4I,EAAK5I,OACdoK,EAAQxB,EAAKwB,MACbxE,EAAWgD,EAAKhJ,OAAOgG,SACvBC,EAAY+C,EAAKhJ,OAAOiG,UACxB2Z,EAAere,EAAWqe,YA8B9B/f,GAAKkrB,OAAS,WACZ,GAAI/mB,GAGAgrB,EAFAlpB,EAAMoB,UAAUnB,OAChBiG,EAAM,GAENmf,GAAW,EACX8D,IAEJ,KAAKjrB,EAAI,EAAO8B,EAAJ9B,EAASA,IAAK,CACxB,GAAIgE,GAAMd,UAAUlD,EAOpB,IAJIgE,YAAe7G,KACjBgqB,GAAW,GAGRnnB,GAAK8B,EAAM,IAAOE,EAASgC,IAAQA,YAAezH,IAAY,CAKjE,GAHAyuB,EAAUhjB,EACVA,EAAMhE,EAAI/C,WAELgB,EAAU+F,GACb,KAAM,IAAI1G,WAAU,wCAGtB,IAAU,EAAN0G,EAEF,KAAM,IAAInM,GAAKkB,MAAM4G,WAAWqE,EAElC,IAAIhI,EAAI,GAAKgI,EAAMgjB,EAEjB,KAAM,IAAInvB,GAAKkB,MAAM4G,WAAWqE,EAAKgjB,EAAU,OAG9C,CAAA,IAAIpP,EAAa5X,GAcpB,KAAM,IAAInI,GAAKkB,MAAM6G,qBAAqB,SAAU/H,EAAK,UAAUmI,GAZnE,IAAIjI,GAASK,EAAOM,MAAMsH,GAAK/C,UAC3B8F,EAAOP,EAAMO,KAAK/C,EAAI/C,UAM1B,IALAgqB,EAASjrB,GAAKjE,EACdivB,EAAUhjB,EACVA,EAAMjB,EAAKhF,OAAS,EAGhB/B,EAAI,GAAKgI,GAAOgjB,EAClB,KAAM,IAAInvB,GAAKkB,MAAM2G,eAAesnB,EAAU,EAAGhjB,EAAM,IAQ7D,GAAuB,GAAnBijB,EAASlpB,OACX,KAAM,IAAIgC,aAAY,+BAIxB,KADA,GAAIyG,GAAMygB,EAASC,QACZD,EAASlpB,QACdyI,EAAMsgB,EAAQtgB,EAAKygB,EAASC,QAASljB,EAAK,EAG5C,OAAOmf,GAAW,GAAIhqB,GAAOqN,GAAOA,KAoCnC,SAAS7P,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA6FzB,QAASsvB,GAAMpvB,EAAQwlB,GACrB,GAAY,GAARA,EAEF,MAAOnlB,GAAOM,MAAMX,EAAO,GAAG,GAE3B,IAAY,GAARwlB,EAGP,MAAO1lB,GAAKioB,SACRjoB,EAAK8nB,SAAS5nB,EAAO,GAAG,GAAIA,EAAO,GAAG,IACtCF,EAAK8nB,SAAS5nB,EAAO,GAAG,GAAIA,EAAO,GAAG,IAsC1C,KAAK,GAjCDqvB,GAAa,SAAUrvB,GACzB,GAAIiE,GAAGub,EAKH8P,EAAK,GAAIzqB,OAAM7E,EAAOgG,QACtBgkB,EAAM,CACV,KAAK/lB,EAAI,EAAGA,EAAIjE,EAAOgG,OAAQ/B,IAC7B+lB,EAAMlqB,EAAKoiB,IAAI8H,EAAKhqB,EAAOiE,GAAGA,GAGhC,KAAKA,EAAI,EAAGA,EAAIjE,EAAOgG,OAAQ/B,IAAK,CAIlC,IAHAqrB,EAAGrrB,GAAK,GAAIY,OAAM7E,EAAOgG,QACzBspB,EAAGrrB,GAAGA,GAAKnE,EAAKkoB,WAAWgC,GAEtBxK,EAAI,EAAOvb,EAAJub,EAAOA,IACjB8P,EAAGrrB,GAAGub,GAAK,CAGb,KAAKA,EAAIvb,EAAI,EAAGub,EAAIxf,EAAOgG,OAAQwZ,IACjC8P,EAAGrrB,GAAGub,GAAKxf,EAAOiE,GAAGub,EAGnBvb,GAAE,EAAIjE,EAAOgG,SACfgkB,EAAMlqB,EAAKioB,SAASiC,EAAKhqB,EAAOiE,EAAI,GAAGA,EAAI,KAI/C,MAAOqrB,IAGLC,EAAKvvB,EACAiE,EAAI,EAAOuhB,EAAO,EAAXvhB,EAAcA,IAC5BsrB,EAAKzvB,EAAK8nB,SAASyH,EAAWE,GAAKvvB,EAGrC,OAAIwlB,GAAO,GAAK,EACP1lB,EAAKkoB,WAAWuH,EAAG,GAAG,IAEtBA,EAAG,GAAG,GAnJnB,GAAItmB,GAAOhK,EAAoB,KAE3BmC,EAASnC,EAAoB,GAE7BoB,EAAS4I,EAAK5I,OACd+I,EAASH,EAAKG,MA2BlBtJ,GAAK+oB,IAAM,SAAcnmB,GACvB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIgF,EAaJ,QAZItI,YAAatB,GACf4J,EAAOtI,EAAEsI,OAEFtI,YAAamC,QACpBnC,EAAI,GAAItB,GAAOsB,GACfsI,EAAOtI,EAAEsI,QAITA,KAGMA,EAAKhF,QACX,IAAK,GAEH,MAAO3F,GAAOM,MAAM+B,EAEtB,KAAK,GAEH,GAAe,GAAXsI,EAAK,GACP,MAAO3K,GAAOM,MAAM+B,EAAEwC,UAAU,GAGhC,MAAM,IAAI+nB,YAAW,gCACL7jB,EAAOhD,OAAO4E,GAAQ,IAG1C,KAAK,GAEH,GAAIwa,GAAOxa,EAAK,GACZya,EAAOza,EAAK,EAChB,IAAIwa,GAAQC,EACV,MAAO2J,GAAK1sB,EAAE/B,QAAQuE,UAAWsgB,EAAMC,EAGvC,MAAM,IAAIwH,YAAW,gCACL7jB,EAAOhD,OAAO4E,GAAQ,IAG1C,SAEE,KAAM,IAAIiiB,YAAW,yCACL7jB,EAAOhD,OAAO4E,GAAQ,SA4EzC,SAASpM,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBY,EAASnC,EAAoB,GAE7BoB,EAAS4I,EAAK5I,OACdyE,EAAUmE,EAAKwB,MAAM3F,QACrBmB,EAAWgD,EAAKhJ,OAAOgG,SACvBC,EAAY+C,EAAKhJ,OAAOiG,SAmC5BpG,GAAKgpB,KAAO,SAAepmB,EAAGQ,GAC5B,GAAIoJ,GAAMkjB,EAAQvrB,EAAGwrB,CAErB,IAAwB,GAApBtoB,UAAUnB,QAAmC,GAApBmB,UAAUnB,OACrC,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAAG,EAGnE,IAAI9C,GAIF,GAFIA,YAAa1C,KAAW0C,EAAIA,EAAE2G,aAE7B5D,EAAS/C,KAAOgD,EAAUhD,GAC7B,KAAM,IAAIqC,WAAW,4DAIvBrC,GAAI,CAEN,IAIIwsB,GAJAC,EAASzsB,EAAI,EAAIA,EAAI,EACrB0sB,EAAW,EAAJ1sB,GAASA,EAAI,CAIxB,IAAIR,YAAatB,GACfsuB,GAAU,MAEP,CAAA,IAAI5qB,EAAQpC,GAMf,KAAM,IAAI6C,WAAW,6DAJrB7C,GAAI,GAAItB,GAAOsB,GACfgtB,GAAU,EAMZ,GAAIrW,GAAI3W,EAAEsI,MACV,QAAQqO,EAAErT,QACR,IAAK,GAEHwpB,EAAS9sB,EAAEwC,SACX,IAAIlF,GAAS,GAAIoB,GACbgM,EAAgBoiB,EAAO,YAAchvB,GAAa,GAAIA,GAAU,GAAK,CAIzE,KAHAR,EAAOgO,QAAQwhB,EAAOxpB,OAAS4pB,EAAMJ,EAAOxpB,OAAS2pB,GAASviB,GAC9Dd,EAAOtM,EAAOkF,UACduqB,EAAOD,EAAOxpB,OACT/B,EAAI,EAAOwrB,EAAJxrB,EAAUA,IACpBqI,EAAKrI,EAAI2rB,GAAM3rB,EAAI0rB,GAAUtvB,EAAOM,MAAM6uB,EAAOvrB,GAEnD,OAAOyrB,GAAU1vB,EAAOkF,UAAYlF,CAEtC,KAAK,GAKH,IAHAwvB,KACAljB,EAAO5J,EAAEwC,UACTuqB,EAAO9rB,KAAKqD,IAAIqS,EAAE,GAAKuW,EAAMvW,EAAE,GAAKsW,GAC/B1rB,EAAI,EAAOwrB,EAAJxrB,EAAUA,IACpBurB,EAAOvrB,GAAK5D,EAAOM,MAAM2L,EAAKrI,EAAI2rB,GAAM3rB,EAAI0rB,GAE9C,OAAOD,GAAUF,EAAS,GAAIpuB,GAAOouB,EAEvC,SACE,KAAM,IAAIvC,YAAW,sDAQxB,SAASruB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBY,EAASnC,EAAoB,GAC7BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBC,EAAY+C,EAAKhJ,OAAOiG,UACxBpB,EAAUD,MAAMC,OA2BpBhF,GAAKipB,IAAM,SAAc/d,GACvB,GAAIN,GAAOlJ,EAAWoe,YAAYzY,WAC9BikB,EAAYpgB,YAAgB5J,IAAU,EACrC0D,EAAQkG,IAAQ,EAA2B,WAAlBrL,EAAOK,MAGrC,IAAmB,GAAf0K,EAAK1E,OAEP,MAAOolB,GAAW,GAAIhqB,KAEnB,IAAmB,GAAfsJ,EAAK1E,OAEZ0E,EAAK,GAAKA,EAAK,OAEZ,IAAIA,EAAK1E,OAAS,EAErB,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOgD,EAAK1E,OAAQ,EAAG,EAG7D,IAAIwf,GAAO9a,EAAK,GACZ+a,EAAO/a,EAAK,EAKhB,IAHI8a,YAAgBhlB,KAAWglB,EAAOA,EAAK3b,YACvC4b,YAAgBjlB,KAAWilB,EAAOA,EAAK5b,aAEtC5D,EAASuf,KAAUtf,EAAUsf,IAAgB,EAAPA,EACzC,KAAM,IAAI3lB,OAAM,uDAElB,KAAKoG,EAASwf,KAAUvf,EAAUuf,IAAgB,EAAPA,EACzC,KAAM,IAAI5lB,OAAM,uDAIlB,IAAIgwB,IAAc,CAClBnlB,GAAOA,EAAK3F,IAAI,SAAUC,GACxB,MAAIA,aAAiBxE,IACnBqvB,GAAc,EACP7qB,EAAM6E,YAEN7E,GAKX,IAAIhF,GAAS,GAAIoB,GACb0uB,EAAMD,EAAc,GAAIrvB,GAAU,GAAK,EACvC4M,EAAeyiB,EAAc,GAAIrvB,GAAU,GAAK,CACpDR,GAAOgO,OAAOtD,EAAM0C,EAKpB,KAAK,GAFD2iB,GAAUjwB,EAAKkH,IAAI0D,GACnB4B,EAAOtM,EAAOkF,UACTgM,EAAI,EAAO6e,EAAJ7e,EAAaA,IAC3B5E,EAAK4E,GAAGA,GAAK4e,CAGf,OAAO1E,GAAWprB,EAASA,EAAOkF,aAOjC,SAAStG,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BmC,EAASnC,EAAoB,GAE7BoB,EAAS4I,EAAK5I,OACdoK,EAAQxB,EAAKwB,MACb3F,EAAUD,MAAMC,OAoBpBhF,GAAKkpB,QAAU,SAAkBtmB,GAC/B,GAAyB,IAArByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,UAAWP,UAAUnB,OAAQ,EAGnE,IAAItD,YAAatB,GAAQ,CACvB,GAAIT,GAAQN,EAAOM,MAAM+B,EAAE2I,WACvB2kB,EAAOvlB,EAAMue,QAAQroB,EACzB,OAAO,IAAIS,GAAO4uB,GAGpB,GAAIlrB,EAAQpC,GACV,MAAO+H,GAAMue,QAAQ3oB,EAAOM,MAAM+B,GAGpC,MAAM,IAAI5C,GAAKkB,MAAM6G,qBAAqB,UAAW/H,EAAK,UAAU4C,OAOnE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA0FzB,QAASmwB,GAAMjwB,EAAQwlB,EAAMC,GAC3B,GAAIrd,GAAGiR,EAAGhI,EAAGrM,EAAOkrB,CAEpB,IAAY,GAAR1K,EAAW,CAGb,GADAxgB,EAAQhF,EAAO,GAAG,GACL,GAATgF,EACF,KAAMnF,OAAM,gDAEd,SACEC,EAAKqnB,OAAO,EAAGniB,KAGd,GAAY,GAARwgB,EAAW,CAElB,GAAItU,GAAIpR,EAAK+oB,IAAI7oB,EACjB,IAAS,GAALkR,EACF,KAAMrR,OAAM,gDAEd,SAEIC,EAAKqnB,OAAOnnB,EAAO,GAAG,GAAIkR,GAC1BpR,EAAKqnB,OAAOrnB,EAAKkoB,WAAWhoB,EAAO,GAAG,IAAKkR,KAG3CpR,EAAKqnB,OAAOrnB,EAAKkoB,WAAWhoB,EAAO,GAAG,IAAKkR,GAC3CpR,EAAKqnB,OAAOnnB,EAAO,GAAG,GAAIkR,KAY9B,GAAI4I,GAAI9Z,EAAOgrB,QACf,KAAK5iB,EAAI,EAAOod,EAAJpd,EAAUA,IACpB0R,EAAE1R,GAAK0R,EAAE1R,GAAG4iB,QAQd,KAAK,GAHD/P,GAAInb,EAAKipB,IAAIvD,GAAMtgB,UAGd1F,EAAI,EAAOimB,EAAJjmB,EAAUA,IAAK,CAI7B,IADA4I,EAAI5I,EACOgmB,EAAJpd,GAAuB,GAAX0R,EAAE1R,GAAG5I,IACtB4I,GAEF,IAAIA,GAAKod,GAAmB,GAAX1L,EAAE1R,GAAG5I,GAEpB,KAAMK,OAAM,gDAEVuI,IAAK5I,IACP0wB,EAAOpW,EAAEta,GAAIsa,EAAEta,GAAKsa,EAAE1R,GAAI0R,EAAE1R,GAAK8nB,EACjCA,EAAOjV,EAAEzb,GAAIyb,EAAEzb,GAAKyb,EAAE7S,GAAI6S,EAAE7S,GAAK8nB,EAInC,IAAIC,GAAKrW,EAAEta,GACP4wB,EAAKnV,EAAEzb,EACX,KAAK4I,EAAI,EAAOod,EAAJpd,EAAUA,IAAK,CACzB,GAAIioB,GAAKvW,EAAE1R,GACPkoB,EAAKrV,EAAE7S,EACX,IAAGA,GAAK5I,GAEN,GAAa,GAAT6wB,EAAG7wB,GAAS,CAKd,IAJA6R,EAAIvR,EAAKqnB,OAAOrnB,EAAKkoB,WAAWqI,EAAG7wB,IAAK2wB,EAAG3wB,IAItC6Z,EAAI7Z,EAAOimB,EAAJpM,EAAUA,IACpBgX,EAAGhX,GAAKvZ,EAAKoiB,IAAImO,EAAGhX,GAAIvZ,EAAK8nB,SAASvW,EAAG8e,EAAG9W,IAE9C,KAAKA,EAAI,EAAOoM,EAAJpM,EAAUA,IACpBiX,EAAGjX,GAAKvZ,EAAKoiB,IAAIoO,EAAGjX,GAAKvZ,EAAK8nB,SAASvW,EAAG+e,EAAG/W,UAI9C,CAIH,IADAhI,EAAI8e,EAAG3wB,GACF6Z,EAAI7Z,EAAOimB,EAAJpM,EAAUA,IACpBgX,EAAGhX,GAAKvZ,EAAKqnB,OAAOkJ,EAAGhX,GAAIhI,EAE7B,KAAKgI,EAAI,EAAOoM,EAAJpM,EAAUA,IACpBiX,EAAGjX,GAAKvZ,EAAKqnB,OAAOmJ,EAAGjX,GAAIhI,KAKnC,MAAO4J,GA3LX,GAAIhS,GAAOhK,EAAoB,KAC3BmK,EAASH,EAAKG,OAEdhI,EAASnC,EAAoB,EAsBjCa,GAAKmpB,IAAM,SAAcvmB,GACvB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAE/D,IAAIgF,GAAOlL,EAAKkL,KAAKtI,GAAGwC,SACxB,QAAQ8F,EAAKhF,QACX,IAAK,GAEH,MAAOlG,GAAKqnB,OAAO,EAAGzkB,EAExB,KAAK,GAEH,GAAe,GAAXsI,EAAK,GACP,MAAItI,aAAatB,GACR,GAAIA,IACTtB,EAAKqnB,OAAO,EAAGzkB,EAAEwC,UAAU,OAK3BpF,EAAKqnB,OAAO,EAAGzkB,EAAE,IAKrB,MAAM,IAAIuqB,YAAW,gCACL7jB,EAAOhD,OAAO4E,GAAQ,IAG1C,KAAK,GAEH,GAAIwa,GAAOxa,EAAK,GACZya,EAAOza,EAAK,EAChB,IAAIwa,GAAQC,EACV,MAAI/iB,aAAatB,GACR,GAAIA,GACP6uB,EAAKvtB,EAAEwC,UAAWsgB,EAAMC,IAKrBwK,EAAKvtB,EAAG8iB,EAAMC,EAIvB,MAAM,IAAIwH,YAAW,gCACL7jB,EAAOhD,OAAO4E,GAAQ,IAG1C,SAEE,KAAM,IAAIiiB,YAAW,yCACL7jB,EAAOhD,OAAO4E,GAAQ,SAsHzC,SAASpM,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBY,EAASnC,EAAoB,GAC7BuC,EAAavC,EAAoB,IAEjCwL,EAAQxB,EAAKwB,MAEb3F,EAAUD,MAAMC,OA4BpBhF,GAAKopB,KAAO,SAAele,GACzB,GAAIN,GAAOlJ,EAAWoe,YAAYzY,WAC9BikB,EAAYpgB,YAAgB5J,IAAU,EACrC0D,EAAQkG,IAAQ,EAA2B,WAAlBrL,EAAOK,MAErC,IAAmB,GAAf0K,EAAK1E,OAEP,MAAOolB,GAAW,GAAIhqB,KAMtB,IAAIyuB,IAAc,CAClBnlB,GAAOA,EAAK3F,IAAI,SAAUC,GACxB,MAAIA,aAAiBxE,IACnBqvB,GAAc,EACP7qB,EAAM6E,YAEN7E,GAKX,IAAIyJ,MACArB,EAAeyiB,EAAc,GAAIrvB,GAAU,GAAK,CAGpD,OAFAiO,GAAMhE,EAAMuD,OAAOS,EAAK/D,EAAM0C,GAEvBge,EAAW,GAAIhqB,GAAOqN,GAAOA,KAQrC,SAAS7P,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GA4J/B,QAAS4wB,GAAQjmB,EAAOC,EAAKC,GAC3B,GAAIC,MACA/H,EAAI4H,CACR,IAAIE,EAAO,EACT,KAAWD,EAAJ7H,GACL+H,EAAMgB,KAAK/I,GACXA,GAAK8H,MAGJ,IAAW,EAAPA,EACP,KAAO9H,EAAI6H,GACTE,EAAMgB,KAAK/I,GACXA,GAAK8H,CAIT,OAAOC,GAWT,QAAS+lB,GAAWlmB,EAAOC,EAAKC,GAC9B,GAAIC,MACA/H,EAAI4H,CACR,IAAIE,EAAO,EACT,KAAYD,GAAL7H,GACL+H,EAAMgB,KAAK/I,GACXA,GAAK8H,MAGJ,IAAW,EAAPA,EACP,KAAO9H,GAAK6H,GACVE,EAAMgB,KAAK/I,GACXA,GAAK8H,CAIT,OAAOC,GAWT,QAASgmB,GAAWnmB,EAAOC,EAAKC,GAC9B,GAAIC,MACA/H,EAAI4H,EAAM3J,QACVurB,EAAO,GAAI1rB,GAAU,EACzB,IAAIgK,EAAK8jB,GAAGpC,GACV,KAAOxpB,EAAEsb,GAAGzT,IACVE,EAAMgB,KAAK/I,GACXA,EAAIA,EAAEJ,KAAKkI,OAGV,IAAIA,EAAKwT,GAAGkO,GACf,KAAOxpB,EAAE4rB,GAAG/jB,IACVE,EAAMgB,KAAK/I,GACXA,EAAIA,EAAEJ,KAAKkI,EAIf,OAAOC,GAWT,QAASimB,GAAcpmB,EAAOC,EAAKC,GACjC,GAAIC,MACA/H,EAAI4H,EAAM3J,QACVurB,EAAO,GAAI1rB,GAAU,EACzB,IAAIgK,EAAK8jB,GAAGpC,GACV,KAAOxpB,EAAE+rB,IAAIlkB,IACXE,EAAMgB,KAAK/I,GACXA,EAAIA,EAAEJ,KAAKkI,OAGV,IAAIA,EAAKwT,GAAGkO,GACf,KAAOxpB,EAAE6rB,IAAIhkB,IACXE,EAAMgB,KAAK/I,GACXA,EAAIA,EAAEJ,KAAKkI,EAIf,OAAOC,GAYT,QAASoc,GAAQjgB,GACf,GAAI8D,GAAO9D,EAAI+D,MAAM,KACjBC,EAAO,IAEX,IAAsB,cAAlBjL,EAAOM,OAET,IACE2K,EAAOF,EAAK3F,IAAI,SAAUkD,GACxB,MAAO,IAAIzH,GAAUyH,KAGzB,MAAOuH,GACL,MAAO,UAGN,CAEH5E,EAAOF,EAAK3F,IAAI,SAAUkD,GAExB,MAAOhD,QAAOgD,IAGhB,IAAI4C,GAAUD,EAAKE,KAAK,SAAU9H,GAChC,MAAOqD,OAAMrD,IAEf,IAAG6H,EACD,MAAO,MAIX,OAAQD,EAAK5E,QACX,IAAK,GACH,OACEsE,MAAOM,EAAK,GACZL,IAAKK,EAAK,GACVJ,KAAM,EAGV,KAAK,GACH,OACEF,MAAOM,EAAK,GACZL,IAAKK,EAAK,GACVJ,KAAMI,EAAK,GAGf,SACE,MAAO,OAxTb,GAAI3B,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBY,EAASnC,EAAoB,GAG7BosB,GAFapsB,EAAoB,IAErBgK,EAAK,WAAWoiB,WAC5BliB,EAAWF,EAAKG,OAAOD,SACvBlD,EAAWgD,EAAKhJ,OAAOgG,QA6C3BnG;EAAKiM,MAAQ,WACX,GACIzB,GACAC,EACAC,EAHAoY,EAAS/d,MAAMhE,UAAU0qB,MAAMjsB,KAAK6H,WAIpCwpB,GAAa,CAOjB,QAJItF,EAAUzI,EAAOA,EAAO5c,OAAS,MACnC2qB,EAAa/N,EAAOgO,OAAQ,GAAO,GAG7BhO,EAAO5c,QACb,IAAK,GAGH,IAAImD,EAASyZ,EAAO,IAWlB,KAAM,IAAIrd,WAAU,qEAVpB,IAAI6C,GAAIye,EAAOjE,EAAO,GACtB,KAAKxa,EACH,KAAM,IAAIJ,aAAY,WAAa4a,EAAO,GAAK,sBAGjDtY,GAAQlC,EAAEkC,MACVC,EAAMnC,EAAEmC,IACRC,EAAOpC,EAAEoC,IAKX,MAEF,KAAK,GAGHF,EAAQsY,EAAO,GACfrY,EAAMqY,EAAO,GACbpY,EAAO,CACP,MAEF,KAAK,GAEHF,EAAQsY,EAAO,GACfrY,EAAMqY,EAAO,GACbpY,EAAOoY,EAAO,EACd,MAEF,KAAK,GACH,KAAM,IAAIrd,WAAU,yCAEtB,SACE,KAAM,IAAIzF,GAAKkB,MAAM0G,eAAe,QAASP,UAAUnB,OAAQ,EAAG,GAItE,KAAKC,EAASqE,IAAYA,YAAiB9J,IACzC,KAAM,IAAI+E,WAAU,mCAEtB,MAAKU,EAASsE,IAAUA,YAAe/J,IACrC,KAAM,IAAI+E,WAAU,iCAEtB,MAAKU,EAASuE,IAAWA,YAAgBhK,IACvC,KAAM,IAAI+E,WAAU,kCAItB,IAAI+E,YAAiB9J,IAAa+J,YAAe/J,IAAagK,YAAgBhK,GAAW,CAEvF,GAAIqvB,IAAc,CAGZvlB,aAAiB9J,KAAY8J,EAAQ9J,EAAUM,QAAQwJ,IACvDC,YAAe/J,KAAc+J,EAAQ/J,EAAUM,QAAQyJ,IACvDC,YAAgBhK,KAAagK,EAAQhK,EAAUM,QAAQ0J,IAEvDF,YAAiB9J,IAAgB+J,YAAe/J,IAAgBgK,YAAgBhK,KAGpFqvB,GAAc,EACVvlB,YAAiB9J,KAAW8J,EAAQA,EAAMT,YAC1CU,YAAe/J,KAAa+J,EAAQA,EAAIV,YACxCW,YAAgBhK,KAAYgK,EAAQA,EAAKX,aAKjD,GAAIyZ,GAAKuM,EACJc,EAAaD,EAAeD,EAC5BE,EAAaH,EAAeD,EAC7B9lB,EAAQ6Y,EAAGhZ,EAAOC,EAAKC,EAG3B,OAA0B,UAAlB7K,EAAOK,OAAsByK,EAAQ,GAAIrJ,GAAOqJ,MAiLvD,SAAS7L,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GA6F/B,QAASkxB,GAAcjqB,EAAKoE,EAAM8lB,GAChC,GAAoBlsB,SAAhBksB,GACF,IAAK3nB,EAAS2nB,IAAuC,IAAvBA,EAAY9qB,OACxC,KAAM,IAAIT,WAAU,iDAItBurB,GAAc,GAGhB,IAAoB,IAAhB9lB,EAAKhF,OACP,KAAM,IAAIlG,GAAKkB,MAAM2G,eAAeqD,EAAKhF,OAAQ,EAEnD,IAAID,GAAMiF,EAAK,EACf,KAAK/E,EAASF,KAASG,EAAUH,GAC/B,KAAM,IAAIR,WAAU,uDACJ6D,EAAOhD,OAAO4E,GAAQ,IAGxC,IAAIpE,EAAIZ,OAASD,EACf,MAAOa,GAAI6C,UAAU,EAAG1D,EAErB,IAAIa,EAAIZ,OAASD,EAAK,CAEzB,IAAK,GADD0I,GAAM7H,EACD3C,EAAI,EAAGuH,EAAKzF,EAAMa,EAAIZ,OAAYwF,EAAJvH,EAAQA,IAC7CwK,GAAOqiB,CAET,OAAOriB,GAGP,MAAO7H,GA1HX,GAAIqC,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBY,EAASnC,EAAoB,GAE7BwL,EAAQxB,EAAKwB,MACb9J,EAAQsI,EAAK5I,OAAOM,MACpByI,EAASH,EAAKG,OACdD,EAAWF,EAAKG,OAAOD,SACvBlD,EAAWgD,EAAKhJ,OAAOgG,SACvBC,EAAY+C,EAAKhJ,OAAOiG,UACxBpB,EAAU2F,EAAM3F,OA4BpBhF,GAAKkO,OAAS,SAAiBtL,EAAGsI,EAAMoC,GACtC,GAAwB,GAApBjG,UAAUnB,QAAmC,GAApBmB,UAAUnB,OACrC,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,SAAUP,UAAUnB,OAAQ,EAAG,EAGrE,IAAIolB,GAAY1oB,YAAatB,IAAU,EAAO0D,EAAQpC,IAAK,EAA2B,UAAlB/C,EAAOK,MAgB3E,IAdI0C,YAAatB,KACfsB,EAAIA,EAAEwC,WAEJ8F,YAAgB5J,KAClB4J,EAAOA,EAAK9F,WAGV8F,EAAKhF,QAAUgF,EAAK,YAAcxK,KAEpCwK,EAAOA,EAAKjG,IAAI,SAAUC,GACxB,MAAQA,aAAiBxE,GAAawE,EAAM6E,WAAa7E,KAIzDmE,EAASzG,GACX,MAAOmuB,GAAcnuB,EAAGsI,EAAMoC,EAG9B,IAAmB,GAAfpC,EAAKhF,OAAa,CAEpB,KAAOlB,EAAQpC,IACbA,EAAIA,EAAE,EAGR,OAAO/B,GAAM+B,GAIRoC,EAAQpC,KACXA,GAAKA,IAEPA,EAAI/B,EAAM+B,EAEV,IAAI+L,GAAMhE,EAAMuD,OAAOtL,EAAGsI,EAAMoC,EAChC,OAAOge,GAAW,GAAIhqB,GAAOqN,GAAOA,KAkDvC,SAAS7P,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BmC,EAASnC,EAAoB,GAE7BwL,EAAQxB,EAAKwB,MACbxE,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BliB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,MAyBlBpJ,GAAKkL,KAAO,SAAetI,GACzB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAI0pB,GAA6B,UAAlB/vB,EAAOK,MAEtB,IAAIiG,EAASvD,IAAM2G,EAAU3G,IAAMwG,EAAOxG,IAAM2oB,EAAU3oB,IACjD,MAALA,GAAaA,YAAalC,GAC5B,MAAOkvB,MAAe,GAAItuB,MAG5B,IAAI+H,EAASzG,GACX,MAAOgtB,IAAWhtB,EAAEsD,QAAU,GAAI5E,IAAQsB,EAAEsD,QAG9C,IAAInB,MAAMC,QAAQpC,GAChB,MAAO+H,GAAMO,KAAKtI,EAGpB,IAAIA,YAAatB,GACf,MAAO,IAAIA,GAAOsB,EAAEsI,OAGtB,MAAM,IAAIlL,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BmC,EAASnC,EAAoB,GAE7BoB,EAAS4I,EAAK5I,OACdoK,EAAQxB,EAAKwB,MACb3F,EAAUD,MAAMC,OA+BpBhF,GAAKqpB,QAAU,SAAkBzmB,GAC/B,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,UAAWP,UAAUnB,OAAQ,EAGnE,IAAIlB,EAAQpC,GACV,MAAO+H,GAAM0e,QAAQ9oB,EAAOM,MAAM+B,GAE/B,IAAIA,YAAatB,GAAQ,CAC5B,GAAIqN,GAAMhE,EAAM0e,QAAQzmB,EAAE2I,UAC1B,OAAOvG,GAAQ2J,GAAO,GAAIrN,GAAOqN,GAAOA,EAIxC,MAAOpO,GAAOM,MAAM+B,MAQrB,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAmEzB,QAASixB,GAAW/rB,EAAOyD,GACzB,GAAIlJ,GAAG4O,CAEP,IAAIrJ,EAAQE,GAGV,MAFAzF,GAAI,GAAI6B,GAAO4D,GACfmJ,EAAS5O,EAAE4O,OAAO1F,GACX0F,EAAOjJ,SAEX,IAAIF,YAAiB5D,GACxB,MAAO4D,GAAMmJ,OAAO1F,EAEjB,IAAIU,EAASnE,GAChB,MAAOgsB,GAAchsB,EAAOyD,EAG5B,MAAM,IAAI3I,GAAKkB,MAAM6G,qBAAqB,SAAU/H,EAAK,UAAUkF,IAWvE,QAASgsB,GAAcpqB,EAAK6B,GAC1B,KAAMA,YAAiBtH,IAErB,KAAM,IAAIoE,WAAU,iBAEtB,IAA2B,GAAvBkD,EAAMuC,OAAOhF,OACf,KAAM,IAAIlG,GAAKkB,MAAM2G,eAAec,EAAMuC,OAAOhF,OAAQ,EAI3D,IAAIirB,GAASrqB,EAAIZ,MACjByE,GAAMoC,cAAcpE,EAAMzB,MAAM,GAAIiqB,GACpCxmB,EAAMoC,cAAcpE,EAAMhB,MAAM,GAAIwpB,EAEpC,IAAIllB,GAAQtD,EAAMsD,MAAM,GAEpBmlB,EAAS,EAKb,OAJAnlB,GAAMb,QAAQ,SAAUiiB,GACtB+D,GAAUtqB,EAAI+B,OAAOwkB,KAGhB+D,EAeT,QAASC,GAAWnsB,EAAOyD,EAAO2F,EAAahB,GAC7C,GAAI7N,EAEJ,IAAIuF,EAAQE,GAGV,MAFAzF,GAAI,GAAI6B,GAAOtB,EAAKa,MAAMqE,IAC1BzF,EAAE4O,OAAO1F,EAAO2F,EAAahB,GACtB7N,EAAE2F,SAEN,IAAIF,YAAiB5D,GACxB,MAAO4D,GAAMrE,QAAQwN,OAAO1F,EAAO2F,EAAahB,EAE7C,IAAIjE,EAASnE,GAChB,MAAOosB,GAAcpsB,EAAOyD,EAAO2F,EAAahB,EAGhD,MAAM,IAAItN,GAAKkB,MAAM6G,qBAAqB,SAAU/H,EAAK,UAAUkF,IAcvE,QAASosB,GAAcxqB,EAAK6B,EAAO2F,EAAahB,GAC9C,KAAM3E,YAAiBtH,IAErB,KAAM,IAAIoE,WAAU,iBAEtB,IAA2B,GAAvBkD,EAAMuC,OAAOhF,OACf,KAAM,IAAIlG,GAAKkB,MAAM2G,eAAec,EAAMuC,OAAOhF,OAAQ,EAE3D,IAAqBpB,SAAjBwI,GACF,IAAKjE,EAASiE,IAAyC,IAAxBA,EAAapH,OAC1C,KAAM,IAAIT,WAAU,iDAItB6H,GAAe,GAGjB,IAAIrB,GAAQtD,EAAMsD,MAAM,GACpBhG,EAAMgG,EAAMf,OAAO,EAEvB,IAAIjF,GAAOqI,EAAYpI,OACrB,KAAM,IAAIlG,GAAKkB,MAAM2G,eAAeoE,EAAMf,OAAO,GAAIoD,EAAYpI,OAInE,IAAIirB,GAASrqB,EAAIZ,MACjByE,GAAMoC,cAAcpE,EAAMzB,MAAM,IAChCyD,EAAMoC,cAAcpE,EAAMhB,MAAM,GAIhC,KAAK,GADD4pB,MACKptB,EAAI,EAAOgtB,EAAJhtB,EAAYA,IAC1BotB,EAAMptB,GAAK2C,EAAI+B,OAAO1E,EAQxB,IALA8H,EAAMb,QAAQ,SAAUiiB,EAAGlpB,GACzBotB,EAAMlE,GAAK/e,EAAYzF,OAAO1E,KAI5BotB,EAAMrrB,OAASirB,EACjB,IAAKhtB,EAAIgtB,EAAS,EAAGlrB,EAAMsrB,EAAMrrB,OAAYD,EAAJ9B,EAASA,IAC3CotB,EAAMptB,KACTotB,EAAMptB,GAAKmJ,EAKjB,OAAOikB,GAAMhlB,KAAK,IA7MpB,GAAIpD,GAAOhK,EAAoB,KAE3BmC,EAASnC,EAAoB,GAC7BkC,EAAQlC,EAAoB,GAE5BwL,EAAQxB,EAAKwB,MACbtB,EAAWF,EAAKG,OAAOD,SACvBrE,EAAUD,MAAMC,OAoCpBhF,GAAKqO,OAAS,WACZ,OAAQhH,UAAUnB,QAChB,IAAK,GACH,MAAO+qB,GAAW5pB,UAAU,GAAIA,UAAU,GAG5C,KAAK,GACL,IAAK,GACH,MAAOgqB,GAAWhqB,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAExE,SACE,KAAM,IAAIrH,GAAKkB,MAAM0G,eAAe,SAAUP,UAAUnB,OAAQ,EAAG,OA8JtE,SAASpH,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BmC,EAASnC,EAAoB,GAE7BoB,EAAS4I,EAAK5I,OACd+I,EAASH,EAAKG,MAsBlBtJ,GAAKspB,UAAY,SAAoB1mB,GACnC,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,YAAaP,UAAUnB,OAAQ,EAGrE,IAAIgF,GAAOlL,EAAKkL,KAAKtI,GAAGwC,SACxB,QAAQ8F,EAAKhF,QACX,IAAK,GAEH,MAAO3F,GAAOM,MAAM+B,EAEtB,KAAK,GAEH,MAAOrC,GAAOM,MAAM+B,EAEtB,KAAK,GAEH,GAKI4uB,GALA9L,EAAOxa,EAAK,GACZya,EAAOza,EAAK,GACZogB,EAAY1oB,YAAatB,GACzBkL,EAAO5J,EAAEwC,UACTqsB,KAEA5wB,EAAQN,EAAOM,KAEnB,IAAa,IAAT6kB,EAEF,KAAM,IAAIyH,YAAW,mDACL7jB,EAAOhD,OAAO4E,GAAQ,IAGxC,KAAK,GAAI5C,GAAI,EAAOod,EAAJpd,EAAUA,IAAK,CAC7BkpB,EAAgBC,EAAWnpB,KAC3B,KAAK,GAAI5I,GAAI,EAAOimB,EAAJjmB,EAAUA,IACxB8xB,EAAc9xB,GAAKmB,EAAM2L,EAAK9M,GAAG4I,IAIrC,MAAOgjB,GAAW,GAAIhqB,GAAOmwB,GAAcA,CAE7C,SAEE,KAAM,IAAItE,YAAW,yCACL7jB,EAAOhD,OAAO4E,GAAQ,SAQzC,SAASpM,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBY,EAASnC,EAAoB,GAC7BuC,EAAavC,EAAoB,IAEjCwL,EAAQxB,EAAKwB,MACb3F,EAAUD,MAAMC,OA4BpBhF,GAAKupB,MAAQ,SAAgBre,GAC3B,GAAIN,GAAOlJ,EAAWoe,YAAYzY,WAC9BikB,EAAYpgB,YAAgB5J,IAAU,EACrC0D,EAAQkG,IAAQ,EAA2B,WAAlBrL,EAAOK,MAErC,IAAmB,GAAf0K,EAAK1E,OAEP,MAAOolB,GAAW,GAAIhqB,KAMtB,IAAIyuB,IAAc,CAClBnlB,GAAOA,EAAK3F,IAAI,SAAUC,GACxB,MAAIA,aAAiBxE,IACnBqvB,GAAc,EACP7qB,EAAM6E,YAEN7E,GAKX,IAAIyJ,MACArB,EAAeyiB,EAAc,GAAIrvB,GAAU,GAAK,CAGpD,OAFAiO,GAAMhE,EAAMuD,OAAOS,EAAK/D,EAAM0C,GAEvBge,EAAW,GAAIhqB,GAAOqN,GAAOA,KAQrC,SAAS7P,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BnlB,EAAY+C,EAAKhJ,OAAOiG,UACxB2Z,EAAere,EAAWqe,YAwB9B/f,GAAKypB,UAAY,QAASA,GAAWnY,GACnC,GAAIpM,GAAOyJ,CAEX,IAAwB,GAApBtH,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,YAAaP,UAAUnB,OAAQ,EAGrE,IAAIC,EAASmL,GAAI,CACf,IAAKlL,EAAUkL,IAAU,EAAJA,EACnB,KAAM,IAAI7L,WAAU,wDAKtB,KAFAP,EAAQoM,EAAI,EACZ3C,EAAM2C,EACCpM,EAAQ,GACbyJ,GAAOzJ,EACPA,GAOF,OAJW,IAAPyJ,IACFA,EAAM,GAGDA,EAGT,GAAI2C,YAAa5Q,GAAW,CAC1B,IAAMgxB,EAAkBpgB,GACtB,KAAM,IAAI7L,WAAU,wDAGtB,IAAIuqB,GAAM,GAAItvB,GAAU,EAIxB,KAFAwE,EAAQoM,EAAEhO,MAAM0sB,GAChBrhB,EAAM2C,EACCpM,EAAMspB,GAAGwB,IACdrhB,EAAMA,EAAI1L,MAAMiC,GAChBA,EAAQA,EAAM5B,MAAM0sB,EAOtB,OAJIrhB,GAAItL,OAAO,KACbsL,EAAMqhB,GAGDrhB,EAGT,GAAI4c,EAAUja,IAAY,OAANA,EAClB,MAAO,EAGT,IAAIyO,EAAazO,GACf,MAAO5P,GAAWse,QAAQ1O,EAAGmY,EAG/B,MAAM,IAAIzpB,GAAKkB,MAAM6G,qBAAqB,YAAa/H,EAAK,UAAUsR,IAQxE,IAAIogB,GAAoB,SAASpgB,GAC/B,MAAOA,GAAElL,aAAekL,EAAEmd,IAAI,MAO7B,SAAS3vB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAI2xB,GAAexyB,EAAoB,KAAKa,EA8B5CA,GAAK4pB,OAAS+H,EAAa,WAAW/H,SAMnC,SAAS9qB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAI2xB,GAAexyB,EAAoB,KAAKa,EA8B5CA,GAAK6pB,UAAY8H,EAAa,WAAW9H,YAMtC,SAAS/qB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAI2xB,GAAexyB,EAAoB,KAAKa,EAqB5CA,GAAK2pB,WAAagI,EAAa,WAAWhI,aAMvC,SAAS7qB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UAEtByF,EAAWgD,EAAKhJ,OAAOgG,SACvBC,EAAY+C,EAAKhJ,OAAOiG,SA2B5BpG,GAAK0pB,aAAe,SAAuBpY,EAAGlO,GAC5C,GAAIupB,GAAQxoB,EAERytB,EAAQvqB,UAAUnB,MACtB,IAAI0rB,EAAQ,EACV,KAAM,IAAI5xB,GAAKkB,MAAM0G,eAAe,eAAgBP,UAAUnB,OAAQ,EAGxE,IAAIC,EAASmL,GAAI,CACf,IAAKlL,EAAUkL,IAAU,EAAJA,EACnB,KAAM,IAAI7L,WAAU,2DAItB,IAAa,GAATmsB,EACF,MAAO5xB,GAAKypB,UAAUnY,EAIxB,IAAa,GAATsgB,GACEzrB,EAAS/C,GAAI,CACf,IAAKgD,EAAUhD,IAAU,EAAJA,EACnB,KAAM,IAAIqC,WAAU,2DAEtB,IAAIrC,EAAIkO,EACN,KAAM,IAAI7L,WAAU,mEAItB,KADAknB,EAAS,EACJxoB,EAAImN,EAAIlO,EAAI,EAAQkO,GAALnN,EAAQA,IAC1BwoB,GAAkBxoB,CAEpB,OAAOwoB,IAKb,GAAIrb,YAAa5Q,GAAW,CAC1B,GAAUoE,SAAN1B,GAAmBsuB,EAAkBpgB,GACvC,MAAOtR,GAAKypB,UAAUnY,EAOxB,IAFAlO,EAAI1C,EAAUM,QAAQoC,KAEhBA,YAAa1C,IAAegxB,EAAkBpgB,IAAOogB,EAAkBtuB,IAC3E,KAAM,IAAIqC,WAAU,2DAEtB,IAAIrC,EAAEorB,GAAGld,GACP,KAAM,IAAI7L,WAAU,mEAItB,KADAknB,EAAS,GAAIjsB,GAAU,GAClByD,EAAImN,EAAEhO,MAAMF,GAAGZ,KAAK,GAAI2B,EAAEwqB,IAAIrd,GAAInN,EAAIA,EAAE3B,KAAK,GAChDmqB,EAASA,EAAO1pB,MAAMkB,EAExB,OAAOwoB,GAGT,KAAM,IAAI3sB,GAAKkB,MAAM6G,qBAAqB,eAAgB/H,EAAK,UAAUsR,IAQ3E,IAAIogB,GAAoB,SAASpgB,GAC/B,MAAOA,GAAElL,aAAekL,EAAEmd,IAAI,MAO7B,SAAS3vB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UAGtByF,GAFahH,EAAoB,IAEtBgK,EAAKhJ,OAAOgG,UACvBC,EAAY+C,EAAKhJ,OAAOiG,SAyB5BpG,GAAKwpB,aAAe,SAAuBlY,EAAGlO,GAC5C,GAAIuE,GAAKglB,EAAQxoB,EAAEuH,EAEfkmB,EAAQvqB,UAAUnB,MACtB,IAAa,GAAT0rB,EACF,KAAM,IAAI5xB,GAAKkB,MAAM0G,eAAe,eAAgBP,UAAUnB,OAAQ,EAGxE,IAAIC,EAASmL,GAAI,CACf,IAAKlL,EAAUkL,IAAU,EAAJA,EACnB,KAAM,IAAI7L,WAAU,2DAEtB,IAAIrC,EAAIkO,EACN,KAAM,IAAI7L,WAAU,oCAKtB,KAFAkC,EAAM9D,KAAK8D,IAAIvE,EAAGkO,EAAIlO,GACtBupB,EAAS,EACJxoB,EAAI,EAAQmN,EAAI3J,GAATxD,EAAcA,IACxBwoB,EAASA,GAAUhlB,EAAMxD,GAAKA,CAEhC,OAAOwoB,GAGT,GAAIrb,YAAa5Q,GAAW,CAK1B,GAFA0C,EAAI1C,EAAUM,QAAQoC,KAEhBA,YAAa1C,IAAegxB,EAAkBpgB,IAAOogB,EAAkBtuB,IAC3E,KAAM,IAAIqC,WAAU,2DAEtB,IAAIrC,EAAEorB,GAAGld,GACP,KAAM,IAAI7L,WAAU,iDAMtB,KAHAkC,EAAM2J,EAAEhO,MAAMF,GACVA,EAAE8a,GAAGvW,KAAMA,EAAMvE,GACrBupB,EAAS,GAAIjsB,GAAU,GAClByD,EAAI,GAAIzD,GAAU,GAAIgL,EAAK4F,EAAEhO,MAAMqE,GAAMxD,EAAEwqB,IAAIjjB,GAAKvH,EAAIA,EAAE3B,KAAK,GAClEmqB,EAASA,EAAO1pB,MAAM0E,EAAInF,KAAK2B,IAAI0tB,UAAU1tB,EAE/C,OAAOwoB,GAGT,KAAM,IAAI3sB,GAAKkB,MAAM6G,qBAAqB,eAAgB/H,EAAK,UAAUsR,IAQ3E,IAAIogB,GAAoB,SAASpgB,GAC/B,MAAOA,GAAElL,aAAekL,EAAEmd,IAAI,MAO7B,SAAS3vB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA6DzB,QAAS8xB,GAAYlvB,EAAGC,GACvB,MAAO7C,GAAKwoB,QAAQ5lB,EAAGC,GAAMD,EAAIC,EASlC,QAASkvB,GAAKpnB,GACZ,GAAIzD,GAAMpC,MAQV,IANApD,EAAW2e,YAAY1V,EAAO,SAAUzF,IAC1BJ,SAARoC,GAAqBlH,EAAKwoB,QAAQtjB,EAAOgC,MAC3CA,EAAMhC,KAIEJ,SAARoC,EACF,KAAM,IAAInH,OAAM,yCAGlB,OAAOmH,GAnFT,GACIxF,IADSvC,EAAoB,GAChBA,EAAoB,KAEjC4gB,EAAere,EAAWqe,YAiC9B/f,GAAKkH,IAAM,SAAa0D,GACtB,GAAwB,GAApBvD,UAAUnB,OACZ,KAAM,IAAIgC,aAAY,4DAGxB,IAAI6X,EAAanV,GAAO,CACtB,GAAwB,GAApBvD,UAAUnB,OAEZ,MAAO6rB,GAAKnnB,EAET,IAAwB,GAApBvD,UAAUnB,OAEjB,MAAOxE,GAAW0e,OAAO/Y,UAAU,GAAIA,UAAU,GAAIyqB,EAGrD,MAAM,IAAI5pB,aAAY,8BAKxB,MAAO6pB,GAAK1qB,cAkCb,SAASvI,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA6DzB,QAASgyB,GAAWpvB,EAAGC,GACtB,MAAO7C,GAAKsoB,OAAO1lB,EAAGC,GAAKD,EAAIC,EAShC,QAASovB,GAAKtnB,GACZ,GAAIhD,GAAM7C,MAQV,IANApD,EAAW2e,YAAY1V,EAAO,SAAUzF,IAC1BJ,SAAR6C,GAAqB3H,EAAKsoB,OAAOpjB,EAAOyC,MAC1CA,EAAMzC,KAIEJ,SAAR6C,EACF,KAAM,IAAI5H,OAAM,yCAGlB,OAAO4H,GAnFT,GACIjG,IADSvC,EAAoB,GAChBA,EAAoB,KAEjC4gB,EAAere,EAAWqe,YAiC9B/f,GAAK2H,IAAM,SAAaiD,GACtB,GAAwB,GAApBvD,UAAUnB,OACZ,KAAM,IAAIgC,aAAY,4DAGxB,IAAI6X,EAAanV,GAAO,CACtB,GAAwB,GAApBvD,UAAUnB,OAEZ,MAAO+rB,GAAKrnB,EAET,IAAwB,GAApBvD,UAAUnB,OAEjB,MAAOxE,GAAW0e,OAAO/Y,UAAU,GAAIA,UAAU,GAAI2qB,EAGrD,MAAM,IAAI9pB,aAAY,8BAKxB,MAAO+pB,GAAK5qB,cAkCb,SAASvI,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAoEzB,QAASkyB,GAAOvnB,EAAOwB,GACtB,GAAI+d,GAAMxoB,EAAW0e,OAAOzV,EAAOwB,EAAKnM,EAAKoiB,KACxC7I,EAAIvU,EAAQ2F,GAASO,EAAKP,GAASA,EAAMO,MAC7C,OAAOlL,GAAKqnB,OAAO6C,EAAK3Q,EAAEpN,IAS5B,QAASgmB,GAAMxnB,GACb,GAAIuf,GAAM,EACNhnB,EAAM,CAOV,IALAxB,EAAW2e,YAAY1V,EAAO,SAAUzF,GACtCglB,EAAMlqB,EAAKoiB,IAAI8H,EAAKhlB,GACpBhC,MAGU,IAARA,EACF,KAAM,IAAInD,OAAM,0CAGlB,OAAOC,GAAKqnB,OAAO6C,EAAKhnB,GA5F1B,GACIxB,IADSvC,EAAoB,GAChBA,EAAoB,KAEjC4gB,EAAere,EAAWqe,aAE1B7U,EAAO/L,EAAoB,KAAK+L,KAChClG,EAAUD,MAAMC,OA6BpBhF,GAAK8pB,KAAO,SAAclf,GACxB,GAAwB,GAApBvD,UAAUnB,OACZ,KAAM,IAAIgC,aAAY,6DAGxB,IAAI6X,EAAanV,GAAO,CACtB,GAAwB,GAApBvD,UAAUnB,OAEZ,MAAOisB,GAAMvnB,EAEV,IAAwB,GAApBvD,UAAUnB,OAEjB,MAAOgsB,GAAO7qB,UAAU,GAAIA,UAAU,GAGtC,MAAM,IAAIa,aAAY,8BAKxB,MAAOiqB,GAAM9qB,cA4Cd,SAASvI,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAqEzB,QAASoyB,GAAQznB,GACf,GAAIulB,GAAOhH,EAAQve,EAEnBulB,GAAKnF,KAAK/qB,EAAKqoB,QAEf,IAAInlB,GAAMgtB,EAAKhqB,MAEf,IAAW,GAAPhD,EACF,KAAM,IAAInD,OAAM,4CAGlB,IAAImD,EAAM,GAAK,EAAG,CAEhB,GAAImvB,GAAOnC,EAAKhtB,EAAM,EAAI,GACtBovB,EAAQpC,EAAKhtB,EAAM,EAEvB,MAAKiD,EAASksB,IAAWA,YAAgB3xB,IAAgB2xB,YAAgB9wB,IACvE,KAAM,IAAIvB,GAAKkB,MAAM6G,qBAAqB,SAAU/H,EAAK,UAAUqyB,GAErE,MAAKlsB,EAASmsB,IAAYA,YAAiB5xB,IAAgB4xB,YAAiB/wB,IAC1E,KAAM,IAAIvB,GAAKkB,MAAM6G,qBAAqB,SAAU/H,EAAK,UAAUsyB,GAGrE,OAAOtyB,GAAKqnB,OAAOrnB,EAAKoiB,IAAIiQ,EAAMC,GAAQ,GAI1C,GAAIC,GAASrC,GAAMhtB,EAAM,GAAK,EAE9B,MAAKiD,EAASosB,IAAaA,YAAkB7xB,IAAgB6xB,YAAkBhxB,IAC7E,KAAM,IAAIvB,GAAKkB,MAAM6G,qBAAqB,SAAU/H,EAAK,UAAUuyB,GAGrE,OAAOA,GArGX,GACIhxB,IADSpC,EAAoB,GACtBA,EAAoB,KAC3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjCgH,EAAWhH,EAAoB,GAAGgH,SAClC4Z,EAAere,EAAWqe,aAE1BmJ,EAAU/pB,EAAoB,KAAK+pB,OA4BvClpB,GAAK+pB,OAAS,SAAgBnf,GAC5B,GAAwB,GAApBvD,UAAUnB,OACZ,KAAM,IAAIgC,aAAY,+DAGxB,IAAI6X,EAAanV,GAAO,CACtB,GAAwB,GAApBvD,UAAUnB,OAEZ,MAAOksB,GAAQxnB,EAAKxF,UAEjB,MAAwB,IAApBiC,UAAUnB,OAGX,GAAInG,OAAM,uCAIV,GAAImI,aAAY,8BAKxB,MAAOkqB,GAAQrtB,MAAMhE,UAAU0qB,MAAMjsB,KAAK6H,eAmD3C,SAASvI,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA+DzB,QAASwyB,GAAM7nB,GACb,GAAIqf,GAAOllB,MAMX,IAJApD,EAAW2e,YAAY1V,EAAO,SAAUzF,GACtC8kB,EAAiBllB,SAATklB,EAAsB9kB,EAAQlF,EAAK8nB,SAASkC,EAAM9kB,KAG/CJ,SAATklB,EACF,KAAM,IAAIjqB,OAAM,0CAGlB,OAAOiqB,GAzET,GACItoB,IADSvC,EAAoB,GAChBA,EAAoB,KAEjC4gB,EAAere,EAAWqe,YA2B9B/f,GAAKgqB,KAAO,SAAcpf,GACxB,GAAwB,GAApBvD,UAAUnB,OACZ,KAAM,IAAIgC,aAAY,6DAGxB,IAAI6X,EAAanV,GAAO,CACtB,GAAwB,GAApBvD,UAAUnB,OAEZ,MAAOssB,GAAM5nB,EAEV,MAAwB,IAApBvD,UAAUnB,OAGX,GAAInG,OAAM,qCAIV,GAAImI,aAAY,8BAKxB,MAAOsqB,GAAMnrB,cA4Bd,SAASvI,GAEd,YAEAA,GAAOD,QAAU,SAAUmB,GA2CzBA,EAAKiqB,IAAM,WACT,GAAwB,GAApB5iB,UAAUnB,OACZ,KAAM,IAAIgC,aAAY,4DAGxB,IAAIuqB,GAAWzyB,EAAK,OAAOgM,MAAM,KAAM3E,UACvC,OAAOrH,GAAKyC,KAAKgwB,MAOhB,SAAS3zB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA6DzB,QAAS0yB,GAAK/nB,GACZ,GAAIuf,GAAMplB,MAMV,IAJApD,EAAW2e,YAAY1V,EAAO,SAAUzF,GACtCglB,EAAeplB,SAARolB,EAAqBhlB,EAAQlF,EAAKoiB,IAAI8H,EAAKhlB,KAGxCJ,SAARolB,EACF,KAAM,IAAInqB,OAAM,yCAGlB,OAAOmqB,GAvET,GACIxoB,IADSvC,EAAoB,GAChBA,EAAoB,KAEjC4gB,EAAere,EAAWqe,YAyB9B/f,GAAKkqB,IAAM,SAAatf,GACtB,GAAwB,GAApBvD,UAAUnB,OACZ,KAAM,IAAIgC,aAAY,4DAGxB,IAAI6X,EAAanV,GAAO,CACtB,GAAwB,GAApBvD,UAAUnB,OAEZ,MAAOwsB,GAAK9nB,EAET,MAAwB,IAApBvD,UAAUnB,OAGX,GAAInG,OAAM,oCAIV,GAAImI,aAAY,8BAKxB,MAAOwqB,GAAKrrB,cA4Bb,SAASvI,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAmGzB,QAAS2yB,GAAKhoB,EAAOioB,GACnB,GAAI1I,GAAM,EACNhnB,EAAM,CAOV,IAJAxB,EAAW2e,YAAY1V,EAAO,SAAUzF,GACtCglB,EAAMlqB,EAAKoiB,IAAI8H,EAAKhlB,GACpBhC,MAEU,IAARA,EAAW,KAAM,IAAInD,OAAM,yCAE/B,IAAI+pB,GAAO9pB,EAAKqnB,OAAO6C,EAAKhnB,EAS5B,QANAgnB,EAAM,EACNxoB,EAAW2e,YAAY1V,EAAO,SAAUzF,GACtC,GAAIwC,GAAO1H,EAAKioB,SAAS/iB,EAAO4kB,EAChCI,GAAMlqB,EAAKoiB,IAAI8H,EAAKlqB,EAAK8nB,SAASpgB,EAAMA,MAGlCkrB,GACN,IAAK,cACH,MAAO5yB,GAAKqnB,OAAO6C,EAAKhnB,EAE1B,KAAK,SACH,MAAOlD,GAAKqnB,OAAO6C,EAAKhnB,EAAM,EAEhC,KAAK,WACH,GAAIkpB,GAAQlC,YAAexpB,GAAa,GAAIA,GAAU,GAAK,CAC3D,OAAe,IAAPwC,EAAYkpB,EAAOpsB,EAAKqnB,OAAO6C,EAAKhnB,EAAM,EAEpD,SACE,KAAM,IAAInD,OAAM,0BAA4B6yB,EAAgB,gEAlIlE,GACIlyB,IADSvB,EAAoB,GACjBa,EAAKS,KAAKC,WACtBgB,EAAavC,EAAoB,IAEjC4gB,EAAere,EAAWqe,aAC1B1W,EAAWlK,EAAoB,KAAKkK,SAEpCwpB,EAAwB,UA4C5B7yB,GAAK,OAAS,SAAkB2K,EAAOioB,GACrC,GAAwB,GAApBvrB,UAAUnB,OACZ,KAAM,IAAIgC,aAAY,4DAGxB,IAAI6X,EAAapV,GAAQ,CACvB,GAAwB,GAApBtD,UAAUnB,OAEZ,MAAOysB,GAAKhoB,EAAOkoB,EAEhB,IAAwB,GAApBxrB,UAAUnB,OAAa,CAG9B,IAAKmD,EAASupB,GACZ,KAAM,IAAI7yB,OAAM,8CAGlB,OAAO4yB,GAAKhoB,EAAOioB,GAUnB,KAAM,IAAI1qB,aAAY,8BAKxB,MAAOyqB,GAAKtrB,UAAWwrB,MAwDxB,SAAS/zB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YAyB9B/f,GAAKmqB,KAAO,QAASA,GAAKvnB,GACxB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAIC,EAASvD,GACX,MAAIA,IAAK,IAAW,GAALA,EACNiB,KAAKsmB,KAAKvnB,GAGVunB,EAAK,GAAIhpB,GAAQyB,EAAG,GAI/B,IAAI2G,EAAU3G,GAAI,CAEhB,GAAI8qB,GAAQ,GAAIvsB,GACZyB,EAAEqF,GAAKrF,EAAEqF,GAAKrF,EAAEoF,GAAKpF,EAAEoF,GAAK,EAC5B,GAAOpF,EAAEoF,GAAKpF,EAAEqF,IAEhB0lB,EAAQ3tB,EAAKyC,KAAKirB,GAClBoF,EAAQ,GAAI3xB,GACZwsB,EAAM3lB,GAAKpF,EAAEqF,GACb0lB,EAAM1lB,GAAKrF,EAAEoF,IAEb+qB,EAAQ/yB,EAAKuQ,IAAIuiB,EAGrB,OAAO,IAAI3xB,GACP,mBAAyB4xB,EAAM9qB,GAC/B8qB,EAAM/qB,IAIZ,GAAI+X,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGunB,EAG/B,IAAIoB,EAAU3oB,IAAY,OAANA,EAClB,MAAOiB,MAAKsmB,KAAKvnB,EAGnB,IAAIA,YAAalC,GAGf,MAAOypB,GAAKvnB,EAAEmH,WAGhB,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YAyB9B/f,GAAKoqB,KAAO,QAASA,GAAKxnB,GACxB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAIC,EAASvD,GACX,MAAIA,IAAK,IAAW,GAALA,EACNiB,KAAKumB,KAAKxnB,GAGVwnB,EAAK,GAAIjpB,GAAQyB,EAAG,GAI/B,IAAI2G,EAAU3G,GAAI,CAEhB,GAAIoF,GAAKpF,EAAEoF,GACPC,EAAKrF,EAAEqF,GACPylB,EAAQ,GAAIvsB,GACZ8G,EAAKA,EAAKD,EAAKA,EAAK,EACpB,GAAOA,EAAKC,GAEZ0lB,EAAQ3tB,EAAKyC,KAAKirB,GAClBoF,EAAQ,GAAI3xB,GACZwsB,EAAM3lB,GAAKC,EACX0lB,EAAM1lB,GAAKD,GAEX+qB,EAAQ/yB,EAAKuQ,IAAIuiB,EAErB,OAAO,IAAI3xB,GAAQ4xB,EAAM9qB,IAAK8qB,EAAM/qB,IAGtC,GAAI+X,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGwnB,EAG/B,IAAImB,EAAU3oB,IAAY,OAANA,EAClB,MAAOiB,MAAKumB,KAAKxnB,EAGnB,IAAIA,YAAalC,GAGf,MAAO0pB,GAAKxnB,EAAEmH,WAGhB,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBwW,EAAere,EAAWqe,YAyB9B/f,GAAKqqB,KAAO,QAASA,GAAKznB,GACxB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAIC,EAASvD,GACX,MAAOiB,MAAKwmB,KAAKznB,EAGnB,IAAI2G,EAAU3G,GAAI,CAEhB,GAAIoF,GAAKpF,EAAEoF,GACPC,EAAKrF,EAAEqF,GACP4jB,EAAM7jB,EAAKA,GAAM,EAAMC,IAAO,EAAMA,GAEpCylB,EAAQ,GAAIvsB,IACX,EAAM8G,EAAKA,EAAKD,EAAKA,GAAM6jB,EAC3B,GAAO7jB,EAAM6jB,GAEd8B,EAAQ3tB,EAAKuQ,IAAImd,EAErB,OAAO,IAAIvsB,IACN,GAAMwsB,EAAM1lB,GACb,GAAM0lB,EAAM3lB,IAIlB,GAAI+X,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGynB,EAG/B,IAAIkB,EAAU3oB,IAAY,OAANA,EAClB,MAAOiB,MAAKwmB,KAAKznB,EAGnB,IAAIA,YAAalC,GAGf,MAAO2pB,GAAKznB,EAAEmH,WAGhB,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAE5BxL,GADY5e,EAAQoI,UACL7H,EAAWqe,aA+B9B/f,GAAKmK,MAAQ,QAASA,GAAMtH,EAAGD,GAC7B,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,QAASP,UAAUnB,OAAQ,EAGjE,IAAIC,EAAStD,IACPsD,EAASvD,GACX,MAAOiB,MAAKsG,MAAMtH,EAAGD,EAMzB,IAAImd,EAAald,IAAMkd,EAAand,GAClC,MAAOlB,GAAWue,SAASpd,EAAGD,EAAGuH,EAGnC,IAAIohB,EAAU1oB,IAAY,OAANA,EAClB,MAAOsH,IAAOtH,EAAGD,EAEnB,IAAI2oB,EAAU3oB,IAAY,OAANA,EAClB,MAAOuH,GAAMtH,GAAID,EAInB,IAAIC,YAAanC,GACf,MAAOyJ,GAAMtH,EAAEkH,WAAYnH,EAE7B,IAAIA,YAAalC,GACf,MAAOyJ,GAAMtH,EAAGD,EAAEmH,WAGpB,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,QAAS/H,EAAK,UAAU6C,GAAI7C,EAAK,UAAU4C,OAOpF,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YA4B9B/f,GAAKgK,IAAM,QAASA,GAAIpH,GACtB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIC,EAASvD,GACX,MAAOiB,MAAKmG,IAAIpH,EAGlB,IAAI2G,EAAU3G,GAEZ,MAAO,IAAIzB,GACP,GAAM0C,KAAKmG,IAAIpH,EAAEoF,KAAOnE,KAAKvB,KAAKM,EAAEqF,IAAMpE,KAAKvB,IAAIM,EAAEqF,KACrD,GAAMpE,KAAKoG,IAAIrH,EAAEoF,KAAOnE,KAAKvB,KAAKM,EAAEqF,IAAMpE,KAAKvB,IAAIM,EAAEqF,KAI3D,IAAImB,EAAOxG,GAAI,CACb,IAAKA,EAAEgH,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIrE,WAAW,mCAEvB,OAAO5B,MAAKmG,IAAIpH,EAAEsC,OAGpB,GAAI6a,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGoH,EAG/B,IAAIuhB,EAAU3oB,IAAY,OAANA,EAClB,MAAOiB,MAAKmG,IAAIpH,EAGlB,IAAIA,YAAalC,GAGf,MAAOsJ,GAAIpH,EAAEmH,WAGf,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,OAO/D,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAuB9B/f,GAAKsqB,KAAO,QAASA,GAAK1nB,GACxB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAIC,EAASvD,GACX,OAAQiB,KAAKvB,IAAIM,GAAKiB,KAAKvB,KAAKM,IAAM,CAGxC,IAAI2G,EAAU3G,GAAI,CAChB,GAAIowB,GAAKnvB,KAAKvB,IAAIM,EAAEoF,IAChBirB,EAAKpvB,KAAKvB,KAAKM,EAAEoF,GACrB,OAAO,IAAI7G,GAAQ0C,KAAKmG,IAAIpH,EAAEqF,KAAO+qB,EAAKC,GAAM,EAAGpvB,KAAKoG,IAAIrH,EAAEqF,KAAO+qB,EAAKC,GAAM,GAGlF,GAAI7pB,EAAOxG,GAAI,CACb,IAAKA,EAAEgH,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIrE,WAAW,oCAEvB,OAAO6kB,GAAK1nB,EAAEsC,OAGhB,GAAI6a,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAG0nB,EAG/B,IAAIiB,EAAU3oB,IAAY,OAANA,EAClB,MAAO0nB,GAAK1nB,EAAI,EAAI,EAGtB,IAAIA,YAAalC,GAGf,MAAO4pB,GAAK1nB,EAAEmH,WAGhB,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAuB9B/f,GAAKuqB,IAAM,QAASA,GAAI3nB,GACtB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIC,EAASvD,GACX,MAAO,GAAIiB,KAAKgnB,IAAIjoB,EAGtB,IAAI2G,EAAU3G,GAAI,CAChB,GAAIipB,GAAMhoB,KAAKvB,IAAI,GAAOM,EAAEqF,IACxB,EAAMpE,KAAKvB,IAAI,GAAOM,EAAEqF,IAAMpE,KAAKmG,IAAI,EAAMpH,EAAEoF,IAAM,CAEzD,OAAO,IAAI7G,GACP,EAAM0C,KAAKvB,IAAI,GAAOM,EAAEqF,IAAMpE,KAAKoG,IAAI,EAAMrH,EAAEoF,IAAM6jB,GACpDhoB,KAAKvB,IAAI,GAAOM,EAAEqF,IAAM,GAAO4jB,GAItC,GAAIziB,EAAOxG,GAAI,CACb,IAAKA,EAAEgH,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIrE,WAAW,mCAEvB,OAAO,GAAI5B,KAAKgnB,IAAIjoB,EAAEsC,OAGxB,GAAI6a,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAG2nB,EAG/B,IAAIgB,EAAU3oB,IAAY,OAANA,EAClB,MAAO2nB,IAAK3nB,EAGd,IAAIA,YAAalC,GAGf,MAAO6pB,GAAI3nB,EAAEmH,WAGf,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,OAO/D,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAyB9B/f,GAAKwqB,KAAO,QAASA,GAAK5nB,GACxB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAIC,EAASvD,GAAI,CACf,GAAIoB,GAAIH,KAAKvB,IAAI,EAAIM,EACrB,QAAQoB,EAAI,IAAMA,EAAI,GAGxB,GAAIuF,EAAU3G,GAAI,CAChB,GAAI0F,GAAIzE,KAAKvB,IAAI,EAAIM,EAAEoF,IACnBA,EAAKM,EAAIzE,KAAKmG,IAAI,EAAIpH,EAAEqF,IACxBA,EAAKK,EAAIzE,KAAKoG,IAAI,EAAIrH,EAAEqF,IACxB4jB,GAAO7jB,EAAK,IAAMA,EAAK,GAAKC,EAAKA,CACrC,OAAO,IAAI9G,KACP6G,EAAK,IAAMA,EAAK,GAAKC,EAAKA,GAAM4jB,EAClC,GAAK5jB,EAAK4jB,GAId,GAAIziB,EAAOxG,GAAI,CACb,IAAKA,EAAEgH,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIrE,WAAW,oCAEvB,OAAO+kB,GAAK5nB,EAAEsC,OAGhB,GAAI6a,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAG4nB,EAG/B,IAAIe,EAAU3oB,IAAY,OAANA,EAClB,MAAO4nB,GAAK5nB,EAAI,EAAI,EAGtB,IAAIA,YAAalC,GAGf,MAAO8pB,GAAK5nB,EAAEmH,WAGhB,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAuB9B/f,GAAKyqB,IAAM,QAASA,GAAI7nB,GACtB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIC,EAASvD,GACX,MAAO,GAAIiB,KAAKoG,IAAIrH,EAGtB,IAAI2G,EAAU3G,GAAI,CAEhB,GAAIipB,GAAM,KAAQhoB,KAAKvB,IAAI,GAAOM,EAAEqF,IAAMpE,KAAKvB,IAAI,EAAMM,EAAEqF,KACvD,GAAMpE,KAAKmG,IAAI,EAAMpH,EAAEoF,GAE3B,OAAO,IAAI7G,GACP,GAAM0C,KAAKoG,IAAIrH,EAAEoF,KAAOnE,KAAKvB,KAAKM,EAAEqF,IAAMpE,KAAKvB,IAAIM,EAAEqF,KAAO4jB,EAC5D,GAAMhoB,KAAKmG,IAAIpH,EAAEoF,KAAOnE,KAAKvB,KAAKM,EAAEqF,IAAMpE,KAAKvB,IAAIM,EAAEqF,KAAO4jB,GAIlE,GAAIziB,EAAOxG,GAAI,CACb,IAAKA,EAAEgH,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIrE,WAAW,mCAEvB,OAAO,GAAI5B,KAAKoG,IAAIrH,EAAEsC,OAGxB,GAAI6a,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAG6nB,EAG/B,IAAIc,EAAU3oB,IAAY,OAANA,EAClB,MAAO6nB,IAAK7nB,EAGd,IAAIA,YAAalC,GAGf,MAAO+pB,GAAI7nB,EAAEmH,WAGf,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,OAO/D,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IACjCgB,EAASgJ,EAAKhJ,OAEdgG,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAyB9B/f,GAAK0qB,KAAO,QAASA,GAAK9nB,GACxB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAIC,EAASvD,GAEX,MAAS,IAALA,EAAeuC,OAAOpC,IAEnBc,KAAKkD,IAAI,GAAKlD,KAAKvB,IAAIM,GAAKiB,KAAKvB,KAAKM,KAAOzC,EAAOgD,KAAKP,EAGlE,IAAI2G,EAAU3G,GAAI,CAChB,GAAIowB,GAAKnvB,KAAKvB,IAAIM,EAAEoF,IAChBirB,EAAKpvB,KAAKvB,KAAKM,EAAEoF,IACjBA,EAAKnE,KAAKmG,IAAIpH,EAAEqF,KAAO+qB,EAAKC,GAC5BhrB,EAAKpE,KAAKoG,IAAIrH,EAAEqF,KAAO+qB,EAAKC,GAC5BpH,EAAM7jB,EAAKA,EAAKC,EAAKA,CACzB,OAAO,IAAI9G,GAAQ,EAAI6G,EAAK6jB,EAAK,GAAK5jB,EAAI4jB,GAG5C,GAAIziB,EAAOxG,GAAI,CACb,IAAKA,EAAEgH,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIrE,WAAW,oCAEvB,OAAOilB,GAAK9nB,EAAEsC,OAGhB,GAAI6a,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAG8nB,EAG/B,IAAIa,EAAU3oB,IAAY,OAANA,EAClB,MAAO8nB,GAAK9nB,EAAI,EAAI,EAGtB,IAAIA,YAAalC,GAGf,MAAOgqB,GAAK9nB,EAAEmH,WAGhB,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAuB9B/f,GAAKwZ,IAAM,QAASA,GAAI5W,GACtB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIC,EAASvD,GACX,MAAO,GAAIiB,KAAKmG,IAAIpH,EAGtB,IAAI2G,EAAU3G,GAAI,CAEhB,GAAIipB,GAAM,KAAQhoB,KAAKvB,IAAI,GAAOM,EAAEqF,IAAMpE,KAAKvB,IAAI,EAAMM,EAAEqF,KACvD,GAAMpE,KAAKmG,IAAI,EAAMpH,EAAEoF,GAE3B,OAAO,IAAI7G,GACP,GAAM0C,KAAKmG,IAAIpH,EAAEoF,KAAOnE,KAAKvB,KAAKM,EAAEqF,IAAMpE,KAAKvB,IAAKM,EAAEqF,KAAO4jB,EAC7D,GAAMhoB,KAAKoG,IAAIrH,EAAEoF,KAAOnE,KAAKvB,IAAKM,EAAEqF,IAAMpE,KAAKvB,KAAKM,EAAEqF,KAAO4jB,GAInE,GAAIziB,EAAOxG,GAAI,CACb,IAAKA,EAAEgH,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIrE,WAAW,mCAEvB,OAAO,GAAI5B,KAAKmG,IAAIpH,EAAEsC,OAGxB,GAAI6a,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAG4W,EAG/B,IAAI+R,EAAU3oB,IAAY,OAANA,EAClB,MAAO4W,IAAK5W,EAGd,IAAIA,YAAalC,GAGf,MAAO8Y,GAAI5W,EAAEmH,WAGf,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,OAO/D,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAyB9B/f,GAAK2qB,KAAO,QAASA,GAAK/nB,GACxB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAIC,EAASvD,GACX,MAAO,IAAKiB,KAAKvB,IAAIM,GAAKiB,KAAKvB,KAAKM,GAGtC,IAAI2G,EAAU3G,GAAI,CAChB,GAAIowB,GAAKnvB,KAAKvB,IAAIM,EAAEoF,IAChBirB,EAAKpvB,KAAKvB,KAAKM,EAAEoF,IACjBA,EAAKnE,KAAKmG,IAAIpH,EAAEqF,KAAO+qB,EAAKC,GAC5BhrB,EAAKpE,KAAKoG,IAAIrH,EAAEqF,KAAO+qB,EAAKC,GAC5BpH,EAAM7jB,EAAKA,EAAKC,EAAKA,CACzB,OAAO,IAAI9G,GAAQ,EAAI6G,EAAK6jB,EAAK,GAAK5jB,EAAK4jB,GAG7C,GAAIziB,EAAOxG,GAAI,CACb,IAAKA,EAAEgH,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIrE,WAAW,oCAEvB,OAAOklB,GAAK/nB,EAAEsC,OAGhB,GAAI6a,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAG+nB,EAG/B,IAAIY,EAAU3oB,IAAY,OAANA,EAClB,MAAO+nB,GAAK/nB,EAAI,EAAI,EAGtB,IAAIA,YAAalC,GAGf,MAAOiqB,GAAK/nB,EAAEmH,WAGhB,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YA4B9B/f,GAAKiK,IAAM,QAASA,GAAIrH,GACtB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIC,EAASvD,GACX,MAAOiB,MAAKoG,IAAIrH,EAGlB,IAAI2G,EAAU3G,GACZ,MAAO,IAAIzB,GACP,GAAM0C,KAAKoG,IAAIrH,EAAEoF,KAAOnE,KAAKvB,KAAKM,EAAEqF,IAAMpE,KAAKvB,IAAKM,EAAEqF,KACtD,GAAMpE,KAAKmG,IAAIpH,EAAEoF,KAAOnE,KAAKvB,IAAKM,EAAEqF,IAAMpE,KAAKvB,KAAKM,EAAEqF,KAI5D,IAAImB,EAAOxG,GAAI,CACb,IAAKA,EAAEgH,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIrE,WAAW,mCAEvB,OAAO5B,MAAKoG,IAAIrH,EAAEsC,OAGpB,GAAI6a,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGqH,EAG/B,IAAIshB,EAAU3oB,IAAY,OAANA,EAClB,MAAOiB,MAAKoG,IAAIrH,EAGlB,IAAIA,YAAalC,GAGf,MAAOuJ,GAAIrH,EAAEmH,WAGf,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,OAO/D,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAuB9B/f,GAAK4qB,KAAO,QAASA,GAAKhoB,GACxB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAIC,EAASvD,GACX,OAAQiB,KAAKvB,IAAIM,GAAKiB,KAAKvB,KAAKM,IAAM,CAGxC,IAAI2G,EAAU3G,GAAI,CAChB,GAAIswB,GAAMrvB,KAAKmG,IAAIpH,EAAEqF,IACjBkrB,EAAMtvB,KAAKoG,IAAIrH,EAAEqF,IACjB+qB,EAAKnvB,KAAKvB,IAAIM,EAAEoF,IAChBirB,EAAKpvB,KAAKvB,KAAKM,EAAEoF,GACrB,OAAO,IAAI7G,GAAQ+xB,GAAOF,EAAKC,GAAM,EAAGE,GAAOH,EAAKC,GAAM,GAG5D,GAAI7pB,EAAOxG,GAAI,CACb,IAAKA,EAAEgH,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIrE,WAAW,oCAEvB,OAAOmlB,GAAKhoB,EAAEsC,OAGhB,GAAI6a,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGgoB,EAG/B,IAAIW,EAAU3oB,IAAY,OAANA,EAClB,MAAOgoB,GAAKhoB,EAAI,EAAI,EAGtB,IAAIA,YAAalC,GAGf,MAAOkqB,GAAKhoB,EAAEmH,WAGhB,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YAyB9B/f,GAAK6qB,IAAM,QAASA,GAAIjoB,GACtB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAIC,EAASvD,GACX,MAAOiB,MAAKgnB,IAAIjoB,EAGlB,IAAI2G,EAAU3G,GAAI,CAChB,GAAIipB,GAAMhoB,KAAKvB,IAAI,GAAOM,EAAEqF,IACxB,EAAMpE,KAAKvB,IAAI,GAAOM,EAAEqF,IAAMpE,KAAKmG,IAAI,EAAMpH,EAAEoF,IAC/C,CAEJ,OAAO,IAAI7G,GACP,EAAM0C,KAAKvB,IAAI,GAAOM,EAAEqF,IAAMpE,KAAKoG,IAAI,EAAMrH,EAAEoF,IAAM6jB,GACpD,EAAMhoB,KAAKvB,IAAI,GAAOM,EAAEqF,KAAO4jB,GAItC,GAAIziB,EAAOxG,GAAI,CACb,IAAKA,EAAEgH,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIrE,WAAW,mCAEvB,OAAO5B,MAAKgnB,IAAIjoB,EAAEsC,OAGpB,GAAI6a,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGioB,EAG/B,IAAIU,EAAU3oB,IAAY,OAANA,EAClB,MAAOiB,MAAKgnB,IAAIjoB,EAGlB,IAAIA,YAAalC,GAGf,MAAOmqB,GAAIjoB,EAAEmH,WAGf,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,OAO/D,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCgH,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,UAC5BhiB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YA0B9B/f,GAAK8qB,KAAO,QAASA,GAAKloB,GACxB,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAGhE,IAAIC,EAASvD,GAAI,CACf,GAAIoB,GAAIH,KAAKvB,IAAI,EAAIM,EACrB,QAAQoB,EAAI,IAAMA,EAAI,GAGxB,GAAIuF,EAAU3G,GAAI,CAChB,GAAI0F,GAAIzE,KAAKvB,IAAI,EAAIM,EAAEoF,IACnBA,EAAKM,EAAIzE,KAAKmG,IAAI,EAAIpH,EAAEqF,IACxBA,EAAKK,EAAIzE,KAAKoG,IAAI,EAAIrH,EAAEqF,IACxB4jB,GAAO7jB,EAAK,IAAMA,EAAK,GAAKC,EAAKA,CACrC,OAAO,IAAI9G,KACP6G,EAAK,IAAMA,EAAK,GAAKC,EAAKA,GAAM4jB,EAC7B,EAAL5jB,EAAS4jB,GAIb,GAAIziB,EAAOxG,GAAI,CACb,IAAKA,EAAEgH,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIrE,WAAW,oCAEvB,OAAOqlB,GAAKloB,EAAEsC,OAGhB,GAAI6a,EAAand,GACf,MAAOlB,GAAWse,QAAQpd,EAAGkoB,EAG/B,IAAIS,EAAU3oB,IAAY,OAANA,EAClB,MAAOkoB,GAAKloB,EAAI,EAAI,EAGtB,IAAIA,YAAalC,GAGf,MAAOoqB,GAAKloB,EAAEmH,WAGhB,MAAM,IAAI/J,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,OAOhE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCkK,EAAWF,EAAKG,OAAOD,SACvBD,EAAS7H,EAAK6H,OACd2W,EAAere,EAAWqe,YA0B9B/f,GAAKiQ,GAAK,QAASA,GAAGrN,EAAGiM,GACvB,GAAwB,GAApBxH,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,KAAMP,UAAUnB,OAAQ,EAG9D,IAAIkD,EAAOxG,KACLwG,EAAOyF,IAASxF,EAASwF,IAC3B,MAAOjM,GAAEqN,GAAGpB,EAMhB,IAAIkR,EAAand,IAAMmd,EAAalR,GAClC,MAAOnN,GAAWue,SAASrd,EAAGiM,EAAMoB,EAGtC,MAAM,IAAIjQ,GAAKkB,MAAM6G,qBAAqB,KAAM/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAU6O,OAOjF,SAAS/P,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAC3BoB,EAAS4I,EAAK5I,MAoBlBP,GAAKa,MAAQ,SAAgB+B,GAC3B,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,QAASP,UAAUnB,OAAQ,EAGjE,OAAO3F,GAAOM,MAAM+B,MAOnB,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAC3BmK,EAASH,EAAKG,MAkElBtJ,GAAKsG,OAAS,SAAiBpB,EAAO5E,GACpC,GAAI4C,GAAMmE,UAAUnB,MACpB,IAAY,IAARhD,GAAqB,IAARA,EACf,KAAM,IAAIlD,GAAKkB,MAAM0G,eAAe,SAAU1E,EAAK,EAAG,EAGxD,OAAOoG,GAAOhD,OAAOpB,EAAO5E,MAO3B,SAASxB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA2GzB,QAASozB,GAAQ1kB,EAAMxJ,EAAO5E,IACxBA,EAAQ+yB,UAA2BvuB,SAAf9E,EAAK0O,MAIzB1O,EAAK0O,GAFHpO,EAAQgzB,MAAyB,kBAAVpuB,GAEZ,WAEX,IAAK,GADD0F,MACKzG,EAAI,EAAG8B,EAAMoB,UAAUnB,OAAYD,EAAJ9B,EAASA,IAAK,CACpD,GAAIgE,GAAMd,UAAUlD,EACpByG,GAAKzG,GAAKgE,GAAOA,EAAI/C,UAEvB,MAAOF,GAAM8G,MAAMhM,EAAM4K,IAKd1F,EAIflF,EAAKiC,SAASC,SAASspB,YAAY9c,EAAMxJ,IAU7C,QAASquB,GAAgBhzB,GACvB,MAAyB,kBAAVA,IACX4F,EAAS5F,IAAW8I,EAAS9I,IAC7BgJ,EAAUhJ,IAAW6I,EAAO7I,GA3IlC,GAAI4I,GAAOhK,EAAoB,KAE3BgC,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAE3BgH,EAAWgD,EAAKhJ,OAAOgG,SACvBkD,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,MA+ClBpJ,GAAK,UAAY,QAASwzB,GAAYjzB,EAAQD,GAC5C,GAAI4C,GAAMmE,UAAUnB,MACpB,IAAW,GAAPhD,GAAmB,GAAPA,EACd,KAAM,IAAIlD,GAAKkB,MAAM0G,eAAe,SAAU1E,EAAK,EAAG,EAGxD,IAAIwL,GACA+kB,GACFJ,SAAU/yB,GAAWA,EAAQ+yB,WAAY,EACzCC,KAAUhzB,GAAWA,EAAQgzB,OAAQ,EAGvC,IAAIjqB,EAAS9I,GAAS,CAMlB,GAAImzB,GAAUv0B,EAAoB,KAAKoB,EACvCizB,GAAYE,EAASpzB,OAMpB,CAAA,GAAsB,gBAAXC,GAed,KAAM,IAAIkF,WAAU,iCAbpB,KAAKiJ,IAAQnO,GACX,GAAIA,EAAOoF,eAAe+I,GAAO,CAC/B,GAAIxJ,GAAQ3E,EAAOmO,EACf6kB,GAAgBruB,GAClBkuB,EAAQ1kB,EAAMxJ,EAAOuuB,GAGrBD,EAAYtuB,EAAO5E,QA0D1B,SAASxB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAsCzB,QAAS2zB,GAAWvI,EAAS/f,GAC3B,GAAI1C,MACA8F,EAAU,SAAUvJ,EAAOiH,GAC7B,MAAIpH,OAAMC,QAAQE,GACTA,EAAMD,IAAI,SAAUkI,EAAOhJ,GAEhC,MADAwE,GAAMwD,GAAOhI,EACNsK,EAAQtB,EAAOhB,EAAM,KAIvBd,EAASnG,EAAOyD,EAAOyiB,GAIlC,OAAO3c,GAAQ2c,EAAS,GAnD1B,GAAIhd,GAAWjP,EAAoB,GAAGiP,QAuBtCpO,GAAKiF,IAAM,SAAUrC,EAAGyI,GACtB,GAAwB,GAApBhE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,MAAOP,UAAUnB,OAAQ,EAG/D,IAAInB,MAAMC,QAAQpC,GAChB,MAAO+wB,GAAU/wB,EAAGyI,EACf,IAAI+C,EAASxL,GAClB,MAAOA,GAAEqC,IAAIoG,EAEb,MAAM,IAAIrL,GAAKkB,MAAM6G,qBAAqB,MAAO/H,EAAK,UAAU4C,OAyBjE,SAAS9D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BkK,EAAWF,EAAKG,OAAOD,QAqC3BrJ,GAAK4zB,MAAQ,SAAgBC,EAAU3nB,EAAQ9L,GAC7C,GAAI8C,GAAMmE,UAAUnB,MACpB,IAAW,GAAPhD,GAAmB,GAAPA,EACd,KAAM,IAAIlD,GAAKkB,MAAM0G,eAAe,QAAS1E,EAAK,EAAG,EAGvD,KAAKmG,EAASwqB,GACZ,KAAM,IAAIpuB,WAAU,wDAEtB,MAAMyG,YAAkBpM,SACtB,KAAM,IAAI2F,WAAU,yDAItB,OAAOouB,GAASzsB,QAAQ,eAAgB,SAAU0sB,EAAUpuB,GAGtD,IAFA,GAAIquB,GAAOruB,EAAImF,MAAM,KACjB3F,EAAQgH,EAAO6nB,EAAK1E,SACjB0E,EAAK7tB,QAAoBpB,SAAVI,GAAqB,CACzC,GAAI9B,GAAI2wB,EAAK1E,OACbnqB,GAAQ9B,EAAI8B,EAAM9B,GAAK8B,EAAQ,IAGjC,MAAcJ,UAAVI,EACGmE,EAASnE,GAILA,EAHAlF,EAAKsG,OAAOpB,EAAO9E,GAOvB0zB,OASZ,SAASh1B,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAIsB,GAASnC,EAAoB,EA2BjCa,GAAK+qB,KAAO,SAAUnoB,EAAGylB,GACvB,GAAI2L,GAAW,IAEf,IAAyB,IAArB3sB,UAAUnB,OACZ8tB,EAAWh0B,EAAKqoB,YAEb,CAAA,GAAyB,IAArBhhB,UAAUnB,OAiBjB,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,OAAQP,UAAUnB,OAAQ,EAAG,EAhBjE,IAAuB,kBAAZmiB,GACT2L,EAAW3L,MAER,IAAgB,QAAZA,EACP2L,EAAWh0B,EAAKqoB,YAEb,CAAA,GAAgB,SAAZA,EAMP,KAAM,IAAIroB,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAUqoB,GALpF2L,GAAW,SAAUnuB,EAAGC,GACtB,OAAQ9F,EAAKqoB,QAAQxiB,EAAGC,KAW9B,GAAIlD,YAAatB,GAAQ,CACvB,GAAI4J,GAAOtI,EAAEsI,MACb,IAAIA,EAAKhF,OAAS,EAChB,KAAM,IAAInG,OAAM,0CAElB,OAAO,IAAIuB,GAAOsB,EAAE2I,UAAUwf,KAAKiJ,IAEhC,GAAIjvB,MAAMC,QAAQpC,GACrB,MAAOA,GAAEmoB,KAAKiJ,EAGd,MAAM,IAAIh0B,GAAKkB,MAAM6G,qBAAqB,OAAQ/H,EAAK,UAAU4C,GAAI5C,EAAK,UAAUqoB,OAOrF,SAASvpB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAI2M,GAAQxN,EAAoB,KAE5BgC,EAAUhC,EAAoB,GAC9BmC,EAASnC,EAAoB,GAC7BoC,EAAOpC,EAAoB,IAC3BkC,EAAQlC,EAAoB,GAC5BiC,EAAQjC,EAAoB,GAC5BqC,EAAOrC,EAAoB,GAyC/Ba,GAAK,UAAY,SAAkB4C,GACjC,GAAwB,GAApByE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,SAAUP,UAAUnB,OAAQ,EAIlE,IAAIzF,GAAOkM,EAAMlM,KAAKmC,EAGtB,IAAa,WAATnC,EAAmB,CACrB,GAAImC,YAAazB,GAAS,MAAO,SACjC,IAAIyB,YAAatB,GAAQ,MAAO,QAChC,IAAIsB,YAAarB,GAAM,MAAO,MAC9B,IAAIqB,YAAavB,GAAO,MAAO,OAC/B,IAAIuB,YAAaxB,GAAO,MAAO,OAC/B,IAAIwB,YAAapB,GAAM,MAAO,MAG9B,IAAIoB,YAAa5C,GAAKS,KAAKC,UAAW,MAAO,WAC7C,IAAIkC,YAAa5C,GAAKiC,SAASC,SAAU,MAAO,WAGlD,MAAOzB,MAON,SAAS3B,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAoCzB,QAASi0B,GAAetpB,EAAOU,GAC7B,GAAI1C,MACA8F,EAAU,SAAUvJ,EAAOiH,GACzBpH,MAAMC,QAAQE,GAChBA,EAAMkG,QAAQ,SAAU+B,EAAOhJ,GAC7BwE,EAAMwD,GAAOhI,EACbsK,EAAQtB,EAAOhB,EAAM,KAIvBd,EAASnG,EAAOyD,EAAOgC,GAG3B8D,GAAQ9D,EAAO,GAhDjB,GAAIyD,GAAWjP,EAAoB,GAAGiP,QAqBtCpO,GAAKoL,QAAU,SAAUxI,EAAGyI,GAC1B,GAAwB,GAApBhE,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,UAAWP,UAAUnB,OAAQ,EAGnE,IAAInB,MAAMC,QAAQpC,GAChB,MAAOqxB,GAAcrxB,EAAGyI,EACnB,IAAI+C,EAASxL,GAClB,MAAOA,GAAEwI,QAAQC,EAEjB,MAAM,IAAIrL,GAAKkB,MAAM6G,qBAAqB,UAAW/H,EAAK,UAAU4C,OAwBrE,SAAS9D,EAAQD,EAASM,GAE/B,YAEA,EAAA,GAAIuB,GAAYvB,EAAoB,KAChCgH,EAAWhH,EAAoB,GAAGgH,QACzBhH,GAAoB,GAAG8B,OAOpCpC,EAAQq1B,YAAc,SAAShvB,GAC7B,MAAQA,aAAiBxE,IAmE3B7B,EAAQyH,OAAS,SAASpB,EAAO5E,GAC/B,GAAuB,kBAAZA,GAET,MAAOA,GAAQ4E,EAIjB,KAAKA,EAAMuC,WACT,MAAOvC,GAAMqB,QAAU,MAASrB,EAAMspB,GAAG,GAAK,WAAa,WAI7D,IAAIhoB,GAAW,OACXpG,EAAY0E,MAkBhB,QAhBgBA,SAAZxE,IAEEA,EAAQkG,WACVA,EAAWlG,EAAQkG,UAIjBL,EAAS7F,GACXF,EAAYE,EAELA,EAAQF,YACfA,EAAYE,EAAQF,YAKhBoG,GACN,IAAK,QACH,MAAO3H,GAAQ4H,QAAQvB,EAAO9E,EAEhC,KAAK,cACH,MAAOvB,GAAQ6H,cAAcxB,EAAO9E,EAEtC,KAAK,OAGH,GAAIuG,GAAQ,KACRC,EAAQ,GACRtG,IAAWA,EAAQuG,cACa/B,SAA9BxE,EAAQuG,YAAYF,QACtBA,EAAQrG,EAAQuG,YAAYF,OAEI7B,SAA9BxE,EAAQuG,YAAYD,QACtBA,EAAQtG,EAAQuG,YAAYD,OAKhC,IACEutB,SAAUjvB,EAAMpE,YAAYqzB,SAC5BC,SAAUlvB,EAAMpE,YAAYszB,WAS9B,GANAlvB,EAAMpE,YAAYjB,QAChBs0B,SAAUtwB,KAAKwC,MAAMxC,KAAK0M,IAAI5J,GAAS9C,KAAKW,MAC5C4vB,SAAUvwB,KAAKwC,MAAMxC,KAAK0M,IAAI3J,GAAS/C,KAAKW,QAI1CU,EAAMmnB,SAAU,MAAO,GAG3B,IAAIvlB,GACAC,EAAM7B,EAAM6B,KAWhB,OARED,GAFEC,EAAI0nB,IAAI9nB,IAAUI,EAAImX,GAAGtX,GAErB1B,EAAMmvB,oBAAoBj0B,GAAWqG,UAIrC5H,EAAQ6H,cAAcxB,EAAO9E,GAI9B0G,EAAIM,QAAQ,sBAAuB,WACxC,GAAInG,GAASoG,UAAU,GACnBrD,EAAIqD,UAAU,EAClB,OAAmB,MAAXpG,EAAkBA,EAAS+C,EAAIA,GAG3C,SACE,KAAM,IAAIjE,OAAM,qBAAuByG,EAAW,kDAaxD3H,EAAQ6H,cAAgB,SAASxB,EAAO9E,GACtC,MAAkB0E,UAAd1E,EACK8E,EAAMwB,cAActG,EAAY,GAGhC8E,EAAMwB,iBAUjB7H,EAAQ4H,QAAU,SAASvB,EAAO9E,GAChC,MAAO8E,GAAMuB,QAAQrG,GAAa,KAQ/B,SAAStB,EAAQD,EAASM,GAE/B,YAkBA,SAASyN,GAAMhK,GAGb,IAFA,GAAIsI,MAEGlG,EAAQpC,IACbsI,EAAKS,KAAK/I,EAAEsD,QACZtD,EAAIA,EAAE,EAGR,OAAOsI,GA+BT,QAASopB,GAAU3pB,EAAOO,EAAMiB,GAC9B,GAAIhI,GACA8B,EAAM0E,EAAMzE,MAEhB,IAAID,GAAOiF,EAAKiB,GACd,KAAM,IAAItE,GAAe5B,EAAKiF,EAAKiB,GAGrC,IAAIA,EAAMjB,EAAKhF,OAAS,EAAG,CAEzB,GAAIquB,GAAUpoB,EAAM,CACpB,KAAKhI,EAAI,EAAO8B,EAAJ9B,EAASA,IAAK,CACxB,GAAIgJ,GAAQxC,EAAMxG,EAClB,KAAKa,EAAQmI,GACX,KAAM,IAAItF,GAAeqD,EAAKhF,OAAS,EAAGgF,EAAKhF,OAAQ,IAEzDouB,GAAU3pB,EAAMxG,GAAI+G,EAAMqpB,QAK5B,KAAKpwB,EAAI,EAAO8B,EAAJ9B,EAASA,IACnB,GAAIa,EAAQ2F,EAAMxG,IAChB,KAAM,IAAI0D,GAAeqD,EAAKhF,OAAS,EAAGgF,EAAKhF,OAAQ;CA2F/D,QAASsuB,GAAS7pB,EAAOO,EAAMiB,EAAKmB,GAClC,GAAInJ,GACAgK,EACAsmB,EAAS9pB,EAAMzE,OACfwuB,EAASxpB,EAAKiB,GACdwoB,EAAS9wB,KAAKqD,IAAIutB,EAAQC,EAK9B,IAFA/pB,EAAMzE,OAASwuB,EAEXvoB,EAAMjB,EAAKhF,OAAS,EAAG,CAEzB,GAAIquB,GAAUpoB,EAAM,CAGpB,KAAKhI,EAAI,EAAOwwB,EAAJxwB,EAAYA,IAEtBgK,EAAOxD,EAAMxG,GACRa,EAAQmJ,KACXA,GAAQA,GACRxD,EAAMxG,GAAKgK,GAEbqmB,EAAQrmB,EAAMjD,EAAMqpB,EAASjnB,EAI/B,KAAKnJ,EAAIwwB,EAAYD,EAAJvwB,EAAYA,IAE3BgK,KACAxD,EAAMxG,GAAKgK,EAGXqmB,EAAQrmB,EAAMjD,EAAMqpB,EAASjnB,OAG5B,CAIH,IAAKnJ,EAAI,EAAOwwB,EAAJxwB,EAAYA,IACtB,KAAOa,EAAQ2F,EAAMxG,KACnBwG,EAAMxG,GAAKwG,EAAMxG,GAAG,EAIxB,IAAGmJ,IAAiBzO,EAAQwF,cAE1B,IAAKF,EAAIwwB,EAAYD,EAAJvwB,EAAYA,IAC3BwG,EAAMxG,GAAK5D,EAAOM,MAAMyM,IA6ChC,QAASsnB,GAAUjqB,EAAOsC,EAAMd,GAC9B,GAAIhI,GAAGuH,CAEP,IAAUuB,EAANd,EAAY,CACd,GAAI3D,GAAO2D,EAAM,CACjB,KAAKhI,EAAI,EAAGuH,EAAKf,EAAMzE,OAAYwF,EAAJvH,EAAQA,IACrCwG,EAAMxG,GAAKywB,EAASjqB,EAAMxG,GAAI8I,EAAMzE,OAItC,MAAOxD,EAAQ2F,IACbA,EAAQA,EAAM,EAIlB,OAAOA,GAwCT,QAASkqB,GAAYlqB,EAAOsC,EAAMd,GAChC,GAAIhI,GAAGuH,CAEP,IAAI1G,EAAQ2F,GAAQ,CAClB,GAAInC,GAAO2D,EAAM,CACjB,KAAKhI,EAAI,EAAGuH,EAAKf,EAAMzE,OAAYwF,EAAJvH,EAAQA,IACrCwG,EAAMxG,GAAK0wB,EAAWlqB,EAAMxG,GAAI8I,EAAMzE,OAIxC,KAAK,GAAI4I,GAAIjF,EAASc,EAAJmE,EAAUA,IAC1BzG,GAASA,EAIb,OAAOA,GA5UT,GAAIxK,GAAShB,EAAoB,GAC7BmK,EAASnK,EAAoB,KAC7BoB,EAASpB,EAAoB,GAG7B0I,GAFQ1I,EAAoB,KAEXA,EAAoB,MACrC2I,EAAa3I,EAAoB,KAEjC6F,EAAUD,MAAMC,OA2BpBnG,GAAQqM,KAAO,SAAStI,GAEtB,GAAI2W,GAAI3M,EAAMhK,EAMd,OAHA/D,GAAQi2B,SAASlyB,EAAG2W,GAGbA,GAgDT1a,EAAQi2B,SAAW,SAASnqB,EAAOO,GACjC,GAAIkB,GAA2B,GAAflB,EAAKhF,MACrB,IAAIkG,GAEF,GAAIpH,EAAQ2F,GACV,KAAM,IAAI9C,GAAe8C,EAAMzE,OAAQ,OAKzCouB,GAAU3pB,EAAOO,EAAM,IAS3BrM,EAAQkO,cAAgB,SAASpE,EAAOzC,GACtC,IAAK/F,EAAOgG,SAASwC,KAAWxI,EAAOiG,UAAUuC,GAC/C,KAAM,IAAIlD,WAAU,oCAAsCkD,EAAQ,IAEpE,IAAY,EAARA,EACF,KAAM,IAAIb,GAAWa,EAEvB,IAAe7D,SAAXoB,GAAwByC,GAASzC,EACnC,KAAM,IAAI4B,GAAWa,EAAOzC,IAKhCrH,EAAQwF,iBAWRxF,EAAQqP,OAAS,SAASvD,EAAOO,EAAMoC,GAIrC,IAAKtI,EAAQ2F,KAAW3F,EAAQkG,GAC9B,KAAM,IAAIzF,WAAU,iBAEtB,IAAoB,IAAhByF,EAAKhF,OACP,KAAM,IAAInG,OAAM,sCAIlBmL,GAAKE,QAAQ,SAAUlG,GACrB,IAAK/E,EAAOgG,SAASjB,KAAW/E,EAAOiG,UAAUlB,IAAkB,EAARA,EACzD,KAAM,IAAIO,WAAU,uDACJ6D,EAAOhD,OAAO4E,GAAQ,MAK1C,IAAI6pB,GAAkCjwB,SAAjBwI,EAA8BA,EAAe,CAGlE,OAFAknB,GAAQ7pB,EAAOO,EAAM,EAAG6pB,GAEjBpqB,GAyET9L,EAAQwqB,QAAU,SAAS1e,EAAOO,GAIhC,IAHA,GAAIqO,GAAIrO,GAAQrM,EAAQqM,KAAKP,GAGtB3F,EAAQ2F,IAA2B,IAAjBA,EAAMzE,QAC7ByE,EAAQA,EAAM,GACd4O,EAAE8V,OAKJ,KADA,GAAIpiB,GAAOsM,EAAErT,OACU,IAAhBqT,EAAEtM,EAAO,IACdA,GASF,OALIA,GAAOsM,EAAErT,SACXyE,EAAQiqB,EAASjqB,EAAOsC,EAAM,GAC9BsM,EAAErT,OAAS+G,GAGNtC,GAsCT9L,EAAQ8O,UAAY,SAAShD,EAAOsC,EAAMS,EAAOxC,GAC/C,GAAIqO,GAAIrO,GAAQrM,EAAQqM,KAAKP,EAG7B,IAAI+C,EACF,IAAK,GAAIvJ,GAAI,EAAOuJ,EAAJvJ,EAAWA,IACzBwG,GAASA,GACT4O,EAAEyb,QAAQ,EAMd,KADArqB,EAAQkqB,EAAWlqB,EAAOsC,EAAM,GACzBsM,EAAErT,OAAS+G,GAChBsM,EAAE5N,KAAK,EAGT,OAAOhB,IAmCT9L,EAAQqqB,QAAU,SAASve,GAIzB,IAHA,GAAIulB,GAAOvlB,EACP3F,EAAUD,MAAMC,QAEbA,EAAQkrB,EAAK,KAAK,CAEvB,IAAK,GADD1nB,MACKrE,EAAI,EAAGuH,EAAKwkB,EAAKhqB,OAAYwF,EAAJvH,EAAQA,IACxCqE,EAAOA,EAAK0iB,OAAOlf,MAAMxD,EAAM0nB,EAAK/rB,GAEtC+rB,GAAO1nB,EAGT,MAAO0nB,IAQTrxB,EAAQihB,YAAc,SAASlV,GAE7B,IAAK,GADDD,MACKxG,EAAI,EAAG8B,EAAM2E,EAAK1E,OAAYD,EAAJ9B,EAASA,IAC1CwG,EAAMxG,GAAKyG,EAAKzG,EAElB,OAAOwG,IAQT9L,EAAQmG,QAAUA,GAIb,SAASlG,GAEdA,EAAOD,QAAU,mBAOZ,SAASC,GAEd,YAWA,SAAS8I,GAAe4b,EAAIyR,EAAO/tB,EAAKS,GACtC,KAAM1I,eAAgB2I,IACpB,KAAM,IAAIM,aAAY,mDAGxBjJ,MAAKukB,GAAKA,EACVvkB,KAAKg2B,MAAQA,EACbh2B,KAAKiI,IAAMA,EACXjI,KAAK0I,IAAMA,EAEX1I,KAAKgnB,QAAU,yCAA2CzC,EACtD,KAAOyR,EAAQ,cACf/tB,GAAepC,QAAP6C,EAAqB,IAAMA,EAAO,IAAM,aAEpD1I,KAAKi2B,OAAQ,GAAKn1B,QAASm1B,MAG7BttB,EAAe7G,UAAY,GAAIhB,OAC/B6H,EAAe7G,UAAUD,YAAcf,MACvC6H,EAAe7G,UAAU2N,KAAO,iBAEhC5P,EAAOD,QAAU+I,GAKZ,SAAS9I,GAEd,YAWA,SAAS+I,GAAestB,EAAQC,EAAUC,GACxC,KAAMp2B,eAAgB4I,IACpB,KAAM,IAAIK,aAAY,mDAGxBjJ,MAAKk2B,OAAWA,EAChBl2B,KAAKm2B,SAAWA,EAChBn2B,KAAKo2B,SAAWA,EAEhBp2B,KAAKgnB,QAAU,wBACVlhB,MAAMC,QAAQmwB,GAAW,IAAMA,EAAO5oB,KAAK,MAAQ,IAAO4oB,GAC3D,KAAOl2B,KAAKo2B,UAAY,MAAQ,KAC/BtwB,MAAMC,QAAQowB,GAAa,IAAMA,EAAS7oB,KAAK,MAAQ,IAAO6oB,GAC/D,IAEJn2B,KAAKi2B,OAAQ,GAAKn1B,QAASm1B,MAG7BrtB,EAAe9G,UAAY,GAAIosB,YAC/BtlB,EAAe9G,UAAUD,YAAcqsB,WACvCtlB,EAAe9G,UAAU2N,KAAO,iBAEhC5P,EAAOD,QAAUgJ,GAKZ,SAAS/I,GAEd,YAYA,SAASgJ,GAAWa,EAAOzB,EAAKS,GAC9B,KAAM1I,eAAgB6I,IACpB,KAAM,IAAII,aAAY,mDAGxBjJ,MAAK0J,MAAQA,EACTtB,UAAUnB,OAAS,GACrBjH,KAAKiI,IAAM,EACXjI,KAAK0I,IAAMT,IAGXjI,KAAKiI,IAAMA,EACXjI,KAAK0I,IAAMA,GAIX1I,KAAKgnB,QADUnhB,SAAb7F,KAAKiI,KAAqBjI,KAAK0J,MAAQ1J,KAAKiI,IAC/B,uBAAyBjI,KAAK0J,MAAQ,MAAQ1J,KAAKiI,IAAM,IAEpDpC,SAAb7F,KAAK0I,KAAqB1I,KAAK0J,OAAS1J,KAAK0I,IACrC,uBAAyB1I,KAAK0J,MAAQ,OAAS1J,KAAK0I,IAAM,GAAK,IAG/D,uBAAyB1I,KAAK0J,MAAQ,IAGvD1J,KAAKi2B,OAAQ,GAAKn1B,QAASm1B,MAG7BptB,EAAW/G,UAAY,GAAIosB,YAC3BrlB,EAAW/G,UAAUD,YAAcqsB,WACnCrlB,EAAW/G,UAAU2N,KAAO,aAE5B5P,EAAOD,QAAUiJ,GAKZ,SAAShJ,GAEd,YASA,SAASiJ,GAAqByb,GAC5B,KAAMvkB,eAAgB8I,IACpB,KAAM,IAAIG,aAAY,mDAGxBjJ,MAAKukB,GAAKA,EACVvkB,KAAK0N,MAAQ5H,MAAMhE,UAAUu0B,OAAO91B,KAAK6H,UAAW,GAOhDpI,KAAKgnB,QALJzC,EAIsB,GAArBvkB,KAAK0N,MAAMzG,OACE,4CAA8Csd,EAG9C,YAAcA,EAAK,IAAMvkB,KAAK0N,MAAMJ,KAAK,MAAQ,kBAPnD,+BAWjBtN,KAAKi2B,OAAQ,GAAKn1B,QAASm1B,MAG7BntB,EAAqBhH,UAAY,GAAI0E,WACrCsC,EAAqBhH,UAAUD,YAAc2E,UAC7CsC,EAAqBhH,UAAU2N,KAAO,uBAEtC5P,EAAOD,QAAUkJ,GAKZ,SAASjJ,EAAQD,EAASM,GAE/B,GAAIo2B,IACH,SAAWC,GACR,YA6xDA,SAASC,GAAoB5vB,GAMzB,IALA,GAAI0T,GAAG/H,EACHrN,EAAI,EACJub,EAAI7Z,EAAEK,OACNoC,EAAIzC,EAAE,GAAK,GAEH6Z,EAAJvb,EAAOA,IAAM,CAGjB,IAFAoV,EAAI1T,EAAE1B,GAAK,GAELqN,EAAIkkB,EAAUnc,EAAErT,OAAQsL,KAC1B+H,EAAI,IAAMA,CAGdjR,IAAKiR,EAGT,IAAMmG,EAAIpX,EAAEpC,OAAyB,KAAjBoC,EAAEO,SAAS6W,KAE/B,MAAOpX,GAAEmjB,MAAO,EAAG/L,EAAI,GAAK,GAmBhC,QAASiW,GAAqBj2B,EAAGyE,EAAGyxB,EAAIC,GACpC,GAAIC,GAAI1yB,EAAGkO,EAAGhJ,EAAGuN,CAGjB,KAAMzS,EAAI,EAAGkO,EAAI5R,EAAE,GAAI4R,GAAK,GAAIA,GAAK,GAAIlO,KAoDzC,MAlDAkO,GAAInN,EAAIf,EAGC,EAAJkO,GACDA,GAAKokB,EACLI,EAAK,IAELA,EAAKjyB,KAAKsH,MAAQmG,EAAI,GAAMokB,GAC5BpkB,GAAKokB,GAGTtyB,EAAG2yB,EAAS,GAAIL,EAAUpkB,GAC1BuE,EAAKnW,EAAEo2B,GAAM1yB,EAAI,EAEC,MAAbyyB,EAEQ,EAAJvkB,GAES,GAALA,EACDuE,EAAKA,EAAK,IAAM,EACH,GAALvE,IACRuE,EAAKA,EAAK,GAAK,GAGnBvN,EAAS,EAALstB,GAAgB,OAAN/f,GAAe+f,EAAK,GAAW,OAAN/f,GAAqB,KAANA,GAAqB,GAANA,GAErEvN,GAAW,EAALstB,GAAU/f,EAAK,GAAKzS,GAAKwyB,EAAK,GAAK/f,EAAK,GAAKzS,EAAI,KACjD1D,EAAEo2B,EAAK,GAAK1yB,EAAI,IAAM,IAAO2yB,EAAS,GAAIzkB,EAAI,GAAM,IAChDuE,GAAMzS,EAAI,GAAW,GAANyS,IAA4C,IAA7BnW,EAAEo2B,EAAK,GAAK1yB,EAAI,IAAM,GAIzD,EAAJkO,GAES,GAALA,EACDuE,EAAKA,EAAK,IAAO,EACJ,GAALvE,EACRuE,EAAKA,EAAK,IAAM,EACH,GAALvE,IACRuE,EAAKA,EAAK,GAAK,GAGnBvN,GAAMutB,GAAkB,EAALD,IAAkB,MAAN/f,IAAeggB,GAAaD,EAAK,GAAW,MAAN/f,GAErEvN,IAAQutB,GAAkB,EAALD,IAAY/f,EAAK,GAAKzS,IACxCyyB,GAAaD,EAAK,GAAO/f,EAAK,GAAKzS,EAAI,KACpC1D,EAAEo2B,EAAK,GAAK1yB,EAAI,IAAO,IAAO2yB,EAAS,GAAIzkB,EAAI,GAAM,EAI5DhJ,EAOX,QAAS0tB,GAASpzB,EAAGgzB,EAAIK,GACrB,GAAIC,GAAUtzB,EAAe,WAE7B,OAAa,OAANgzB,KAAkBO,EAAkB,EAALP,GAAUA,EAAK,IAC5C,IAAPA,IAAcM,EAAgB,OAAIE,SAAWjvB,YAAayuB,IAAOA,KAC9DS,EAAmBH,EAAS,gBAAiBN,EAAIK,EAAQ,GACtDC,EAAkB,SAAS,EAALN,EAOlC,QAASU,GAAU1zB,EAAG0O,EAAG2kB,EAAQ/uB,GAC7B,GAAIgvB,GAAUtzB,EAAe,WAE7B,SAAUuzB,GAAmBjvB,GAAO,GAAboK,GAAoBA,GAAKilB,EAAa,KAMnD,IAANjlB,IAAa4kB,EAAgB,OAAIE,SAAWjvB,YAAamK,IAAMA,IAC/D+kB,EAAmBH,EAAS,WAAY5kB,EAAG2kB,EAAQ,GA4d3D,QAAS3zB,GAAKM,EAAG4zB,GACb,GAAIC,GAAOC,EAAOhX,EAAGzM,EAAK0jB,EAAIzM,EAAKsC,EAC/BoK,EAAM,EACNzyB,EAAI,EACJf,EAAI,EACJ8yB,EAAUtzB,EAAe,YACzBotB,EAAMkG,EAAa,IACnBN,EAAKM,EAAkB,SACvB91B,EAAY81B,EAAmB,SAGnC,KAAMtzB,EAAK,IAAMA,EAAK,EAAE,IAAMA,EAAK,EAAI,GAEnC,MAAO,IAAIszB,GAAStzB,EAAK,EACpBA,EAAK,EAAE,GAAWA,EAAK,EAAI,EAAI,EAAI,EAAI,EAA3BotB,EACbptB,EAAK,EAAIA,EAAK,EAAI,EAAI,EAAIA,EAAIG,IA4BtC,KAzBW,MAANyzB,GAgBDK,GAAW,EACXF,EAAKv2B,GAELu2B,EAAKH,EAGThK,EAAI,GAAI0J,GAAQ,QAGRtzB,EAAK,EAAI,IAGbA,EAAIA,EAAS,MAAE4pB,GACfppB,GAAK,CAaT,KANAszB,EAAQ7yB,KAAK0M,IAAKwlB,EAAS,EAAG3yB,IAAQS,KAAKW,KAAO,EAAI,EAAI,EAC1DmyB,GAAMD,EAEND,EAAQxjB,EAAMiX,EAAM,GAAIgM,GAAQlG,GAChCkG,EAAmB,UAAIS,IAEX,CAKR,GAJA1jB,EAAM6jB,EAAK7jB,EAAW,MAAErQ,GAAI+zB,EAAI,GAChCF,EAAQA,EAAa,QAAItyB,GACzBqoB,EAAItC,EAAU,KAAGxnB,EAAKuQ,EAAKwjB,EAAOE,EAAI,IAEjClB,EAAqBjJ,EAAK,GAAIf,MAAO,EAAGkL,KACxClB,EAAqBvL,EAAO,GAAIuB,MAAO,EAAGkL,GAAO,CAGlD,IAFAjX,EAAItc,EAEIsc,KACJwK,EAAM4M,EAAK5M,EAAW,MAAEA,GAAMyM,EAAI,EAYtC,IAAW,MAANH,EAcD,MAFAN,GAAmB,UAAI91B,EAEhB8pB,CAZP,MAAW,EAAN0M,GAAWjB,EAAqBzL,EAAO,EAAGyM,EAAKD,EAAOd,EAAIgB,IAO3D,MAAOE,GAAK5M,EAAKgM,EAAmB,UAAI91B,EAAWw1B,EAAIiB,GAAW,EANlEX,GAAmB,UAAIS,GAAM,GAC7BF,EAAQxjB,EAAMuZ,EAAI,GAAI0J,GAAQlG,GAC9B7rB,EAAI,EACJyyB,IAWZ1M,EAAMsC,GAad,QAASlmB,GAAQgL,EAAGnN,EAAGub,EAAGtc,GACtB,GAAImW,GAAG/H,EACH0kB,EAAU5kB,EAAe,YACzBtN,GAAMsN,EAAI,GAAI4kB,GAAQ5kB,IAAQ,CAsBlC,IAnBU,MAALnN,EACDub,EAAI,GAEJoX,EAAKxlB,IAAKnN,EAAGub,GAGbA,EAAItc,EAAIe,EAAIA,EAAImN,EAAK,EAAItN,GAG7BA,EAAIsN,EAAK,EACTiI,EAAIkc,EAAqBnkB,EAAK,GASpB,GAALlO,GAAe,GAALA,IAAiBY,GAALG,GAAUH,GAAKkyB,EAAkB,UAAM,CAG9D,KAAQ3c,EAAErT,OAASwZ,EAAGnG,GAAK,KAEtBA,EAAErT,OAAS,IACZqT,EAAIA,EAAE1Q,OAAO,GAAK,IAAM0Q,EAAEkS,MAAM,IAGpClS,IAAW,EAAJvV,EAAQ,IAAM,MAASA,MAG3B,CAIH,GAHAZ,EAAImW,EAAErT,OAGG,EAAJlC,EAAQ,CAIT,IAHAwN,EAAIkO,EAAItc,IAGEY,EAAGuV,EAAI,IAAMA,GACvBA,EAAI,KAAOA,MAKX,MAAOvV,EAAIZ,EAAI,CAIX,IAHAoO,EAAIkO,EAAI1b,EAGFA,GAAKZ,EAAGY,IAAMuV,GAAK,KAEpB/H,EAAI,IACL+H,GAAK,SAIT/H,GAAIkO,EAAItc,EAECA,EAAJY,EACDuV,EAAIA,EAAEkS,MAAO,EAAGznB,GAAM,IAAMuV,EAAEkS,MAAMznB,GAC5BwN,EAAI,IACZ+H,GAAK,IAMjB,IAAK/H,EAAI,EAEL,KAAQA,IAAK+H,GAAK,MAI1B,MAAOjI,GAAK,EAAI,GAAKA,EAAK,EAAE,GAAK,IAAMiI,EAAIA,EAI/C,QAASwd,GAAer3B,GACpB,GAAI2tB,GAAI3tB,EAAEwG,OAAS,EACfoL,EAAI+b,EAAIqI,EAAU,CAEtB,IAAKrI,EAAI3tB,EAAE2tB,GAAK,CAGZ,KAAQA,EAAI,IAAM,EAAGA,GAAK,GAAI/b,KAG9B,IAAM+b,EAAI3tB,EAAE,GAAI2tB,GAAK,GAAIA,GAAK,GAAI/b,MAGtC,MAAOA,GAOX,QAAS+kB,GAAmBH,EAASjQ,EAAS9d,EAAK8tB,EAAQe,GAEvD,GAAKd,EAAgB,OAAI,CACrB,GAAIh1B,GAAQ,GAAInB,QAASk2B,IACvB,cAAe,MAAO,MAAO,KAAM,KAAM,MAAO,KAAM,MAAO,QAAS,MACtE,OAAQ,QAAS,aAAc,MAAO,SAAU,MAAO,OAAQ,YAAa,YACzE32B,EAAU,EAALA,GAAUA,EAAKA,EAAc,EAAT,EAAIA,EAAS,EAAI,IAAQ,QACrD,kDAAmD,sBAAuB2mB,IACvEA,IAAckQ,EAAa,gBAAkB,kBAChD,kCAAmCa,IAAS,KAAS,KAAO7uB,EAK9D,MAHAjH,GAAY,KAAI,gBAChBi1B,EAAa72B,EAAK,EAEZ4B,GAQd,QAAS+1B,GAAQf,EAAStzB,EAAGuB,GACzB,GAAImE,GAAI,GAAI4tB,GAASA,EAAa,IAElC,KAAMW,GAAW,EAEJ,EAAJ1yB,IACDmE,EAAIA,EAAS,MAAE1F,IAEnBuB,IAAM,EAEAA,GAINvB,EAAIA,EAAS,MAAEA,EAInB,OAFAi0B,IAAW,EAEJvuB,EAgBX,QAAS/D,GAAI1B,EAAG2zB,GACZ,GAAI92B,GAAGw3B,EAAIT,EAAOzyB,EAAGd,EAAK0zB,EAAKD,EAAIzM,EAAKsC,EAAG2K,EAAIn0B,EAC3CsO,EAAI,EACJolB,EAAQ,GACR9zB,EAAIC,EACJu0B,EAAKx0B,EAAK,EACVszB,EAAUtzB,EAAe,YACzBotB,EAAMkG,EAAa,IACnBN,EAAKM,EAAkB,SACvB91B,EAAY81B,EAAmB,SAGnC,IAAKtzB,EAAK,EAAI,IAAMw0B,IAAOA,EAAG,KAAOx0B,EAAK,GAAc,GAATw0B,EAAG,IAAwB,GAAbA,EAAGlxB,OAE5D,MAAO,IAAIgwB,GAASkB,IAAOA,EAAG,GAAK,GAAK,EAAc,GAAVx0B,EAAK,EAASG,IAAMq0B,EAAK,EAAIx0B,EAe7E,IAZW,MAAN4zB,GACDK,GAAW,EACXF,EAAKv2B,GAELu2B,EAAKH,EAGTN,EAAmB,UAAIS,GAAMD,EAE7Bh3B,EAAI+1B,EAAoB2B,GACxBF,EAAKx3B,EAAEmJ,OAAO,KAEThF,KAAKkD,IAAK/C,EAAIpB,EAAK,GAAM,OAiD1B,MAZAA,GAAI,GAAIszB,GAASgB,EAAK,IAAMx3B,EAAE+rB,MAAM,IAE/BkL,EAAK,EAAInyB,EAAK0B,QACfmwB,EAAmBH,EAAS,EAAGS,EAAK,EAAG,MAG3C/zB,EAAI2B,EAAI3B,EAAG+zB,EAAKD,GAAc,KAC1B,GAAIR,GAAS1xB,EAAKinB,MAAO,EAAGkL,EAAK,IAAa,MAAG3yB,EAAI,KAGzDkyB,EAAmB,UAAI91B,EAEV,MAANo2B,EAAaM,EAAKl0B,EAAGxC,EAAWw1B,EAAIiB,GAAW,GAASj0B,CAlC/D,MAAa,EAALs0B,GAAgB,GAANA,GAAiB,GAANA,GAAWx3B,EAAEmJ,OAAO,GAAK,GAClDjG,EAAIA,EAAS,MAAEC,GACfnD,EAAI+1B,EAAqB7yB,EAAK,GAC9Bs0B,EAAKx3B,EAAEmJ,OAAO,GACdyI,GA8CR,KA3CItN,EAAIpB,EAAK,EAEJs0B,EAAK,GACNt0B,EAAI,GAAIszB,GAAS,KAAOx2B,GACxBsE,KAEApB,EAAI,GAAIszB,GAASgB,EAAK,IAAMx3B,EAAE+rB,MAAM,IAyB5C0L,EAAKv0B,EAQLsnB,EAAMhnB,EAAMN,EAAIF,EAAKE,EAAS,MAAEotB,GAAMptB,EAAQ,KAAEotB,GAAM2G,EAAI,GAC1D3zB,EAAK8zB,EAAKl0B,EAAS,MAAEA,GAAI+zB,EAAI,GAC7BF,EAAQ,IAEI,CAIR,GAHAvzB,EAAM4zB,EAAK5zB,EAAW,MAAEF,GAAK2zB,EAAI,GACjCnK,EAAItC,EAAU,KAAGxnB,EAAKQ,EAAK,GAAIgzB,GAAQO,GAAQE,EAAI,IAE9ClB,EAAqBjJ,EAAK,GAAIf,MAAO,EAAGkL,KACxClB,EAAqBvL,EAAO,GAAIuB,MAAO,EAAGkL,GAAO,CA+BlD,GA9BAzM,EAAMA,EAAW,MAAE,GAOR,IAANlmB,IAEI2yB,EAAK,EAAInyB,EAAK0B,QACfmwB,EAAmBH,EAAS,EAAGS,EAAK,EAAG,MAG3CzM,EAAMA,EAAU,KACZ,GAAIgM,GAAS1xB,EAAKinB,MAAO,EAAGkL,EAAK,IAAa,MAAG3yB,EAAI,MAI7DkmB,EAAMxnB,EAAKwnB,EAAK,GAAIgM,GAAQ5kB,GAAIqlB,EAAI,GAYzB,MAANH,EAcD,MAFAN,GAAmB,UAAI91B,EAEhB8pB,CAZP,KAAKyL,EAAqBzL,EAAO,EAAGyM,EAAKD,EAAOd,EAAIgB,GAOhD,MAAOE,GAAK5M,EAAKgM,EAAmB,UAAI91B,EAAWw1B,EAAIiB,GAAW,EANlEX,GAAmB,UAAIS,GAAMD,EAC7BlK,EAAItpB,EAAMN,EAAIF,EAAKy0B,EAAU,MAAEnH,GAAMmH,EAAS,KAAEnH,GAAM2G,EAAI,GAC1D3zB,EAAK8zB,EAAKl0B,EAAS,MAAEA,GAAI+zB,EAAI,GAC7BF,EAAQG,EAAM,EAY1B1M,EAAMsC,EACNiK,GAAS,GAQhB,QAASK,GAAKl0B,EAAG+zB,EAAIf,EAAIttB,GACtB,GAAIrH,GAAQkD,EAAGub,EAAGtc,EAAGkO,EAAGuE,EAAIuhB,EAAIC,EAC5BnB,EAAUtzB,EAAe,WAG7B0F,GAAG,GAAKquB,GAAMxyB,EAAI,CAGd,KAAQizB,EAAKx0B,EAAK,GAEd,MAAOA,EAcX,KAAM3B,EAAS,EAAGmC,EAAIg0B,EAAG,GAAIh0B,GAAK,GAAIA,GAAK,GAAInC,KAK/C,GAHAkD,EAAIwyB,EAAK11B,EAGA,EAAJkD,EACDA,GAAKuxB,EACLhW,EAAIiX,EACJrlB,EAAI8lB,EAAIC,EAAM,GAGdxhB,EAAKvE,EAAIykB,EAAS,GAAI90B,EAASye,EAAI,GAAM,GAAK,MAI9C,IAFA2X,EAAMxzB,KAAKsH,MAAQhH,EAAI,GAAMuxB,GAExB2B,GAAOD,EAAGlxB,OAAS,CAEpB,IAAIoC,EAWF,KAAMA,EARJ,MAAQ8uB,EAAGlxB,QAAUmxB,EAAKD,EAAGzrB,KAAK,IAElC2F,EAAIuE,EAAK,EACT5U,EAAS,EACTkD,GAAKuxB,EACLhW,EAAIvb,EAAIuxB,EAAU,MAKnB,CAIH,IAHApkB,EAAIlO,EAAIg0B,EAAGC,GAGLp2B,EAAS,EAAGmC,GAAK,GAAIA,GAAK,GAAInC,KAGpCkD,GAAKuxB,EAILhW,EAAIvb,EAAIuxB,EAAUz0B,EAIlB4U,EAAS,EAAJ6J,EAAQ,EAAI4X,EAAWhmB,EAAIykB,EAAS,GAAI90B,EAASye,EAAI,GAAM,IAqBxE,GAjBApX,EAAIA,GAAU,EAALquB,GAEQ,MAAfS,EAAGC,EAAM,KAAoB,EAAJ3X,EAAQpO,EAAIA,EAAIykB,EAAS,GAAI90B,EAASye,EAAI,IAQrEpX,EAAS,EAALstB,GACE/f,GAAMvN,KAAe,GAANstB,GAAWA,IAAQhzB,EAAK,EAAI,EAAI,EAAI,IACrDiT,EAAK,GAAW,GAANA,IAAmB,GAAN+f,GAAWttB,GAE5B,GAANstB,IAAezxB,EAAI,EAAIub,EAAI,EAAIpO,EAAIykB,EAAS,GAAI90B,EAASye,GAAM,EAAI0X,EAAGC,EAAM,IAAO,GAAO,GACxFzB,IAAQhzB,EAAK,EAAI,EAAI,EAAI,IAErB,EAAL+zB,IAAWS,EAAG,GAiBf,MAhBAA,GAAGlxB,OAAS,EAERoC,GAGAquB,GAAM/zB,EAAK,EAAI,EAGfw0B,EAAG,GAAKrB,EAAS,GAAIY,EAAKjB,GAC1B9yB,EAAK,GAAK+zB,GAAM,GAIhBS,EAAG,GAAKx0B,EAAK,EAAI,EAGdA,CAmBX,IAdU,GAALuB,GACDizB,EAAGlxB,OAASmxB,EACZj0B,EAAI,EACJi0B,MAEAD,EAAGlxB,OAASmxB,EAAM,EAClBj0B,EAAI2yB,EAAS,GAAIL,EAAUvxB,GAI3BizB,EAAGC,GAAO3X,EAAI,GAAMpO,EAAIykB,EAAS,GAAI90B,EAASye,GAAMqW,EAAS,GAAIrW,GAAM,GAAMtc,EAAI,GAIjFkF,EAEA,OAAY,CAGR,GAAY,GAAP+uB,EAAW,CAGZ,IAAMlzB,EAAI,EAAGub,EAAI0X,EAAG,GAAI1X,GAAK,GAAIA,GAAK,GAAIvb,KAI1C,IAFAub,EAAI0X,EAAG,IAAMh0B,EAEPA,EAAI,EAAGsc,GAAK,GAAIA,GAAK,GAAItc,KAG1Be,GAAKf,IACNR,EAAK,IAEAw0B,EAAG,IAAMG,IACVH,EAAG,GAAK,GAIhB,OAIA,GAFAA,EAAGC,IAAQj0B,EAENg0B,EAAGC,IAAQE,EAEZ,KAGJH,GAAGC,KAAS,EACZj0B,EAAI,EAMhB,IAAMe,EAAIizB,EAAGlxB,OAAoB,IAAZkxB,IAAKjzB,GAAUizB,EAAGtG,QAmB3C,MAhBI+F,KAGKj0B,EAAK,EAAIszB,EAAc,KAGxBtzB,EAAK,EAAIA,EAAK,EAAI,KAGVA,EAAK,EAAIszB,EAAc,OAG/BtzB,EAAK,GAAMA,EAAK,EAAI,KAIrBA,EA58FX,GAAI40B,GAAaC,EAMbtB,EALAuB,EAASlC,EAAe,OACxBqB,GAAW,EACXv3B,EAAK,EACLg4B,EAAYzzB,KAAK6jB,MACjBqO,EAAUlyB,KAAKoP,IAEf1I,EAAWzK,OAAOiB,UAAUwJ,SAC5BgtB,EAAO,IACP7B,EAAU,EACViC,EAAW,mEACX1mB,KAMA2mB,EAAY,KAMZrB,EAAa,IAObsB,EAAgB,IAGhBrzB,EAAO,ogCAUXyM,GAAiB,cAAIA,EAAO,IAAI,WAC5B,GAAIrO,GAAI,GAAI3D,MAAkB,YAAEA,KAMhC,OAJK2D,GAAK,EAAI,IACVA,EAAK,EAAI,GAGNk0B,EAAIl0B,IASfqO,EAAQ,KAAI,WAER,MAAO6lB,GAAK,GAAI73B,MAAkB,YAAEA,MAAOA,KAAQ,EAAI,EAAG,IAY9DgS,EAAc,WAAIA,EAAO,IAAI,SAAWpO,EAAGiD,GACvC,GAAID,GACAjD,EAAI3D,KACJm4B,EAAKx0B,EAAK,EACVk1B,GAAOx4B,GAAMA,EAAIuD,EAAI,GAAID,GAAe,YAAGC,EAAGiD,GAAKjD,EAAK,GACxDsB,EAAIvB,EAAK,EACT8c,EAAI7c,EAAK,EACTO,EAAIR,EAAK,EACT8T,EAAI7T,EAAK,CAGb,KAAMsB,IAAMub,EACR,MAAO,KAOX,IAJA7Z,EAAIuxB,IAAOA,EAAG,GACdtxB,EAAIgyB,IAAOA,EAAG,GAGTjyB,GAAKC,EACN,MAAOD,GAAIC,EAAI,GAAK4Z,EAAIvb,CAI5B,IAAKA,GAAKub,EACN,MAAOvb,EAMX,IAHA0B,EAAQ,EAAJ1B,GAGEizB,IAAOU,EACT,MAAO10B,IAAKsT,EAAI,GAAK0gB,EAAKvxB,EAAI,EAAI,EAItC,IAAKzC,GAAKsT,EACN,MAAOtT,GAAIsT,EAAI7Q,EAAI,EAAI,EAI3B,KAAM1B,EAAI,GACJub,GAAMtc,EAAIg0B,EAAGlxB,SAAawQ,EAAIohB,EAAG5xB,QAAW9C,EAAIsT,IAC9CvS,EAAIub,GAER,GAAK0X,EAAGjzB,IAAM2zB,EAAG3zB,GACb,MAAOizB,GAAGjzB,GAAK2zB,EAAG3zB,GAAK0B,EAAI,EAAI,EAKvC,OAAOzC,IAAKsT,EAAI,EAAItT,EAAIsT,EAAI7Q,EAAI,EAAI,IAQvCoL,EAAiB,cAAIA,EAAM,GAAI,WAC5B,GAAIvR,GAAG2tB,EACH/b,EAAI,IAER,IAAK5R,EAAIT,KAAQ,EAAI,CAGjB,GAFAqS,IAAQ+b,EAAI3tB,EAAEwG,OAAS,GAAMoxB,EAAWr4B,KAAQ,EAAIy2B,IAAcA,EAE7DrI,EAAI3tB,EAAE2tB,GAGP,KAAQA,EAAI,IAAM,EAAGA,GAAK,GAAI/b,KAGzB,EAAJA,IACDA,EAAI,GAIZ,MAAOA,IAyBXL,EAAa,UAAIA,EAAO,IAAI,SAAWpO,EAAGiD,GAGtC,MAFAxG,GAAK,EAEEoD,EAAKzD,KAAM,GAAIA,MAAkB,YAAG4D,EAAGiD,KAUlDmL,EAAsB,mBAAIA,EAAY,SAAI,SAAWpO,EAAGiD,GACpD,GAAIlD,GAAI3D,KACJi3B,EAAUtzB,EAAe,WAG7B,OAFAtD,GAAK,GAEEw3B,EACLp0B,EAAKE,EAAG,GAAIszB,GAASrzB,EAAGiD,GAAK,EAAG,EAAG,GAAKowB,EAAmB,UAAGA,EAAkB,WAUtFjlB,EAAU,OAAIA,EAAM,GAAI,SAAWK,EAAGxL,GAGlC,MAFAxG,GAAK,EAE0B,IAAxBL,KAAU,IAAGqS,EAAGxL,IAU3BmL,EAAe,YAAIA,EAAO,IAAI,WAE1B,MAAO3O,GAAIrD,OASfgS,EAAS,MAAI,WAET,MAAO6lB,GAAK,GAAI73B,MAAkB,YAAEA,MAAOA,KAAQ,EAAI,EAAG,IAS9DgS,EAAe,YAAIA,EAAM,GAAI,SAAWK,EAAGxL,GAGvC,MAFAxG,GAAK,EAEEL,KAAU,IAAGqS,EAAGxL,GAAM,GASjCmL,EAAwB,qBAAIA,EAAO,IAAI,SAAWK,EAAGxL,GAIjD,MAHAxG,GAAK,EACLwG,EAAI7G,KAAU,IAAGqS,EAAGxL,GAER,GAALA,GAAgB,IAANA,GAQrBmL,EAAY,SAAI,WAEZ,QAAShS,KAAQ,GAQrBgS,EAAa,UAAIA,EAAS,MAAI,WAE1B,QAAShS,KAAQ,GAAKq4B,EAAWr4B,KAAQ,EAAIy2B,GAAYz2B,KAAQ,EAAEiH,OAAS,GAQhF+K,EAAS,MAAI,WAET,OAAQhS,KAAQ,GAQpBgS,EAAc,WAAIA,EAAS,MAAI,WAE3B,MAAOhS,MAAQ,EAAI,GAQvBgS,EAAU,OAAI,WAEV,QAAShS,KAAQ,GAAqB,GAAhBA,KAAQ,EAAE,IAQpCgS,EAAY,SAAIA,EAAM,GAAI,SAAWK,EAAGxL,GAGpC,MAFAxG,GAAK,EAEEL,KAAU,IAAGqS,EAAGxL,GAAM,GASjCmL,EAAqB,kBAAIA,EAAO,IAAI,SAAWK,EAAGxL,GAI9C,MAHAxG,GAAK,EACLwG,EAAI7G,KAAU,IAAGqS,EAAGxL,GAER,IAALA,GAAiB,IAANA,GAmCtBmL,EAAa,UAAIA,EAAO,IAAI,SAAWlB,EAAMjK,GACzC,GAAIiyB,GAAQr4B,EAAG+2B,EAAOtyB,EAAG6zB,EAAK90B,EAAKyzB,EAAIsB,EAAM3vB,EACzCH,EAAMlJ,KACNi3B,EAAU/tB,EAAiB,YAC3BquB,EAAKN,EAAmB,UACxBN,EAAKM,EAAkB,SACvBQ,EAAQ,CAGZ,IAAa,MAAR3mB,EACDA,EAAO,GAAImmB,GAAQ,IACnB6B,GAAS,MACN,CAMH,GALAz4B,EAAK,GACLyQ,EAAO,GAAImmB,GAASnmB,EAAMjK,GAC1BpG,EAAIqQ,EAAQ,EAGPA,EAAQ,EAAI,IAAMrQ,IAAMA,EAAE,KAAOqQ,EAAQ,GAAa,GAARrQ,EAAE,IAAuB,GAAZA,EAAEwG,OAE9D,MAAO,IAAIgwB,GAAQnzB,IAEvBg1B,GAAShoB,EAAS,GAAE,IAKxB,GAHArQ,EAAIyI,EAAO,EAGNA,EAAO,EAAI,IAAMzI,IAAMA,EAAE,KAAOyI,EAAO,GAAa,GAARzI,EAAE,IAAuB,GAAZA,EAAEwG,OAE5D,MAAO,IAAIgwB,GAASx2B,IAAMA,EAAE,GAAK,GAAK,EAAgB,GAAZyI,EAAO,EAASpF,IAAMrD,EAAI,EAAI,EAAI,EAqDhF,IA9CAs4B,EAAMD,IAAY5zB,EAAIzE,EAAE,GAAIA,EAAEwG,OAAS,GAAU,GAAL/B,GAAe,IAALA,GAC/C,KAALA,GAAiB,KAALA,GAAiB,KAALA,GAAiB,KAALA,GAAiB,KAALA,GAUlD0yB,GAAW,EACXF,EAAKH,EAAKE,EACVuB,EAAOtB,EAAK,GAEZzzB,EAAMqB,EAAI4D,EAAKwuB,GAEXoB,GAEKE,EAAOzzB,EAAK0B,QACbmwB,EAAmBH,EAAS,EAAG+B,EAAM,OAEzCxB,EAAQ,GAAIP,GAAS1xB,EAAKinB,MAAO,EAAGwM,KAEpCxB,EAAQlyB,EAAIwL,EAAM4mB,GAItBruB,EAAI5F,EAAKQ,EAAKuzB,EAAOE,EAAI,GAkBpBhB,EAAqBrtB,EAAK,EAAGnE,EAAIqyB,EAAIZ,GAEtC,EAiBI,IAhBAe,GAAM,GACNzzB,EAAMqB,EAAI4D,EAAKwuB,GAEXoB,GACAE,EAAOtB,EAAK,GAEPsB,EAAOzzB,EAAK0B,QACbmwB,EAAmBH,EAAS,EAAG+B,EAAM,OAEzCxB,EAAQ,GAAIP,GAAS1xB,EAAKinB,MAAO,EAAGwM,KAEpCxB,EAAQlyB,EAAIwL,EAAM4mB,GAGtBruB,EAAI5F,EAAKQ,EAAKuzB,EAAOE,EAAI,IAEnBqB,EAAM,EAGFvC,EAAqBntB,EAAK,GAAImjB,MAAOtnB,EAAI,EAAGA,EAAI,IAAO,GAAK,OAC9DmE,EAAIwuB,EAAKxuB,EAAGkuB,EAAK,EAAG,GAGxB,aAEEb,EAAqBrtB,EAAK,EAAGnE,GAAK,GAAIyxB,GAIpD,OAFAiB,IAAW,EAEJC,EAAKxuB,EAAGkuB,EAAIZ,IAyBvB3kB,EAAS,MAAI,SAAWpO,EAAGiD,GACvB,GAAI0mB,GAAGroB,EAAGub,EAAGwY,EACTt1B,EAAI3D,KACJi3B,EAAUtzB,EAAe,YACzBiD,EAAIjD,EAAK,CAOb,IALAtD,EAAK,EACLuD,EAAI,GAAIqzB,GAASrzB,EAAGiD,GACpBA,EAAIjD,EAAK,GAGHgD,IAAMC,EAER,MAAO,IAAIowB,GAAQnzB,IAIvB,IAAK8C,GAAKC,EAGN,MAFAjD,GAAK,GAAKiD,EAEHlD,EAAQ,KAAEC,EAGrB,IAAIu0B,GAAKx0B,EAAK,EACVk1B,EAAKj1B,EAAK,EACVmB,EAAIszB,EAAWz0B,EAAK,EAAI6yB,GACxBtyB,EAAIk0B,EAAW10B,EAAK,EAAI8yB,GACxBc,EAAKN,EAAmB,UACxBN,EAAKM,EAAkB,QAE3B,KAAM9yB,IAAMY,EAAI,CAGZ,IAAMozB,IAAOU,EAET,MAAOV,IAAOv0B,EAAK,GAAKiD,EAAGjD,GAAM,GAAIqzB,GAAS4B,EAAKl1B,EAAIG,IAI3D,KAAMq0B,EAAG,KAAOU,EAAG,GAQf,MALAl1B,GAAIk1B,EAAG,IAAOj1B,EAAK,GAAKiD,EAAGjD,GAAM,GAAIqzB,GAASkB,EAAG,GAAKx0B,EAG9C,GAANgzB,GAAW,EAAI,GAEViB,EAAWC,EAAKl0B,EAAG4zB,EAAIZ,GAAOhzB,EAQ7C,GAJAw0B,EAAKA,EAAG3L,QACRtnB,EAAIizB,EAAGlxB,OAGFL,EAAIzC,EAAIY,EAAI,CA0Bb,KAxBKk0B,EAAW,EAAJryB,IACRA,GAAKA,EACL2mB,EAAI4K,EACJjzB,EAAI2zB,EAAG5xB,SAEPlC,EAAIZ,EACJopB,EAAIsL,IAGD10B,EAAIS,KAAKsH,KAAMqrB,EAAKd,IAAcvxB,IACrCA,EAAIf,GASHyC,GAAM1B,GAAK,KACZ0B,EAAI1B,EACJqoB,EAAEtmB,OAAS,GAGTsmB,EAAE2L,UAAWryB,EAAID,EAAGC,IAAK0mB,EAAE7gB,KAAK,IACtC6gB,EAAE2L,cAQF,MAJKD,EAAO/zB,GAAMub,EAAIoY,EAAG5xB,WACrBwZ,EAAIvb,GAGF0B,EAAIC,EAAI,EAAO4Z,EAAJ5Z,EAAOA,IAEpB,GAAKsxB,EAAGtxB,IAAMgyB,EAAGhyB,GAAK,CAClBoyB,EAAOd,EAAGtxB,GAAKgyB,EAAGhyB,EAElB,OAeZ,GATKoyB,IACD1L,EAAI4K,EAAIA,EAAKU,EAAIA,EAAKtL,EACtB3pB,EAAK,GAAKA,EAAK,IAOZiD,KAAS4Z,EAAI0X,EAAGlxB,QAAW4xB,EAAG5xB,SAAa,EAE9C,KAAQJ,IAAKsxB,EAAG1X,KAAO,GAI3B,IAAMtc,EAAIm0B,EAAO,EAAGzxB,EAAIgyB,EAAG5xB,OAAQJ,EAAID,GAAK,CAExC,GAAKuxB,IAAKtxB,GAAKgyB,EAAGhyB,GAAK,CAEnB,IAAM3B,EAAI2B,EAAG3B,IAAMizB,IAAKjzB,GAAIizB,EAAGjzB,GAAKf,KAClCg0B,EAAGjzB,GACLizB,EAAGtxB,IAAMyxB,EAEbH,EAAGtxB,IAAMgyB,EAAGhyB,GAIhB,KAAmB,GAAXsxB,IAAK1X,GAAS0X,EAAGtG,OAGzB,KAAiB,GAATsG,EAAG,GAASA,EAAG/H,UAAWrrB,GAclC,IAZMozB,EAAG,KAGLA,GAAOpzB,EAAI,GAGXnB,EAAK,EAAU,GAAN+yB,EAAU,GAAK,GAG5B/yB,EAAK,EAAIu0B,EAGHvxB,EAAI,EAAGC,EAAIsxB,EAAG,GAAItxB,GAAK,GAAIA,GAAK,GAAID,KAG1C,MAFAhD,GAAK,EAAIgD,EAAI7B,EAAI0xB,EAAU,EAEpBmB,EAAWC,EAAKj0B,EAAG2zB,EAAIZ,GAAO/yB,GA4BzCoO,EAAU,OAAIA,EAAO,IAAI,SAAWpO,EAAGiD,GACnC,GAAIwL,GAAG4c,EACHtrB,EAAI3D,KACJi3B,EAAUtzB,EAAe,YACzBnD,EAAIy2B,EAAgB,MAWxB,OATA52B,GAAK,EACLuD,EAAI,GAAIqzB,GAASrzB,EAAGiD,GACpBA,EAAIjD,EAAK,EACTyO,GAAK1O,EAAK,IAAMkD,GAAKjD,EAAK,IAAMA,EAAK,EAAE,GAMlCyO,IAAMzO,EAAK,GAAKD,EAAK,IAAMA,EAAK,EAAE,GAE5B0O,EACH,GAAI4kB,GAAQnzB,KACZ+zB,EAAK,GAAIZ,GAAQtzB,GAAIszB,EAAmB,UAAGA,EAAkB,WAGrEW,GAAW,EAED,GAALp3B,GAIDoD,EAAK,EAAI,EACTqrB,EAAIxrB,EAAKE,EAAGC,EAAG,EAAG,EAAG,GACrBA,EAAK,EAAIiD,EACTooB,EAAK,GAAKpoB,GAEVooB,EAAIxrB,EAAKE,EAAGC,EAAG,EAAGpD,EAAG,GAGzByuB,EAAIA,EAAS,MAAErrB,GACfg0B,GAAW,EAEJj0B,EAAS,MAAEsrB,KAStBjd,EAAoB,iBAAIA,EAAM,GAAI,WAE9B,MAAO1M,GAAGtF,OASdgS,EAAW,QAAIA,EAAO,IAAI,WACtB,GAAIrO,GAAI,GAAI3D,MAAkB,YAAEA,KAGhC,OAFA2D,GAAK,GAAKA,EAAK,GAAK,KAEbk0B,EAAIl0B,IAyBfqO,EAAQ,KAAI,SAAWpO,EAAGiD,GACtB,GAAI0mB,GACA5pB,EAAI3D,KACJi3B,EAAUtzB,EAAe,YACzBiD,EAAIjD,EAAK,CAOb,IALAtD,EAAK,GACLuD,EAAI,GAAIqzB,GAASrzB,EAAGiD,GACpBA,EAAIjD,EAAK,GAGHgD,IAAMC,EAER,MAAO,IAAIowB,GAAQnzB,IAIvB,IAAK8C,GAAKC,EAGN,MAFAjD,GAAK,GAAKiD,EAEHlD,EAAS,MAAEC,EAGtB,IAAIu0B,GAAKx0B,EAAK,EACVk1B,EAAKj1B,EAAK,EACVmB,EAAIszB,EAAWz0B,EAAK,EAAI6yB,GACxBtyB,EAAIk0B,EAAW10B,EAAK,EAAI8yB,GACxBc,EAAKN,EAAmB,UACxBN,EAAKM,EAAkB,QAE3B,KAAM9yB,IAAMY,EAAI,CAGZ,IAAMozB,IAAOU,EAGT,MAAO,IAAI5B,GAASrwB,EAAI,EAI5B,KAAMuxB,EAAG,KAAOU,EAAG,GAKf,MAFAl1B,GAAIk1B,EAAG,GAAKj1B,EAAG,GAAIqzB,GAASkB,EAAG,GAAKx0B,EAAQ,EAAJiD,GAEjCgxB,EAAWC,EAAKl0B,EAAG4zB,EAAIZ,GAAOhzB,EAO7C,GAHAw0B,EAAKA,EAAG3L,QAGH5lB,EAAIzC,EAAIY,EAAI,CAsBb,IApBS,EAAJ6B,GACDA,GAAKA,EACL2mB,EAAI4K,EACJtxB,EAAIgyB,EAAG5xB,SAEPlC,EAAIZ,EACJopB,EAAIsL,EACJhyB,EAAIsxB,EAAGlxB,SAGJ9C,EAAIS,KAAKsH,KAAMqrB,EAAKd,IAAc5vB,IACrCA,EAAI1C,GAIHyC,IAAMC,IACPD,EAAIC,EACJ0mB,EAAEtmB,OAAS,GAGTsmB,EAAE2L,UAAWtyB,IAAK2mB,EAAE7gB,KAAK,IAC/B6gB,EAAE2L,UASN,IALKf,EAAGlxB,OAAS4xB,EAAG5xB,OAAS,IACzBsmB,EAAIsL,EAAIA,EAAKV,EAAIA,EAAK5K,GAIpB3mB,EAAIiyB,EAAG5xB,OAAQJ,EAAI,EAAG1C,EAAIm0B,EAAM1xB,EAAGuxB,EAAGvxB,IAAMzC,EAC9C0C,GAAMsxB,IAAKvxB,GAAKuxB,EAAGvxB,GAAKiyB,EAAGjyB,GAAKC,GAAM1C,EAAI,CAS9C,KANI0C,IACAsxB,EAAGpC,QAAQlvB,KACT9B,GAIA6B,EAAIuxB,EAAGlxB,OAAmB,GAAXkxB,IAAKvxB,GAASuxB,EAAGtG,OAOtC,IAHAjuB,EAAK,EAAIu0B,EAGHvxB,EAAI,EAAGC,EAAIsxB,EAAG,GAAItxB,GAAK,GAAIA,GAAK,GAAID,KAG1C,MAFAhD,GAAK,EAAIgD,EAAI7B,EAAI0xB,EAAU,EAEpBmB,EAAWC,EAAKj0B,EAAG2zB,EAAIZ,GAAO/yB,GAUzCoO,EAAa,UAAIA,EAAM,GAAI,SAAUO,GACjC,GAAIF,GAAI,KACJ1O,EAAI3D,IAmBR,OAjBKuS,IAAKF,GAEDE,MAAQA,GAAW,IAANA,GAAiB,IAANA,GAGzB6kB,EAAmBzzB,EAAe,YAAG,WAAY4O,EAAG,YAAa,GAIpE5O,EAAK,IACN0O,EAAIylB,EAAgBn0B,EAAK,GAEpB4O,GAAK5O,EAAK,EAAI,EAAI0O,IACnBA,EAAI1O,EAAK,EAAI,IAId0O,GASXL,EAAS,MAAI,WACT,GAAIrO,GAAI3D,KACJi3B,EAAUtzB,EAAe,WAE7B,OAAOk0B,GAAK,GAAIZ,GAAQtzB,GAAIA,EAAK,EAAI,EAAGszB,EAAkB,WAgB9DjlB,EAAc,WAAIA,EAAQ,KAAI,WAC1B,GAAIxR,GAAG6R,EAAGqlB,EAAIruB,EAAGsuB,EAAKpK,EAClB5pB,EAAI3D,KACJS,EAAIkD,EAAK,EACT2W,EAAI3W,EAAK,EACToB,EAAIpB,EAAK,EACTszB,EAAUtzB,EAAe,YACzBw1B,EAAO,GAAIlC,GAAQ,GAGvB,IAAW,IAAN3c,IAAY7Z,IAAMA,EAAE,GAErB,MAAO,IAAIw2B,IAAU3c,GAAS,EAAJA,KAAY7Z,GAAKA,EAAE,IAAOqD,IAAMrD,EAAIkD,EAAI,EAAI,EAqC1E,KAlCAi0B,GAAW,EAGXtd,EAAI1V,KAAKpB,MAAOG,GAMN,GAAL2W,GAAUA,GAAK,EAAI,GACpBjI,EAAImkB,EAAoB/1B,IAEjB4R,EAAEpL,OAASlC,GAAM,GAAK,IACzBsN,GAAK,KAGTiI,EAAI1V,KAAKpB,KAAK6O,GACdtN,EAAIszB,GAAatzB,EAAI,GAAM,IAAY,EAAJA,GAASA,EAAI,GAE3CuV,GAAK,EAAI,EACVjI,EAAI,KAAOtN,GAEXsN,EAAIiI,EAAE7S,gBACN4K,EAAIA,EAAEma,MAAO,EAAGna,EAAE+mB,QAAQ,KAAO,GAAMr0B,GAG3CsE,EAAI,GAAI4tB,GAAQ5kB,IAEhBhJ,EAAI,GAAI4tB,GAAS3c,EAAEhP,YAGvBosB,GAAO3yB,EAAIkyB,EAAmB,WAAM,IAOhC,GAHA1J,EAAIlkB,EACJA,EAAI8vB,EAAY,MAAG5L,EAAQ,KAAG9pB,EAAKE,EAAG4pB,EAAGmK,EAAK,EAAG,KAE5ClB,EAAqBjJ,EAAK,GAAIf,MAAO,EAAGkL,MACvCrlB,EAAImkB,EAAqBntB,EAAK,IAAMmjB,MAAO,EAAGkL,GAAO,CAOvD,GANArlB,EAAIA,EAAEma,MAAOkL,EAAK,EAAGA,EAAK,GAMhB,QAALrlB,IAAgBslB,GAAY,QAALtlB,GAiBrB,IAMIA,KAAOA,EAAEma,MAAM,IAAqB,KAAfna,EAAEzI,OAAO,MAGjCiuB,EAAKxuB,EAAGtE,EAAI,EAAG,GACfvE,GAAK6I,EAAS,MAAEA,GAAO,GAAE1F,GAG7B,OAxBA,IAAMg0B,IACFE,EAAKtK,EAAGxoB,EAAI,EAAG,GAEVwoB,EAAS,MAAEA,GAAO,GAAE5pB,IAAK,CAC1B0F,EAAIkkB,CAEJ,OAGRmK,GAAM,EACNC,EAAM,EAoBlB,MAFAC,IAAW,EAEJC,EAAKxuB,EAAGtE,EAAGkyB,EAAkB,SAAGz2B,IAyB3CwR,EAAS,MAAI,SAAWpO,EAAGiD,GACvB,GAAIpG,GAAGsE,EACHpB,EAAI3D,KACJi3B,EAAUtzB,EAAe,YACzBw0B,EAAKx0B,EAAK,EACVk1B,GAAOx4B,EAAK,GAAIuD,EAAI,GAAIqzB,GAASrzB,EAAGiD,GAAKjD,EAAK,GAC9CsB,EAAImzB,EAAW10B,EAAK,EAAI8yB,GACxBhW,EAAI4X,EAAWz0B,EAAK,EAAI6yB,GACxB7vB,EAAIjD,EAAK,CAOb,IALAkD,EAAIjD,EAAK,EAETA,EAAK,EAAIgD,GAAKC,EAAI,EAAI,MAGhB3B,GAAQizB,GAAOA,EAAG,MAAS1X,GAAQoY,GAAOA,EAAG,KAG/C,MAAO,IAAI5B,IAAUrwB,IAAMC,GAGzBsxB,IAAOA,EAAG,KAAOU,GAAMA,IAAOA,EAAG,KAAOV,EAGpCr0B,IAGCq0B,GAAOU,EAMG,EAATj1B,EAAK,EAHLA,EAAK,EAAI,EAiBrB,KAXAmB,EAAIG,EAAIub,EACR7Z,EAAIuxB,EAAGlxB,OACPJ,EAAIgyB,EAAG5xB,OAEEJ,EAAJD,IAGDnG,EAAI03B,EAAIA,EAAKU,EAAIA,EAAKp4B,EACtBggB,EAAI7Z,EAAGA,EAAIC,EAAGA,EAAI4Z,GAGhBA,EAAI7Z,EAAIC,EAAGpG,KAAQggB,IAAKhgB,EAAEiM,KAAK,IAGrC,IAAMxH,EAAI2B,EAAI,EAAG3B,EAAI,GAAIA,IAAM,CAE3B,IAAM2B,EAAI,EAAG4Z,EAAI7Z,EAAI1B,EAAGub,EAAIvb,EAAG2B,EAAIA,EAAIyxB,EAAO,EACxCzxB,EAAIpG,EAAEggB,GAAKoY,EAAG3zB,GAAKizB,EAAG1X,EAAIvb,EAAI,GAAK2B,EACnCpG,EAAEggB,KAAO5Z,EAAIyxB,EAAO,CAGtBzxB,KACApG,EAAEggB,IAAOhgB,EAAEggB,GAAK5Z,GAAMyxB,GAc9B,IAVIzxB,KACE9B,EAIAtE,EAAE,IACJA,EAAE2vB,QAIA3P,EAAIhgB,EAAEwG,QAASxG,IAAIggB,GAAIhgB,EAAEoxB,OAK/B,IAHAjuB,EAAK,EAAInD,EAGHmG,EAAI,EAAGC,EAAIpG,EAAE,GAAIoG,GAAK,GAAIA,GAAK,GAAID,KAGzC,MAFAhD,GAAK,EAAIgD,EAAI7B,EAAI0xB,EAAU,EAEpBmB,EAAWC,EAAKj0B,EAAGqzB,EAAmB,UAAGA,EAAkB,UAAMrzB,GAmB5EoO,EAAmB,gBAAIA,EAAQ,KAAI,SAAWqnB,EAAI1C,GAC9C,GAAIhzB,GAAI3D,IAGR,OAFA2D,GAAI,GAAIA,GAAe,YAAEA,GAEZ,MAAN01B,GAAehC,EAAU1zB,EAAG01B,EAAI,QAEnCxB,EAAKl0B,GAAU,EAAL01B,GAAW11B,EAAK,EAAI,EAAGozB,EAASpzB,EAAGgzB,EAAI,SADjDhzB,GAqBRqO,EAAiB,cAAI,SAAWqnB,EAAI1C,GAChC,GAAIhzB,GAAI3D,IAER,OAAO2D,GAAK,EACR0D,EAAQ1D,EAAS,MAAN01B,GAAchC,EAAU1zB,EAAG01B,EAAI,iBAAyB,EAALA,EAAS,KACjE,MAANA,GAActC,EAASpzB,EAAGgzB,EAAI,iBAAmB,GACjDhzB,EAAE2H,YAsBV0G,EAAW,QAAI,SAAWqnB,EAAI1C,GAC1B,GAAI9uB,GACAlE,EAAI3D,KACJi3B,EAAUtzB,EAAe,YACzB0pB,EAAM4J,EAAkB,SACxBqC,EAAMrC,EAAkB,QAgC5B,OA9BW,OAANoC,IACDA,EAAKhC,EAAU1zB,EAAG01B,EAAIxxB,EAAM,WAAclE,EAAK,GAAW,EAAL01B,GAAW,KAChE1C,EAAKI,EAASpzB,EAAGgzB,EAAI9uB,IAIzBovB,EAAkB,WAAOA,EAAkB,SAAI,EAAI,GAExC,MAANoC,GAAe11B,EAAK,GAGrBkE,EAAMR,EAAQ1D,EAAG01B,EAAI1C,GAIhBhzB,EAAK,EAAI,GAAKA,EAAK,IAGdA,EAAK,EAAE,GAIDkE,EAAIuxB,QAAQ,KAAO,IAC3BvxB,EAAM,IAAMA,GAJZA,EAAMA,EAAIM,QAAS,IAAK,MAVhCN,EAAMlE,EAAE2H,WAkBZ2rB,EAAkB,SAAI5J,EACtB4J,EAAkB,SAAIqC,EAEfzxB,GAmBXmK,EAAY,SAAI,SAAWunB,EAAMF,EAAIG,GACjC,GAAIC,GAAMz5B,KAAKwH,QAAQ6xB,GAAIztB,MAAM,IAEjC,OAAO6tB,GAAI,GAAGtxB,QAAS,mBAA4B,MAARoxB,EAAe,IAAMA,EAAO,KACjEE,EAAI,GAAK,KAAQD,EAAOC,EAAI,GAAGtxB,QAAS,WAAY,KAAOqxB,GAASC,EAAI,IAAO,KAezFznB,EAAc,WAAI,SAAU0nB,GACxB,GAAIC,GAAIC,EAAI70B,EAAG80B,EAAMxnB,EAAGynB,EAAIp5B,EAAGuuB,EAC3BtrB,EAAI3D,KACJi3B,EAAUtzB,EAAe,YACzBo2B,EAAKJ,EAAK,GAAI1C,GAASA,EAAa,KACpC+C,EAAKF,EAAK,GAAI7C,GAAQ,GACtBkB,EAAKx0B,EAAK,EACVwO,EAAI,GAAI8kB,GAAQ+C,EAGpB,KAAM7B,EAEF,MAAOx0B,GAAE2H,UAkCb,KA/BAvG,EAAIoN,EAAK,EAAI2lB,EAAeK,GAAMx0B,EAAK,EAAI,EAC3CwO,EAAK,EAAE,GAAK2kB,EAAS,IAAMp2B,EAAIqE,EAAI0xB,GAAY,EAAIA,EAAU/1B,EAAIA,IAGpD,MAARg5B,MAGKr5B,EAAK,GAAIgS,EAAI,GAAI4kB,GAAQyC,IAAW,IAGrCxC,EAAa7kB,EAAO,IAAE0nB,GAAM,IAAM1nB,EAAK,IAGrC4kB,EAAgB,QAAKoB,EAAWhmB,EAAK,EAAIokB,GAAYpkB,EAAK,EAAEpL,OAAS,KAIpEmwB,EAAmBH,EAAS,kBAAmByC,EAAM,aAAc,KAGhEA,EAAOrnB,GAAS,IAAEF,GAAK,KAGlCunB,EAAO30B,EAAI,EAAIoN,EAAI4nB,GAGvBnC,GAAW,EACXvlB,EAAI,GAAI4kB,GAAST,EAAoB2B,IACrCz3B,EAAIu2B,EAAmB,UACvBA,EAAmB,UAAIlyB,EAAIozB,EAAGlxB,OAASwvB,EAAU,EAG7CxH,EAAIxrB,EAAK4O,EAAGF,EAAG,EAAG,EAAG,GACrBynB,EAAKD,EAAS,KAAG1K,EAAS,MAAE+K,IAEJ,GAAnBJ,EAAQ,IAAEF,IAIfC,EAAKK,EAAIA,EAAKJ,EAEdG,EAAKD,EAAS,KAAG7K,EAAS,MAAG2K,EAAKG,IAClCD,EAAKF,EAELznB,EAAIE,EAAS,MAAG4c,EAAS,MAAG2K,EAAKznB,IACjCE,EAAIunB,CAiBR,OAdAA,GAAKn2B,EAAKi2B,EAAY,MAAEC,GAAKK,EAAI,EAAG,EAAG,GACvCF,EAAKA,EAAS,KAAGF,EAAU,MAAEG,IAC7BJ,EAAKA,EAAS,KAAGC,EAAU,MAAEI,IAC7BF,EAAM,EAAIC,EAAM,EAAIp2B,EAAK,EAGzBk2B,EAAOp2B,EAAKs2B,EAAIC,EAAIj1B,EAAG,GAAW,MAAEpB,GAAQ,MAAS,IAC9CF,EAAKq2B,EAAIH,EAAI50B,EAAG,GAAW,MAAEpB,GAAQ,OAAQ,GAC9Co2B,EAAK,GAAIC,EAAK,KACdF,EAAK,GAAIH,EAAK,IAEpB/B,GAAW,EACXX,EAAmB,UAAIv2B,EAEhBm5B,GA2BX7nB,EAAa,UAAI,SAAWK,EAAGskB,GAC3B,GAAIhzB,GAAI3D,KACJi3B,EAAUtzB,EAAe,WAuC7B,OArCAA,GAAI,GAAIszB,GAAQtzB,GAEN,MAAL0O,GACDA,EAAI,GAAI4kB,GAASA,EAAa,KAC9BN,EAAKM,EAAkB,WAEvB52B,EAAK,GACLgS,EAAI,GAAI4kB,GAAQ5kB,GAChBskB,EAAKI,EAASpzB,EAAGgzB,EAAI,cAIpBtkB,EAAK,EAGD1O,EAAK,IAED0O,EAAK,EAAE,IACRulB,GAAW,EACXj0B,EAAIF,EAAKE,EAAG0O,EAAG,EAAQ,EAALskB,GAAU,EAAG,EAAG,EAAG,GAAGA,GAAMA,EAAI,GAAW,MAAEtkB,GAC/DulB,GAAW,EACXC,EAAIl0B,IAEJA,EAAK,GAAMA,EAAK,EAAI,IAKpBA,EAAK,IAGR0O,EAAK,IACNA,EAAK,EAAI1O,EAAK,GAElBA,EAAI0O,GAGD1O,GAQXqO,EAAY,SAAI,WACZ,GAAIrO,GAAI3D,IAGR,QAAQ2D,IAAOA,EAAK,EAAI,EAAIA,EAAK,EAAIG,MAmDzCkO,EAAW,QAAIA,EAAO,IAAI,SAAWpO,EAAGiD,GACpC,GAAID,GAAG7B,EAAGsN,EAAGhJ,EACT1F,EAAI3D,KACJi3B,EAAUtzB,EAAe,YACzB2W,EAAI3W,EAAK,EACTs2B,GAAQ55B,EAAK,KAAIuD,EAAI,GAAIqzB,GAASrzB,EAAGiD,KACrC3B,EAAS,EAAL+0B,GAAUA,EAAKA,EACnB1C,EAAKN,EAAmB,UACxBN,EAAKM,EAAkB,QAG3B,KAAMtzB,EAAK,IAAMC,EAAK,IAAOyO,GAAK1O,EAAK,EAAE,MAASC,EAAK,EAAE,GAGrD,MAAO,IAAIqzB,GAASH,EAASzkB,EAAQ,EAAJiI,GAAS3W,EAAGs2B,GAOjD,IAJAt2B,EAAI,GAAIszB,GAAQtzB,GAChBiD,EAAIjD,EAAK,EAAEsD,QAGLtD,EAAK,GAAKA,EAAK,EAAE,IAAMA,EAAK,GAAU,GAALiD,EAEnC,MAAOjD,EAMX,IAHAkD,EAAIjD,EAAK,EAAEqD,OAAS,EAGdrD,EAAK,GAAKA,EAAK,EAAE,IAAMA,EAAK,GAAMiD,EAOpC,GAJA9B,EAAIszB,EAAWz0B,EAAK,EAAI6yB,GACxBpkB,EAAItN,GAAK8B,GAGHwL,GAAS,EAAJiI,EACPjR,EAAI,GAAI4tB,GAAQnzB,SACb,CAMH,GAAKuO,GAAuBumB,EAAlBhyB,EAAI6vB,EAAUvxB,GAGpB,GAFAmE,EAAI2uB,EAAQf,EAAStzB,EAAGuB,GAEnBtB,EAAK,EAAI,EAEV,MAAOqzB,GAAa,IAAO,IAAE5tB,OAE9B,CAqBH,GAlBAiR,EAAQ,EAAJA,GAAsC,EAA7B1W,EAAK,EAAGgB,KAAK8D,IAAK3D,EAAG8B,IAAY,GAAK,EAEnDA,EAAIiwB,GAAUnzB,EAAGs2B,GAQjBl1B,EAAS,GAAL8B,GAAW2B,SAAS3B,GAGpB,GAAIowB,GAASpwB,EAAI,IAAQ,EAFzBwxB,EAAW4B,GACXr1B,KAAK0M,IAAK,KAAOklB,EAAqB7yB,EAAK,IAAQiB,KAAKW,KAAO5B,EAAK,EAAI,IAMvEoB,EAAIkyB,EAAc,KAAI,GAAKlyB,EAAIkyB,EAAc,KAAI,EAElD,MAAO,IAAIA,GAASlyB,EAAI,EAAIuV,EAAI,EAAI,EAGxCsd,IAAW,EACXX,EAAkB,SAAItzB,EAAK,EAAI,EAS/BuB,EAAIN,KAAKqD,IAAK,IAAMlD,EAAI,IAAKkC,QAG7BoC,EAAIhG,EAAKO,EAAS,MAAG0B,EAAI3B,EAAG4zB,EAAKryB,IAAOqyB,GAGxCluB,EAAIwuB,EAAKxuB,EAAGkuB,EAAK,EAAG,GAMfb,EAAqBrtB,EAAK,EAAGkuB,EAAIZ,KAClC5xB,EAAIwyB,EAAK,GAGTluB,EAAIwuB,EAAKx0B,EAAKO,EAAS,MAAG0B,EAAI3B,EAAGoB,EAAIG,IAAOH,GAAKA,EAAI,EAAG,IAMlDyxB,EAAqBntB,EAAK,GAAImjB,MAAO+K,EAAK,EAAGA,EAAK,IAAO,GAAK,OAChEluB,EAAIwuB,EAAKxuB,EAAGkuB,EAAK,EAAG,KAI5BluB,EAAK,EAAIiR,EACTsd,GAAW,EACXX,EAAkB,SAAIN,EAG1BttB,EAAIwuB,EAAKxuB,EAAGkuB,EAAIZ,OAzFpBttB,GAAIwuB,EAAKl0B,EAAG4zB,EAAIZ,EA6FpB,OAAOttB,IAuBX2I,EAAe,YAAI,SAAW0lB,EAAIf,GAC9B,GAAIhzB,GAAI3D,IAER,OAAa,OAAN03B,GAAcL,EAAU1zB,EAAG+zB,EAAI,cAAe,IAAO/zB,EAAK,EAC7D0D,EAAQ1D,EAAU,IAAL+zB,EAAQX,EAASpzB,EAAGgzB,EAAI,eAAiB,GACtDhzB,EAAE2H,YAiBV0G,EAAuB,oBAAIA,EAAQ,KAAI,SAAWG,EAAGwkB,GACjD,GAAIhzB,GAAI3D,KACJi3B,EAAUtzB,EAAe,WAI7B,OAFAA,GAAI,GAAIszB,GAAQtzB,GAEJ,MAALwO,GAAcklB,EAAU1zB,EAAGwO,EAAG,OAAQ,GAEzC0lB,EAAKl0B,EAAO,EAAJwO,EAAO4kB,EAASpzB,EAAGgzB,EAAI,SAD/BkB,EAAKl0B,EAAGszB,EAAmB,UAAGA,EAAkB,WAiBvDjlB,EAAY,SAAI,SAAUnL,GACvB,GAAIuL,GAAGvK,EAAKqyB,EACRv2B,EAAI3D,KACJi3B,EAAUtzB,EAAe,YACzBw2B,EAAKx2B,EAAK,CAGd,IAAY,OAAPw2B,EACDtyB,EAAMlE,EAAK,EAAI,WAAa,UAGzB,CAAA,GAAKkD,IAAMuL,IAAO+nB,GAAMlD,EAAkB,UAAKkD,GAAMlD,EAAkB,UAE1E,MAAO5vB,GAAQ1D,EAAG,KAAMszB,EAAkB,SAAG,EAK7C,IAHApvB,EAAM2uB,EAAqB7yB,EAAK,GAGtB,EAALw2B,EAAS,CAGV,OAAUA,EAAItyB,EAAM,IAAMA,GAC1BA,EAAM,KAAOA,MAGV,IAAKqyB,EAAOryB,EAAIZ,OAAQkzB,EAAK,EAEhC,KAAOA,EAAKD,EAGR,IAAMC,GAAMD,EAAMC,IAAOtyB,GAAO,SAEnBqyB,GAALC,IACRtyB,EAAMA,EAAI2kB,MAAO,EAAG2N,GAAO,IAAMtyB,EAAI2kB,MAAM2N,QAO/C,IAFA/nB,EAAIvK,EAAI+B,OAAO,GAEVswB,EAAO,EACRryB,EAAMuK,EAAI,IAAMvK,EAAI2kB,MAAM,OAGvB,IAAU,KAALpa,EAER,MAAOA,EAIf,IAAU,MAALvL,EAED,IAAQqwB,IAAgBrwB,GAAK,GAAS,GAAJA,KAC9BA,IAAU,EAAJA,IAAWowB,EAAgB,OAYjCG,EAAmBH,EAAS,OAAQpwB,EAAG,WAAY,OARnD,IAHAgB,EAAM0wB,EAAatB,EAASpvB,EAAS,EAAJhB,EAAO,GAAIlD,EAAK,GAGrC,KAAPkE,EAED,MAAOA,GAWvB,MAAOlE,GAAK,EAAI,EAAI,IAAMkE,EAAMA,GAQpCmK,EAAa,UAAIA,EAAS,MAAI,WAE1B,MAAO6lB,GAAK,GAAI73B,MAAkB,YAAEA,MAAOA,KAAQ,EAAI,EAAG,IAU9DgS,EAAW,QAAIA,EAAU,OAAI,WAEzB,MAAOhS,MAAKsL,YAsKhBitB,EAAc,WAOV,QAAS6B,GAAWvyB,EAAKwyB,EAAQC,GAO7B,IANA,GAAI7Z,GAEA8Z,EADAd,GAAO,GAEPv0B,EAAI,EACJg1B,EAAOryB,EAAIZ,OAEHizB,EAAJh1B,GAAY,CAEhB,IAAMq1B,EAAOd,EAAIxyB,OAAQszB,IAAQd,EAAIc,IAASF,GAI9C,IAFAZ,EAAKhZ,EAAI,IAAOiY,EAASU,QAASvxB,EAAI+B,OAAQ1E,MAEtCub,EAAIgZ,EAAIxyB,OAAQwZ,IAEfgZ,EAAIhZ,GAAK6Z,EAAU,IAED,MAAdb,EAAIhZ,EAAI,KACTgZ,EAAIhZ,EAAI,GAAK,GAEjBgZ,EAAIhZ,EAAI,IAAMgZ,EAAIhZ,GAAK6Z,EAAU,EACjCb,EAAIhZ,IAAM6Z,GAKtB,MAAOb,GAAIP,UAGf,MAAO,UAAWjC,EAASpvB,EAAKyyB,EAASD,EAAQn2B,GAC7C,GAAIa,GAAG0b,EAAGpX,EAAG1F,EAAGw0B,EAAIv0B,EAChBsB,EAAI2C,EAAIuxB,QAAS,KACjB7B,EAAKN,EAAmB,UACxBN,EAAKM,EAAkB,QA0B3B,KAxBc,GAAToD,IACDxyB,EAAMA,EAAIioB,eAIT5qB,GAAK,IACN2C,EAAMA,EAAIM,QAAS,IAAK,IACxBvE,EAAI,GAAIqzB,GAAQoD,GAChB12B,EAAIq0B,EAAQf,EAASrzB,EAAGiE,EAAIZ,OAAS/B,GAOrCtB,EAAK,EAAIw2B,EAAWz2B,EAAE6D,UAAW,GAAI8yB,GACrC12B,EAAK,EAAIA,EAAK,EAAEqD,QAIpBkxB,EAAKiC,EAAWvyB,EAAKwyB,EAAQC,GAC7Bv1B,EAAI0b,EAAI0X,EAAGlxB,OAGQ,GAAXkxB,IAAK1X,GAAS0X,EAAGtG,OAEzB,IAAMsG,EAAG,GAEL,MAAO,GAsBX,IAnBS,EAAJjzB,EACDH,KAEApB,EAAK,EAAIw0B,EACTx0B,EAAK,EAAIoB,EAGTpB,EAAK,EAAIO,EACTP,EAAIF,EAAKE,EAAGC,EAAG2zB,EAAIZ,EAAI,EAAG2D,GAC1BnC,EAAKx0B,EAAK,EACV0F,EAAI1F,EAAK,EACToB,EAAIpB,EAAK,GAIbuB,EAAIizB,EAAGZ,GACP9W,EAAI6Z,EAAU,EACdjxB,EAAIA,GAAmB,MAAd8uB,EAAGZ,EAAK,GAEP,EAALZ,GACM,MAALzxB,GAAamE,KAAe,GAANstB,GAAWA,IAAQhzB,EAAK,EAAI,EAAI,EAAI,IAC5DuB,EAAIub,GAAKvb,GAAKub,IAAa,GAANkW,GAAWttB,GAAW,GAANstB,GAAwB,EAAbwB,EAAGZ,EAAK,IACxDZ,IAAQhzB,EAAK,EAAI,EAAI,EAAI,IAKzB,IAHAw0B,EAAGlxB,OAASswB,IAGJ+C,IAAWnC,IAAKZ,GAAM+C,GAC1BnC,EAAGZ,GAAM,EAEHA,MACAxyB,EACFozB,EAAGpC,QAAQ,QAInBoC,GAAGlxB,OAASswB,CAIhB,KAAM9W,EAAI0X,EAAGlxB,QAASkxB,IAAK1X,KAG3B,IAAMvb,EAAI,EAAG2C,EAAM,GAAS4Y,GAALvb,EAAQ2C,GAAO6wB,EAAS9uB,OAAQuuB,EAAGjzB,OAG1D,GAAS,EAAJH,EAAQ,CAGT,OAAUA,EAAG8C,EAAM,IAAMA,GAEzBA,EAAM,KAAOA,MAMb,IAFA3C,EAAI2C,EAAIZ,SAEDlC,EAAIG,EAGP,IAAMH,GAAKG,EAAGH,IAAM8C,GAAO,SAEf3C,GAAJH,IACR8C,EAAMA,EAAI2kB,MAAO,EAAGznB,GAAM,IAAM8C,EAAI2kB,MAAMznB,GAKlD,OAAO8C,MAQf,IAAIpE,GAAM,WAGN,QAAS+2B,GAAiB72B,EAAGQ,EAAG2M,GAC5B,GAAIqgB,GACAsJ,EAAQ,EACRv1B,EAAIvB,EAAEsD,MAEV,KAAMtD,EAAIA,EAAE6oB,QAAStnB,KACjBisB,EAAOxtB,EAAEuB,GAAKf,EAAIs2B,EAClB92B,EAAEuB,GAAKisB,EAAOrgB,EAAO,EACrB2pB,EAAQtJ,EAAOrgB,EAAO,CAO1B,OAJI2pB,IACA92B,EAAEoyB,QAAQ0E,GAGP92B,EAGX,QAASylB,GAASxiB,EAAGC,EAAG6zB,EAAIC,GACxB,GAAIz1B,GAAG4pB,CAEP,IAAK4L,GAAMC,EACP7L,EAAM4L,EAAKC,EAAK,EAAI,OAGpB,KAAMz1B,EAAI4pB,EAAM,EAAO4L,EAAJx1B,EAAQA,IAEvB,GAAK0B,EAAE1B,IAAM2B,EAAE3B,GAAK,CAChB4pB,EAAMloB,EAAE1B,GAAK2B,EAAE3B,GAAK,EAAI,EAExB,OAKZ,MAAO4pB,GAGX,QAAS9F,GAAUpiB,EAAGC,EAAG6zB,EAAI5pB,GAIzB,IAHA,GAAI5L,GAAI,EAGAw1B,KACJ9zB,EAAE8zB,IAAOx1B,EACTA,EAAI0B,EAAE8zB,GAAM7zB,EAAE6zB,GAAM,EAAI,EACxB9zB,EAAE8zB,GAAMx1B,EAAI4L,EAAOlK,EAAE8zB,GAAM7zB,EAAE6zB,EAIjC,OAAS9zB,EAAE,IAAMA,EAAEK,OAAS,EAAGL,EAAEwpB,UAIrC,MAAO,UAAWzsB,EAAGC,EAAG2zB,EAAIZ,EAAI0C,EAAIvoB,GAChC,GAAIge,GAAK/pB,EAAGG,EAAG01B,EAAS7C,EAAM1lB,EAAG0Y,EAAM8P,EAAO5L,EAAG6L,EAAIC,EAAKC,EAAMC,EAAM1N,EAAG2N,EAAIC,EAAIC,EAC7EC,EAAIC,EACJrE,EAAUtzB,EAAe,YACzB2W,EAAI3W,EAAK,GAAKC,EAAK,EAAI,EAAI,GAC3Bu0B,EAAKx0B,EAAK,EACVk1B,EAAKj1B,EAAK,CAGd,MAAMu0B,GAAOA,EAAG,IAAOU,GAAOA,EAAG,IAE7B,MAAO,IAAI5B,GAGRtzB,EAAK,GAAMC,EAAK,IAAOu0B,GAAKU,GAAMV,EAAG,IAAMU,EAAG,GAAMA,GAGnDV,GAAe,GAATA,EAAG,KAAYU,EAAS,EAAJve,EAAQA,EAAI,EAHoBxW,IAuBlE,KAhBIgN,GACA8pB,EAAU,EACV71B,EAAIpB,EAAK,EAAIC,EAAK,IAElBkN,EAAOwnB,EACPsC,EAAUnE,EACV1xB,EAAIszB,EAAW10B,EAAK,EAAIi3B,GAAYvC,EAAWz0B,EAAK,EAAIg3B,IAG5DS,EAAKxC,EAAG5xB,OACRk0B,EAAKhD,EAAGlxB,OACRgoB,EAAI,GAAIgI,GAAQ3c,GAChBwgB,EAAK7L,EAAK,KAIJ/pB,EAAI,EAAG2zB,EAAG3zB,KAAQizB,EAAGjzB,IAAM,GAAKA,KAetC,GAbK2zB,EAAG3zB,IAAOizB,EAAGjzB,IAAM,IACpBH,IAGO,MAANwyB,GACDjd,EAAIid,EAAKN,EAAmB,UAC5BN,EAAKM,EAAkB,UAEvB3c,EADO+e,EACH9B,GAAO5zB,EAAK,EAAIC,EAAK,GAAM,EAE3B2zB,EAGC,EAAJjd,EACDwgB,EAAGpuB,KAAK,GACRqrB,GAAO,MACJ,CAOH,GAJAzd,EAAIA,EAAIsgB,EAAU,EAAI,EACtB11B,EAAI,EAGO,GAANm2B,EAAU,CAMX,IALAhpB,EAAI,EACJwmB,EAAKA,EAAG,GACRve,KAGc6gB,EAAJj2B,GAAUmN,IAAOiI,IAAKpV,IAC5BqoB,EAAIlb,EAAIvB,GAASqnB,EAAGjzB,IAAM,GAC1B41B,EAAG51B,GAAKqoB,EAAIsL,EAAK,EACjBxmB,EAAIkb,EAAIsL,EAAK,CAGjBd,GAAO1lB,GAAS8oB,EAAJj2B,MAGT,CAiBH,IAdAmN,EAAIvB,GAAS+nB,EAAG,GAAK,GAAM,EAEtBxmB,EAAI,IACLwmB,EAAK2B,EAAiB3B,EAAIxmB,EAAGvB,GAC7BqnB,EAAKqC,EAAiBrC,EAAI9lB,EAAGvB,GAC7BuqB,EAAKxC,EAAG5xB,OACRk0B,EAAKhD,EAAGlxB,QAGZi0B,EAAKG,EACLN,EAAM5C,EAAG3L,MAAO,EAAG6O,GACnBL,EAAOD,EAAI9zB,OAGIo0B,EAAPL,EAAWD,EAAIC,KAAU,GAEjCM,EAAKzC,EAAGrM,QACR8O,EAAGvF,QAAQ,GACXqF,EAAMvC,EAAG,GAEJA,EAAG,IAAM/nB,EAAO,GACjBsqB,GAGJ,GACI/oB,GAAI,EAGJyc,EAAM1F,EAASyP,EAAIkC,EAAKM,EAAIL,GAGjB,EAANlM,GAGDmM,EAAOF,EAAI,GAENM,GAAML,IACPC,EAAOA,EAAOnqB,GAASiqB,EAAI,IAAM,IAIrC1oB,EAAI4oB,EAAOG,EAAM,EAYZ/oB,EAAI,GAEAA,GAAKvB,IACNuB,EAAIvB,EAAO,GAIfia,EAAOyP,EAAiB3B,EAAIxmB,EAAGvB,GAC/B+pB,EAAQ9P,EAAK9jB,OACb+zB,EAAOD,EAAI9zB,OAGX6nB,EAAM1F,EAAS2B,EAAMgQ,EAAKF,EAAOG,GAGrB,GAAPlM,IACDzc,IAGA2W,EAAU+B,EAAW8P,EAALQ,EAAaC,EAAKzC,EAAIgC,EAAO/pB,MAOvC,GAALuB,IACDyc,EAAMzc,EAAI,GAEd0Y,EAAO8N,EAAGrM,SAEdqO,EAAQ9P,EAAK9jB,OAEA+zB,EAARH,GACD9P,EAAKgL,QAAQ,GAIjB/M,EAAU+R,EAAKhQ,EAAMiQ,EAAMlqB,GAGf,IAAPge,IACDkM,EAAOD,EAAI9zB,OAGX6nB,EAAM1F,EAASyP,EAAIkC,EAAKM,EAAIL,GAGjB,EAANlM,IACDzc,IAGA2W,EAAU+R,EAAUC,EAALK,EAAYC,EAAKzC,EAAImC,EAAMlqB,KAIlDkqB,EAAOD,EAAI9zB,QAEK,IAAR6nB,IACRzc,IACA0oB,GAAO,IAIXD,EAAG51B,KAAOmN,EAGLyc,GAAOiM,EAAI,GACZA,EAAIC,KAAU7C,EAAG+C,IAAO,GAExBH,GAAQ5C,EAAG+C,IACXF,EAAO,UAGHE,IAAOC,GAAgB,MAAVJ,EAAI,KAAgBzgB,IAE7Cyd,GAAiB,MAAVgD,EAAI,GAITD,EAAG,IACLA,EAAG1K,QAKX,GAAgB,GAAXwK,EACD3L,EAAK,EAAIlqB,EACTkqB,EAAK,GAAK8I,MACP,CAGH,IAAM7yB,EAAI,EAAGoV,EAAIwgB,EAAG,GAAIxgB,GAAK,GAAIA,GAAK,GAAIpV,KAC1C+pB,EAAK,EAAI/pB,EAAIH,EAAI61B,EAAU,EAE3B/C,EAAK5I,EAAGoK,EAAK9B,EAAKtI,EAAK,EAAI,EAAIsI,EAAIZ,EAAIoB,GAG3C,MAAO9I,MAyoBfuJ,GAAqB,WAoGjB,QAAS53B,GAAOyL,GACZ,GAAI3L,GAAG0R,EAAGgc,EACN6I,EAAUj3B,KACVS,EAAI,SACJmC,EAAQq0B,EAAgB,OAAIE,SAAWjvB,UAE3C,OAAKmE,IAAO+F,GAAmB,gBAAP/F,KACrB+qB,EAAmBH,EAAS,kBAAmB5qB,EAAK5L,GAE5Cw2B,IAIJ7I,EAAI/hB,EAAK3L,EAAI,eAAmB0R,KAE3B8kB,EAAiB,EAAJ9I,GAASA,EAAIkJ,IAAgB10B,EAAMwrB,IAAMA,EAM1DgJ,EAAmBH,EAASv2B,EAAG0tB,EAAG3tB,EAAG,GALrCw2B,EAAQv2B,GAAS,EAAJ0tB,IAUdA,EAAI/hB,EAAK3L,EAAI,cAAkB0R,KAE1B8kB,EAAiB,EAAJ9I,GAASA,EAAI,IAAOxrB,EAAMwrB,IAAMA,EAMjDgJ,EAAmBH,EAASv2B,EAAG0tB,EAAG3tB,EAAG,GALrCw2B,EAAQv2B,GAAS,EAAJ0tB,IAUdA,EAAI/hB,EAAK3L,EAAI,cAAkB0R,KAE1B8kB,GAAkByB,EAALvK,GAAkBA,EAAI,IAAOxrB,EAAMwrB,IAAMA,EAM1DgJ,EAAmBH,EAASv2B,EAAG0tB,EAAG3tB,EAAG,GALrCw2B,EAAQv2B,GAAK23B,EAAUjK,KAUxBA,EAAI/hB,EAAK3L,EAAI,cAAkB0R,KAE1B8kB,EAAiB,EAAJ9I,GAASA,EAAIuK,IAAe/1B,EAAMwrB,IAAMA,EAMzDgJ,EAAmBH,EAASv2B,EAAG0tB,EAAG3tB,EAAG,GALrCw2B,EAAQv2B,GAAK23B,EAAUjK,KAUxBA,EAAI/hB,EAAK3L,EAAI,UAAc0R,KAEtB8kB,GAAkByB,EAALvK,GAAkBA,EAAI,IAAOxrB,EAAMwrB,IAAMA,EAM1DgJ,EAAmBH,EAASv2B,EAAG0tB,EAAG3tB,EAAG,GALrCw2B,EAAQv2B,GAAK23B,EAAUjK,KAUxBA,EAAI/hB,EAAK3L,EAAI,UAAc0R,KAEtB8kB,EAAiB,EAAJ9I,GAASA,EAAIuK,IAAe/1B,EAAMwrB,IAAMA,EAMzDgJ,EAAmBH,EAASv2B,EAAG0tB,EAAG3tB,EAAG,GALrCw2B,EAAQv2B,GAAK23B,EAAUjK,KAUxBA,EAAI/hB,EAAK3L,EAAI,YAAgB0R,IAE3Bgc,MAAQA,GAAW,IAANA,GAAiB,IAANA,GACzB8I,EAAa72B,EAAK,EAClB42B,EAAQv2B,KAAO0tB,GAIfgJ,EAAmBH,EAASv2B,EAAG0tB,EAAG3tB,EAAG,KAKtC2tB,EAAI/hB,EAAK3L,EAAI,YAAgB0R,IAE3Bgc,MAAQA,GAAW,IAANA,GAAiB,IAANA,EACzB6I,EAAQv2B,MAAS0tB,IAAKqK,GAA2B,gBAAVA,IAIvCrB,EAAmBH,EAASv2B,EAAG0tB,EAAG3tB,EAAG,KAKtC2tB,EAAI/hB,EAAK3L,EAAI,YAAgB0R,KAExB8kB,EAAiB,EAAJ9I,GAASA,EAAI,IAAOxrB,EAAMwrB,IAAMA,EAMjDgJ,EAAmBH,EAASv2B,EAAG0tB,EAAG3tB,EAAG,GALrCw2B,EAAQv2B,GAAS,EAAJ0tB,GASd6I,GAmBX,QAAS5zB,GAAIgP,GAAK,MAAO,IAAIrS,MAAKqS,GAAQ,MAkB1C,QAAS/M,GAAG+M,GAAK,MAAO,IAAIrS,MAAKqS,GAAO,KAaxC,QAASf,GAAK3N,EAAGC,GAAM,MAAO,IAAI5D,MAAK2D,GAAQ,IAAEC,GAMjD,QAAS23B,GAAUtE,EAAStrB,EAAM6vB,GAC9B,GAAIh7B,GAAG6R,EACHnN,EAAI,CAQR,KANiC,kBAA5BoG,EAAS/K,KAAMoL,EAAK,MACrBA,EAAOA,EAAK,IAGhBnL,EAAI,GAAIy2B,GAAStrB,EAAK,MAEZzG,EAAIyG,EAAK1E,QAAU,CAGzB,GAFAoL,EAAI,GAAI4kB,GAAStrB,EAAKzG,KAEhBmN,EAAK,EAAI,CACX7R,EAAI6R,CAEJ,OACQ7R,EAAEg7B,GAAMnpB,KAChB7R,EAAI6R,GAIZ,MAAO7R,GAUX,QAASkI,KAAQ,MAAO6yB,GAAUv7B,KAAMoI,UAAW,MASnD,QAASH,KAAQ,MAAOszB,GAAUv7B,KAAMoI,UAAW,MAyNnD,QAAS4L,GAAKrQ,EAAGC,GAAM,MAAO,IAAI5D,MAAK2D,GAAQ,IAAEC,GAWjD,QAAS+mB,GAAO0O,GACZ,GAAIzyB,GAAGyL,EAAG+b,EACNlpB,EAAI,EACJmE,KACA4tB,EAAUj3B,KACVy7B,EAAO,GAAIxE,GAASA,EAAa,IAUrC,IARW,MAANoC,GAAehC,EAAUoE,EAAMpC,EAAI,UAGpCA,GAAM,EAFNA,EAAKpC,EAAmB,UAK5B5kB,EAAIzN,KAAKsH,KAAMmtB,EAAK5C,GAEfQ,EAAgB,OAGjB,GAAKwB,GAAUA,EAAwB,gBAInC,IAFA7xB,EAAI6xB,EAAwB,gBAAG,GAAIiD,aAAYrpB,IAEnCA,EAAJnN,GACJkpB,EAAIxnB,EAAE1B,GAIDkpB,GAAK,MAENxnB,EAAE1B,GAAKuzB,EAAwB,gBAAG,GAAIiD,aAAY,IAAK,GAKvDryB,EAAEnE,KAAOkpB,EAAI,QAKlB,IAAKqK,GAAUA,EAAoB,YAAI,CAK1C,IAFA7xB,EAAI6xB,EAAoB,YAAGpmB,GAAK,GAEpBA,EAAJnN,GAGJkpB,EAAIxnB,EAAE1B,IAAO0B,EAAE1B,EAAI,IAAM,IAAQ0B,EAAE1B,EAAI,IAAM,MAC1B,IAAX0B,EAAE1B,EAAI,KAAe,IAGxBkpB,GAAK,MACNqK,EAAoB,YAAE,GAAGkD,KAAM/0B,EAAG1B,IAKlCmE,EAAEqD,KAAM0hB,EAAI,KACZlpB,GAAK,EAGbA,GAAImN,EAAI,MAGR+kB,GAAmBH,EAAS,qBAAsBwB,EAAQ,SAKlE,KAAKvzB,EAED,KAAYmN,EAAJnN,GACJmE,EAAEnE,KAAuB,IAAhBN,KAAK+lB,SAAiB,CAcvC,KAVAtY,EAAIhJ,IAAInE,GACRm0B,GAAM5C,EAGDpkB,GAAKgnB,IACNjL,EAAI0I,EAAS,GAAIL,EAAU4C,GAC3BhwB,EAAEnE,IAAOmN,EAAI+b,EAAI,GAAMA,GAIV,IAAT/kB,EAAEnE,GAAUA,IAChBmE,EAAEwoB,KAIN,IAAS,EAAJ3sB,EACDmE,GAAMgJ,EAAI,OACP,CAIH,IAHAA,EAAI,GAGa,IAAThJ,EAAE,IACNA,EAAE+mB,QACF/d,GAAKokB,CAIT,KAAMvxB,EAAI,EAAGkpB,EAAI/kB,EAAE,GAAI+kB,GAAK,IACxBA,GAAK,GACLlpB,GAIKuxB,GAAJvxB,IACDmN,GAAKokB,EAAUvxB,GAOvB,MAHAu2B,GAAQ,EAAIppB,EACZopB,EAAQ,EAAIpyB,EAELoyB,EAkCX,QAASj4B,GAAK6O,GAAK,MAAO,IAAIrS,MAAKqS,GAAS,OAyB5C,QAASupB,GAAevvB,GAUpB,QAAS4qB,GAAS5kB,EAAGxL,GACjB,GAAIlD,GAAI3D,IAGR,MAAQ2D,YAAaszB,IAGjB,MAFAG,GAAmBH,EAAS,6BAA8B5kB,GAEnD,GAAI4kB,GAAS5kB,EAAGxL,EAI3B,IAAKwL,YAAa4kB,GAAU,CAExB,GAAU,MAALpwB,EAOD,MANAxG,GAAK,EACLsD,EAAe,YAAI0O,EAAe,YAClC1O,EAAK,EAAI0O,EAAK,EACd1O,EAAK,EAAI0O,EAAK,OACd1O,EAAK,GAAM0O,EAAIA,EAAK,GAAMA,EAAEma,QAAUna,EAGnC,IAAU,IAALxL,EAER,MAAOgxB,GAAK,GAAIZ,GAAQ5kB,GAAI4kB,EAAmB,UAAGA,EAAkB,SAEpE5kB,IAAK,GAIb,MAAOwpB,GAAcl4B,EAAe,YAAIszB,EAAStzB,EAAG0O,EAAGxL,GAuI3D,MAvHAowB,GAAmB,UAAI,GAmBvBA,EAAkB,SAAI,EAoBtBA,EAAgB,OAAI,EAIpBA,EAAkB,SAAI,GAItBA,EAAkB,SAAI,GAItBA,EAAc,MAAK0B,EAInB1B,EAAc,KAAI0B,EAGlB1B,EAAgB,QAAI,EAGpBA,EAAgB,QAAI,EAMpBA,EAAQn1B,UAAYkQ,EAEpBilB,EAAa,IAAI,GAAIA,GAAQ,GAS7BA,EAAkB,SAAI,EACtBA,EAAoB,WAAI,EACxBA,EAAoB,WAAI,EACxBA,EAAqB,YAAI,EACzBA,EAAuB,cAAI,EAC3BA,EAAyB,gBAAI,EAC7BA,EAAyB,gBAAI,EAC7BA,EAAyB,gBAAI,EAC7BA,EAA0B,iBAAI,EAG9BA,EAAgB,OAAI,EAepBA,EAAgB,OAAIr2B,EACpBq2B,EAAqB,YAAI2E,EACzB3E,EAAa,IAAI5zB,EACjB4zB,EAAY,GAAI3xB,EAChB2xB,EAAa,IAAI3lB,EACjB2lB,EAAa,IAAIvuB,EACjBuuB,EAAa,IAAIhvB,EACjBgvB,EAAa,IAAIjjB,EACjBijB,EAAc,KAAIzzB,EAClByzB,EAAgB,OAAItM,EAER,MAAPte,GACD4qB,EAAgB,OAAE5qB,GAGf4qB,EA5jBX,GAAI4E,GAAe,WACf,GAAIC,GAAU,uCACVC,EAAO31B,OAAOtE,UAAUi6B,MAAQ,WAAa,MAAO/7B,MAAKmI,QAAQ,aAAc,IAEnF,OAAO,UAAW8uB,EAAStzB,EAAG0O,EAAGxL,GAC7B,GAAIsL,GAAGpN,EAAGG,EAAG82B,EAAOC,EAAM5Y,CAW1B,IATiB,gBAALhR,KAIRA,GAAM2pB,EAAoB,gBAAL3pB,IAAqC,mBAApB/G,EAAS/K,KAAK8R,KAC1C,IAANA,GAAmB,EAAR,EAAIA,EAAQ,KAAOA,EAAI,IAE1C4pB,EAAO5pB,EAEFxL,GAAK9B,GAAK+2B,EAAQI,KAAK7pB,GAGxB1O,EAAK,EAAmB,KAAf0O,EAAEzI,OAAO,IAAcyI,EAAIA,EAAEma,MAAM,GAAI,IAAO,MAGpD,CAMH,GAAU,IAAL3lB,EAED,MAAOgxB,GAAK,GAAIZ,GAAQ5kB,GAAI4kB,EAAmB,UAAGA,EAAkB,SAqDxE,IAlDA5kB,EAAI0pB,EAAKx7B,KAAK8R,GAAGlK,QAAS,WAAY,IAEtCxE,EAAK,EAAmB,KAAf0O,EAAEzI,OAAO,IAAcyI,EAAIA,EAAElK,QAAS,UAAW,IAAM,IAAO,EAElEtB,GAAK9B,EAEC8B,IAAU,EAAJA,IAAWowB,EAAgB,SACnCC,IAAgBrwB,GAAK,GAAS,GAAJA,KAkC3BuwB,EAAmBH,EAAS,OAAQpwB,EAAG,EAAG,GAG1Cwc,EAAQyY,EAAQI,KAAK7pB,KApCrBF,EAAI,IAAMumB,EAASlM,MAAO,EAAG3lB,EAAQ,EAAJA,GAAU,KAG3CwL,EAAIA,EAAElK,QAAS,MAAO,IAAKA,QAAS,MAAO,OAGtCkb,EAAQ,GAAI9c,QACf,IAAM4L,EAAI,SAAWA,EAAI,MAAW,GAAJtL,EAAS,IAAM,IAAKq1B,KAAK7pB,KAGnD2pB,IAEK3pB,EAAElK,QAAS,YAAa,IAAKlB,OAAS,IAGvCmwB,EAAmBH,EAAS,EAAGgF,GAInCD,GAASA,GAEb3pB,EAAIkmB,EAAatB,EAAS5kB,EAAG,GAAIxL,EAAGlD,EAAK,IAE5B,YAAL0O,GAAwB,OAALA,IAG3B+kB,EAAmBH,EAAS,cAAgBpwB,EAAI,UAAWo1B,GAC3D5pB,EAAI,QAYZgR,EAAQyY,EAAQI,KAAK7pB,IAGnBgR,EAkBF,MAfA1f,GAAK,EAAIA,EAAK,EAAI,KAGR,YAAL0O,IAGS,OAALA,GAGD+kB,EAAmBH,EAAS,eAAgBgF,GAEhDt4B,EAAK,EAAI,MAEbtD,EAAK,EAEEsD,EA0Bf,KArBOoB,EAAIsN,EAAE+mB,QAAQ,MAAS,KAC1B/mB,EAAIA,EAAElK,QAAS,IAAK,MAIjBjD,EAAImN,EAAEqa,OAAQ,OAAW,GAGnB,EAAJ3nB,IACDA,EAAIG,GAERH,IAAMsN,EAAEma,MAAOtnB,EAAI,GACnBmN,EAAIA,EAAE3H,UAAW,EAAGxF,IAER,EAAJH,IAGRA,EAAIsN,EAAEpL,QAIJ/B,EAAI,EAAkB,KAAfmN,EAAEzI,OAAO1E,GAAWA,KAGjC,IAAM2B,EAAIwL,EAAEpL,OAAyB,KAAjBoL,EAAEzI,SAAS/C,KAI/B,GAFAwL,EAAIA,EAAEma,MAAOtnB,EAAG2B,EAAI,GAEb,CAwBH,GAvBAA,EAAIwL,EAAEpL,OAGD+0B,GAASn1B,EAAI,IAGduwB,EAAmBH,EAAS,EAAGgF,GAGnCt4B,EAAK,EAAIoB,EAAIA,EAAIG,EAAI,EACrBvB,EAAK,KAMLuB,GAAMH,EAAI,GAAM0xB,EAEP,EAAJ1xB,IACDG,GAAKuxB,GAIA5vB,EAAJ3B,EAAQ,CAMT,IAJIA,GACAvB,EAAK,EAAE+I,MAAO2F,EAAEma,MAAO,EAAGtnB,IAGxB2B,GAAK4vB,EAAa5vB,EAAJ3B,GAChBvB,EAAK,EAAE+I,MAAO2F,EAAEma,MAAOtnB,EAAGA,GAAKuxB,GAGnCpkB,GAAIA,EAAEma,MAAMtnB,GACZA,EAAIuxB,EAAUpkB,EAAEpL,WAEhB/B,IAAK2B,CAGT,MAAQ3B,IAAKmN,GAAK,KAElB1O,EAAK,EAAE+I,MAAO2F,GAEVulB,IAGKj0B,EAAK,EAAIszB,EAAc,KAGxBtzB,EAAK,EAAIA,EAAK,EAAI,KAGVA,EAAK,EAAIszB,EAAc,OAG/BtzB,EAAK,GAAMA,EAAK,EAAI,SAM5BA,GAAK,GAAMA,EAAK,EAAI,EAGxBtD,GAAK,KAwXb,OAAOu7B,QAULtF,EAAiC,WAC/B,MAAOkC,IACTj4B,KAAKX,EAASM,EAAqBN,EAASC,KAA4CgG,SAAlCywB,IAAgDz2B,EAAOD,QAAU02B,KA0B9Ht2B,OAKE,SAASH,EAAQD,EAASM,GAE/B,YAEAN,GAAQ8L,MAAQxL,EAAoB,KACpCN,EAAQ,WAAaM,EAAoB,KACzCN,EAAQsB,OAAShB,EAAoB,GACrCN,EAAQ+pB,UAAYzpB,EAAoB,KACxCN,EAAQ0B,OAASpB,EAAoB,GACrCN,EAAQyK,OAASnK,EAAoB,KACrCN,EAAQ8N,MAAQxN,EAAoB,MAK/B,SAASL,EAAQD,EAASM,GAE/B,YAiBA,SAAS0mB,GAAUtF,GACjB,KAAMthB,eAAgB4mB,IACpB,KAAM,IAAI3d,aAAY,mDAMxB,IAHAjJ,KAAKshB,MAAQA,OAGRvb,EAAQ/F,KAAKshB,SAAWthB,KAAKshB,MAAM6a,MAAMC,GAC5C,KAAM,IAAI51B,WAAU,mCAxBxB,GAAI0hB,GAAOhoB,EAAoB,KAE3BmK,GADSnK,EAAoB,GACpBA,EAAoB,MAI7B6F,GAHa7F,EAAoB,IAC1BA,EAAoB,KAEjB4F,MAAMC,SAChBq2B,EAASlU,EAAKkU,MAqBlBxV,GAAU9kB,UAAY,GAAIomB,GAE1BtB,EAAU9kB,UAAUN,KAAO,YAS3BolB,EAAU9kB,UAAUu6B,SAAW,SAAUC,GACvC,GAAIjQ,GAA0C,UAA9BiQ,EAAKv7B,KAAKH,SAASK,OAE/BqgB,EAAQthB,KAAKshB,MAAMtb,IAAI,SAAUrD,GACnC,MAAOA,GAAK05B,SAASC,IAGvB,QAAQjQ,EAAW,gBAAkB,KACjC/K,EAAMhU,KAAK,MACV+e,EAAW,KAAO,MAQzBzF,EAAU9kB,UAAUy6B,KAAO,SAAUC,GACnC,GAAIC,KAGAz8B,MAAK08B,MAAMF,IACbC,EAAQ/vB,KAAK1M,KAKf,KAAK,GADDshB,GAAQthB,KAAKshB,MACRjY,EAAI,EAAGod,EAAOnF,EAAMra,OAAYwf,EAAJpd,EAAUA,IAC7CozB,EAAUA,EAAQxQ,OAAO3K,EAAMjY,GAAGkzB,KAAKC,GAGzC,OAAOC,IAQT7V,EAAU9kB,UAAUwJ,SAAW,WAC7B,MAAOjB,GAAOhD,OAAOrH,KAAKshB,QAO5BsF,EAAU9kB,UAAU66B,MAAQ,SAASn7B,GACnCA,EAAOA,GAAQ,SACf,IAAI8Y,GAAI,WAAa9Y,EAAO,GAgB5B,OAdAxB,MAAKshB,MAAMnV,QAAQ,SAASxJ,GAExB2X,GADE3X,EAAK2e,MACF3e,EAAK2e,MAAMtb,IAAI,SAAS42B,GAC3B,MAAOA,GAAUD,UAChBrvB,KAAK,KAGH3K,EAAKg6B,QAIZriB,GAAK,SAEPA,GAAK,SAAW9Y,EAAO,KAIzB3B,EAAOD,QAAUgnB,GAKZ,SAAS/mB,EAAQD,EAASM,GAE/B,YAkBA,SAASsjB,GAAe/T,EAAMqQ,GAC5B,KAAM9f,eAAgBwjB,IACpB,KAAM,IAAIva,aAAY,mDAIxB,KAAKmB,EAASqF,GAAgB,KAAM,IAAIjJ,WAAU,uCAClD,MAAMsZ,YAAgBoI,IAAQ,KAAM,IAAI1hB,WAAU,qCAClD,IAAIiJ,IAAQotB,GAAkB,KAAM,IAAI/7B,OAAM,yBAA4B2O,EAAQ,0BAElFzP,MAAKyP,KAAOA,EACZzP,KAAK8f,KAAOA,EA3Bd,GAAIoI,GAAOhoB,EAAoB,KAC3B0mB,EAAY1mB,EAAoB,KAEhC28B,EAAW38B,EAAoB,KAE/B48B,EAAQ58B,EAAoB,KAC5BkK,EAAWlK,EAAoB,KAAKkK,QAwBxCoZ,GAAe1hB,UAAY,GAAIomB,GAE/B1E,EAAe1hB,UAAUN,KAAO,iBAShCgiB,EAAe1hB,UAAUu6B,SAAW,SAAUC,GAC5C,MAAO,UAAYt8B,KAAKyP,KAAO,QAAUzP,KAAK8f,KAAKuc,SAASC,IAQ9D9Y,EAAe1hB,UAAUy6B,KAAO,SAAUC,GACxC,GAAIlb,KAUJ,OAPIthB,MAAK08B,MAAMF,IACblb,EAAM5U,KAAK1M,MAIbshB,EAAQA,EAAM2K,OAAOjsB,KAAK8f,KAAKyc,KAAKC,KAStChZ,EAAe1hB,UAAUwJ,SAAW,WAClC,MAAOtL,MAAKyP,KAAO,MAAQzP,KAAK8f,KAAKxU,YAOvCkY,EAAe1hB,UAAU66B,MAAQ,WAC/B,GAAII,EAIJ,OAHI/8B,MAAK8f,eAAgB8G,KACvBmW,GAAS,YAAa,MAEjBD,EAAME,UAAUF,EAAMG,SAASj9B,KAAKyP,MAAOstB,GAAS,IACvDD,EAAME,UAAUh9B,KAAK8f,KAAK6c,UAGhC98B,EAAOD,QAAU4jB,GAIZ,SAAS3jB,EAAQD,EAASM,GAE/B,YAWA,SAASgjB,KACP,KAAMljB,eAAgBkjB,IACpB,KAAM,IAAIja,aAAY,mDAGxBjJ,MAAK6jB,UAdP,GAAIqE,GAAOhoB,EAAoB,KAC3BsC,EAAYtC,EAAoB,IAChCosB,EAAYpsB,EAAoB,KAAKosB,SAezCpJ,GAAUphB,UAAY,GAAIomB,GAE1BhF,EAAUphB,UAAUN,KAAO,YAQ3B0hB,EAAUphB,UAAUqhB,IAAM,SAAUrD,EAAMiD,GAIxC,GAHgBld,SAAZkd,IAAuBA,GAAU,KAG/BjD,YAAgBoI,IAAQ,KAAM,IAAI1hB,WAAU,qCAClD,KAAK8lB,EAAUvJ,GAAe,KAAM,IAAIvc,WAAU,2CAElD,IAAIkD,GAAQ1J,KAAK6jB,OAAO5c,MACxBjH,MAAK6jB,OAAOna,IACV/G,KAAMmd,EACNiD,QAASA,IAYbG,EAAUphB,UAAUu6B,SAAW,SAAUC,GACvCA,EAAK95B,UAAYA,CACjB,IAAIqhB,GAAS7jB,KAAK6jB,OAAO7d,IAAI,SAAU8d,GACrC,GAAIoZ,GAAKpZ,EAAMnhB,KAAK05B,SAASC,EAC7B,OAAIxY,GAAMf,QACD,gBAAkBma,EAAK,KAGvBA,EAAK,KAIhB,OAAO,kCAEHrZ,EAAOvW,KAAK,IACZ,sCASN4V,EAAUphB,UAAUy6B,KAAO,SAAUC,GACnC,GAAIlb,KAGAthB,MAAK08B,MAAMF,IACblb,EAAM5U,KAAK1M,KAKb,KAAK,GADD6jB,GAAS7jB,KAAK6jB,OACT3e,EAAI,EAAG8B,EAAM6c,EAAO5c,OAAYD,EAAJ9B,EAASA,IAC5Coc,EAAQA,EAAM2K,OAAOpI,EAAO3e,GAAGvC,KAAK45B,KAAKC,GAG3C,OAAOlb,IAQT4B,EAAUphB,UAAUwJ,SAAW,WAC7B,MAAOtL,MAAK6jB,OAAO7d,IAAI,SAAU8d,GAC/B,MAAOA,GAAMnhB,KAAK2I,YAAcwY,EAAMf,QAAU,GAAK,OACpDzV,KAAK,OAOV4V,EAAUphB,UAAU66B,MAAQ,WAC1B,MAAO38B,MAAK6jB,OAAO7d,IAAI,SAAU8d,GAC/B,MAAOA,GAAMnhB,KAAKg6B,SAAW7Y,EAAMf,QAAU,GAAK,OACjDzV,KAAK,OAGVzN,EAAOD,QAAUsjB,GAKZ,SAASrjB,EAAQD,EAASM,GAE/B,YAsBA,SAASmkB,GAAiBH,EAAWC,EAAUC,GAC7C,KAAMpkB,eAAgBqkB,IACpB,KAAM,IAAIpb,aAAY,mDAExB,MAAMib,YAAqBgE,IAAO,KAAM,IAAI1hB,WAAU,qCACtD,MAAM2d,YAAoB+D,IAAQ,KAAM,IAAI1hB,WAAU,oCACtD,MAAM4d,YAAqB8D,IAAO,KAAM,IAAI1hB,WAAU,qCAEtDxG,MAAKkkB,UAAYA,EACjBlkB,KAAKmkB,SAAWA,EAChBnkB,KAAKokB,UAAYA,EA9BnB,GAAI8D,GAAOhoB,EAAoB,KAC3B48B,EAAQ58B,EAAoB,KAC5BuB,EAAYvB,EAAoB,KAChCgC,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BgK,EAAOhK,EAAoB,KAC3BkK,EAAWF,EAAKG,OAAOD,SACvBlD,EAAWgD,EAAKhJ,OAAOgG,SACvBolB,EAAYpiB,EAAK,WAAWoiB,SAyBhCjI,GAAgBviB,UAAY,GAAIomB,GAEhC7D,EAAgBviB,UAAUN,KAAO,kBAUjC6iB,EAAgBviB,UAAUu6B,SAAW,SAASC,GA8B5C,MAxBAA,GAAKa,cAAgB,SAAUjZ,GAC7B,GAAIhd,EAASgd,IAAcoI,EAAUpI,IAAc9Z,EAAS8Z,GAC1D,MAAOA,IAAY,GAAO,CAG5B,IAAIA,YAAqBziB,GACvB,MAAOyiB,GAAUkJ,UAAW,GAAQ,CAGtC,IAAIlJ,YAAqBhiB,GACvB,MAAQgiB,GAAUnb,IAAMmb,EAAUlb,IAAM,GAAO,CAGjD,IAAIkb,YAAqB5hB,GACvB,MAAO4hB,GAAUje,OAAQ,GAAO,CAGlC,IAAkB,OAAdie,GAAoCre,SAAdqe,EACxB,OAAO,CAGT,MAAM,IAAI1d,WAAU,kCAAoC81B,EAAKv7B,KAAK,UAAUmjB,GAAa,MAIvF,iBAAmBlkB,KAAKkkB,UAAUmY,SAASC,GAAQ,SAC5Ct8B,KAAKmkB,SAASkY,SAASC,GAAQ,SAC/Bt8B,KAAKokB,UAAUiY,SAASC,GAAQ,KAS7CjY,EAAgBviB,UAAUy6B,KAAO,SAAUC,GACzC,GAAIlb,KAaJ,OAVIthB,MAAK08B,MAAMF,IACblb,EAAM5U,KAAK1M,MAIbshB,EAAQA,EAAM2K,OACVjsB,KAAKkkB,UAAUqY,KAAKC,GACpBx8B,KAAKmkB,SAASoY,KAAKC,GACnBx8B,KAAKokB,UAAUmY,KAAKC,KAS1BnY,EAAgBviB,UAAUwJ,SAAW,WAEnC,MAAO,IAAMtL,KAAKkkB,UAAU5Y,WAAa,QACrCtL,KAAKmkB,SAAS7Y,WAAa,QAC3BtL,KAAKokB,UAAU9Y,WAAa,KAOlC+Y,EAAgBviB,UAAU66B,MAAQ,WAChC,GAAIriB,GACAwiB,EAAME,UAAUh9B,KAAKmkB,SAASwY,SAC9B,YACAG,EAAME,UAAU,gBAAkBh9B,KAAKkkB,UAAUyY,SAC7C,QACJG,EAAME,UAAUh9B,KAAKokB,UAAUuY,SAC/B,YACAG,EAAME,UAAU,qBAGpB,OAAOF,GAAME,UAAU1iB,GACrB,+BACA,0BAIJza,EAAOD,QAAUykB,GAKZ,SAASxkB,EAAQD,EAASM,GAE/B,YAqCA,SAAS8iB,GAAa/c,EAAOm3B,GAC3B,KAAMp9B,eAAgBgjB,IACpB,KAAM,IAAI/Z,aAAY,mDAGxB,IAAIm0B,EAAW,CACb,IAAKhzB,EAASgzB,GACZ,KAAM,IAAI52B,WAAU,4CAEtB,KAAK4D,EAASnE,GACZ,KAAM,IAAIO,WAAU,wCAGtBxG,MAAKiG,MAAQA,EACbjG,KAAKo9B,UAAYA,MAIjBp9B,MAAKiG,MAAQA,EAAQ,GACrBjG,KAAKo9B,UAAY57B,EAAKyE,EAGxB,KAAKo3B,EAAgBr9B,KAAKo9B,WACxB,KAAM,IAAI52B,WAAU,8BAAgCxG,KAAKo9B,UAAY,KA1DzE,GAAIlV,GAAOhoB,EAAoB,KAE3BsB,GADYtB,EAAoB,KACzBA,EAAoB,KAAKsB,MAChC4I,EAAWlK,EAAoB,KAAKkK,SA2DpCizB,GACFn8B,QAAU,EACVmJ,QAAU,EACVizB,WAAW,EACXz3B,WAAa,EACb03B,QAAQ,EAGVva,GAAalhB,UAAY,GAAIomB,GAE7BlF,EAAalhB,UAAUN,KAAO,eAU9BwhB,EAAalhB,UAAUu6B,SAAW,SAAUC,GAC1C,OAAQt8B,KAAKo9B,WACX,IAAK,SACH,MAAkC,cAA9Bd,EAAKv7B,KAAKH,SAASM,OACd,mBAAqBlB,KAAKiG,MAAQ,KAIlCjG,KAAKiG,MAAMkC,QAAQ,aAAc,SAAUu0B,EAAOpS,GACvD,MAAOoS,GAAMhyB,UAAU4f,EAAMrjB,SAInC,KAAK,SACH,MAAO,IAAMjH,KAAKiG,MAAQ,GAE5B,KAAK,UACH,MAAOjG,MAAKiG,KAEd;IAAK,YACH,MAAOjG,MAAKiG,KAEd,KAAK,OACH,MAAOjG,MAAKiG,KAEd,SAEE,KAAM,IAAIO,WAAU,iCAAmCxG,KAAKo9B,UAAY,OAQ9Epa,EAAalhB,UAAUwJ,SAAW,WAChC,OAAQtL,KAAKo9B,WACX,IAAK,SACH,MAAO,IAAMp9B,KAAKiG,MAAQ,GAE5B,SACE,MAAOjG,MAAKiG,QAQlB+c,EAAalhB,UAAU66B,MAAQ,WAC7B,GACIjzB,GADAzD,EAAQjG,KAAKiG,KAEjB,QAAQjG,KAAKo9B,WACX,IAAK,SACH,MAAO,UAAYn3B,EAAQ,GAE7B,KAAK,SAEH,MADAyD,GAAQzD,EAAM6pB,cAAcsJ,QAAQ,KACtB,KAAV1vB,EACKzD,EAAMyE,UAAU,EAAGhB,GAAS,eAC/BzD,EAAMyE,UAAUhB,EAAQ,GAAK,IAE5BzD,CAET,SACE,MAAOA,KAIbpG,EAAOD,QAAUojB,GAKZ,SAASnjB,EAAQD,EAASM,GAE/B,YAiBA,SAAS6jB,GAAuBtU,EAAM9D,EAAMmU,GAC1C,KAAM9f,eAAgB+jB,IACpB,KAAM,IAAI9a,aAAY,mDAIxB,KAAKmB,EAASqF,GAAO,KAAM,IAAIjJ,WAAU,uCACzC,KAAKT,EAAQ4F,KAAUA,EAAKwwB,MAAM/xB,GAAY,KAAM,IAAI5D,WAAU,yDAClE,MAAMsZ,YAAgBoI,IAAO,KAAM,IAAI1hB,WAAU,qCACjD,IAAIiJ,IAAQotB,GAAU,KAAM,IAAI/7B,OAAM,2BAA8B2O,EAAQ,0BAE5EzP,MAAKyP,KAAOA,EACZzP,KAAK2L,KAAOA,EACZ3L,KAAK8f,KAAOA,EA5Bd,GAAIoI,GAAOhoB,EAAoB,KAC3B28B,EAAW38B,EAAoB,KAC/B48B,EAAQ58B,EAAoB,KAC5BkK,EAAWlK,EAAoB,KAAKkK,SACpCrE,EAAUD,MAAMC,OA2BpBge,GAAuBjiB,UAAY,GAAIomB,GAEvCnE,EAAuBjiB,UAAUN,KAAO,yBAUxCuiB,EAAuBjiB,UAAUu6B,SAAW,SAAUC,GACpD,MAAO,UAAYt8B,KAAKyP,KAAO,qFAGAzP,KAAKyP,KAAO,IAAMzP,KAAK2L,KAAK2B,KAAK,KAAO,oCAChCtN,KAAK2L,KAAK1E,OAAS,2EAGoBjH,KAAKyP,KAAO,wCAA0CzP,KAAK2L,KAAK1E,OAAS,uBAEnJjH,KAAK2L,KAAK3F,IAAI,SAAUw3B,EAAU9zB,GAChC,MAAO,UAAY8zB,EAAW,kBAAoB9zB,EAAQ,OACzD4D,KAAK,IACR,gBAAkBtN,KAAK8f,KAAKuc,SAASC,GACrC,0BACsBt8B,KAAKyP,KAAO,IAAMzP,KAAK2L,KAAK2B,KAAK,MAAQ,iCAUrEyW,EAAuBjiB,UAAUy6B,KAAO,SAAUC,GAChD,GAAIlb,KAUJ,OAPIthB,MAAK08B,MAAMF,IACblb,EAAM5U,KAAK1M,MAIbshB,EAAQA,EAAM2K,OAAOjsB,KAAK8f,KAAKyc,KAAKC,KAStCzY,EAAuBjiB,UAAUwJ,SAAW,WAC1C,MAAO,YAActL,KAAKyP,KACtB,IAAMzP,KAAK2L,KAAK2B,KAAK,MAAQ,OAC7BtN,KAAK8f,KAAKxU,YAOhByY,EAAuBjiB,UAAU66B,MAAQ,WACvC,MAAO38B,MAAKyP,KACRqtB,EAAME,UAAUh9B,KAAK2L,KAAK3F,IAAI82B,EAAMG,UAAU3vB,KAAK,OAAO,GAAQ,IAClEwvB,EAAME,UAAUh9B,KAAK8f,KAAK6c,UAGhC98B,EAAOD,QAAUmkB,GAKZ,SAASlkB,EAAQD,EAASM,GAE/B,YAkBA,SAASujB,GAAWniB,EAAQwL,GAC1B,KAAM9M,eAAgByjB,IACpB,KAAM,IAAIxa,aAAY,mDAIxB,MAAM3H,YAAkB4mB,IAAO,KAAM,IAAI1hB,WAAU,uCACnD,KAAKT,EAAQ+G,KAAYA,EAAOqvB,MAAMC,GACpC,KAAM,IAAI51B,WAAU,yDAGtBxG,MAAKsB,OAASA,EACdtB,KAAK8M,OAASA,EA5BhB,GAAIob,GAAOhoB,EAAoB,KAC3BglB,EAAYhlB,EAAoB,KAChCqjB,EAAarjB,EAAoB,KAEjCk8B,EAASlU,EAAKkU,OACdr2B,EAAUD,MAAMC,OA0BpB0d,GAAU3hB,UAAY,GAAIomB,GAE1BzE,EAAU3hB,UAAUN,KAAO,YAU3BiiB,EAAU3hB,UAAUu6B,SAAW,SAAUC,GACvC,MAAOt8B,MAAKy9B,cAAcnB,IAe5B7Y,EAAU3hB,UAAU27B,cAAgB,SAASnB,EAAMjtB,GAEjD,GAAImtB,IACFh7B,KAAM+hB,EACNma,YACEjuB,KAAM,QAGNkuB,GAAa,EACbC,EAAe59B,KAAK8M,OAAO9G,IAAI,SAAUgH,GAC3C,GAAI6wB,GAAS7wB,EAAMuvB,KAAKC,GAAQv1B,OAAS,CAEzC,OADA02B,GAAaE,EAASA,EAASF,EACxBE,IASL/wB,EAAS9M,KAAK8M,OAAO9G,IAAI,SAASgH,EAAO9H,GAC3C,GAAI24B,GAASD,EAAa14B,EAC1B,OAAI8H,aAAiBkY,GACf2Y,EAEK,4EAEwB34B,EAAI,mBAEtB8H,EAAMzB,MAAM8wB,SAASC,GAAQ,SAC7BtvB,EAAMxB,IAAI6wB,SAASC,GAAQ,UAC1BtvB,EAAMvB,KAAOuB,EAAMvB,KAAK4wB,SAASC,GAAQ,KACnD,gBAKG,+BAEMtvB,EAAMzB,MAAM8wB,SAASC,GAAQ,SAC7BtvB,EAAMxB,IAAI6wB,SAASC,GAAQ,UAC1BtvB,EAAMvB,KAAOuB,EAAMvB,KAAK4wB,SAASC,GAAQ,KACnD,WAKFuB,EAEK,4EAEwB34B,EAAI,cACjB8H,EAAMqvB,SAASC,GAAQ,aAKlCtvB,EAAMqvB,SAASC,IAM5B,OAAIqB,GACK,6BACc39B,KAAKsB,OAAO+6B,SAASC,GAAQ,uFAI1BxvB,EAAOQ,KAAK,MAAQ,SAC9B+B,EAAe,KAAOA,EAAe,IAC/C,WAIG,eACHrP,KAAKsB,OAAO+6B,SAASC,GAAQ,eACbxvB,EAAOQ,KAAK,MAAQ,KACnC+B,EAAe,KAAOA,EAAe,IACtC,KASRoU,EAAU3hB,UAAUy6B,KAAO,SAAUC,GACnC,GAAIlb,KAGAthB,MAAK08B,MAAMF,IACblb,EAAM5U,KAAK1M,MAIbshB,EAAQA,EAAM2K,OAAOjsB,KAAKsB,OAAOi7B,KAAKC,GAItC,KAAK,GADD1vB,GAAS9M,KAAK8M,OACT5H,EAAI,EAAG8B,EAAM8F,EAAO7F,OAAYD,EAAJ9B,EAASA,IAC5Coc,EAAQA,EAAM2K,OAAOnf,EAAO5H,GAAGq3B,KAAKC,GAGtC,OAAOlb,IAOTmC,EAAU3hB,UAAUg8B,WAAa,WAC/B,MAAO99B,MAAKsB,OAAOmO,MAOrBgU,EAAU3hB,UAAUwJ,SAAW,WAE7B,MAAOtL,MAAKsB,OAAOgK,WAAa,IAAMtL,KAAK8M,OAAOQ,KAAK,MAAQ,KAOjEmW,EAAU3hB,UAAU66B,MAAQ,WAC1B,MAAO38B,MAAKsB,OAAOq7B,QAAU,IAAM38B,KAAK8M,OAAOQ,KAAK,MAAQ,KAG9DzN,EAAOD,QAAU6jB,GAIZ,SAAS5jB,EAAQD,EAASM,GAE/B,YAiBA,SAAS6kB,GAAcgZ,EAAIxZ,EAAIV,GAC7B,KAAM7jB,eAAgB+kB,IACpB,KAAM,IAAI9b,aAAY,mDAIxBjJ,MAAK+9B,GAAKA,EACV/9B,KAAKukB,GAAKA,EACVvkB,KAAK6jB,OAASA,EAvBhB,GAAIqE,GAAOhoB,EAAoB,KAC3B8iB,EAAe9iB,EAAoB,KACnCqjB,EAAarjB,EAAoB,KACjCyjB,EAAezjB,EAAoB,KACnC48B,EAAQ58B,EAAoB,IAsBhC6kB,GAAajjB,UAAY,GAAIomB,GAE7BnD,EAAajjB,UAAUN,KAAO,eAU9BujB,EAAajjB,UAAUu6B,SAAW,SAAUC,GAC1C,KAAMt8B,KAAKukB,KAAM+X,GAAKv7B,MACpB,KAAM,IAAID,OAAM,YAAcd,KAAKukB,GAAK,wCAG1C,IAAIV,GAAS7jB,KAAK6jB,OAAO7d,IAAI,SAAU8d,GACrC,MAAOA,GAAMuY,SAASC,IAExB,OAAO,QAAUt8B,KAAKukB,GAAK,IAAMV,EAAOvW,KAAK,MAAQ,KAQvDyX,EAAajjB,UAAUy6B,KAAO,SAAUC,GACtC,GAAIlb,KAGAthB,MAAK08B,MAAMF,IACblb,EAAM5U,KAAK1M,KAIb,IAAI6jB,GAAS7jB,KAAK6jB,MAClB,IAAIA,EACF,IAAK,GAAI3e,GAAI,EAAG8B,EAAM6c,EAAO5c,OAAYD,EAAJ9B,EAASA,IAC5Coc,EAAQA,EAAM2K,OAAOpI,EAAO3e,GAAGq3B,KAAKC,GAIxC,OAAOlb,IAOTyD,EAAajjB,UAAUwJ,SAAW,WAChC,GAAIuY,GAAS7jB,KAAK6jB,MAElB,QAAQA,EAAO5c,QACb,IAAK,GACH,MAAe,KAAXjH,KAAK+9B,GAEA,IAAMla,EAAO,GAAGvY,WAIhBuY,EAAO,GAAGvY,WAAatL,KAAK+9B,EAGvC,KAAK,GACH,GAAIC,GAAMna,EAAO,GAAGvY,UAChBuY,GAAO,YAAckB,KACvBiZ,EAAM,IAAMA,EAAM,IAEpB,IAAIC,GAAMpa,EAAO,GAAGvY,UAIpB,OAHIuY,GAAO,YAAckB,KACvBkZ,EAAM,IAAMA,EAAM,KAEbD,EAAM,IAAMh+B,KAAK+9B,GAAK,IAAME,CAErC,SACE,MAAOj+B,MAAK+9B,GAAK,IAAM/9B,KAAK6jB,OAAOvW,KAAK,MAAQ,MAQtDyX,EAAajjB,UAAU66B,MAAQ,WAC7B,GAAI9Y,GAAS7jB,KAAK6jB,OACdqa,EAAMpB,EAAMqB,WAAWn+B,KAAK+9B,IAC5BK,EAAKva,EAAO,GACZwa,EAAKxa,EAAO,EAEhB,QAAQA,EAAO5c,QACb,IAAK,GACH,MAAgB,MAAZjH,KAAK+9B,IAA0B,MAAZ/9B,KAAK+9B,GAEnB/9B,KAAK+9B,GAAKK,EAAGzB,QAGfyB,EAAGzB,QAAU38B,KAAK+9B,EAE3B,KAAK,GACH,GAAIC,GAAMI,EAAGzB,QACT2B,GAAM,EACNL,EAAMI,EAAG1B,QACT4B,GAAM,EACNC,EAAM,GACNC,EAAM,EAEV,QAAQz+B,KAAK+9B,IACX,IAAK,IACHS,EAAMN,EACNA,EAAM,EAEN,MAEF,KAAK,IACCE,YAAcrZ,KACF,MAAVqZ,EAAGL,IAAwB,MAAVK,EAAGL,MACtBO,GAAM,GAIND,YAActZ,KACF,MAAVsZ,EAAGN,IAAwB,MAAVM,EAAGN,GACtBQ,GAAM,EAEW,MAAVF,EAAGN,KACVQ,GAAM,IAMRL,GAFGE,YAAcpb,IAAgBob,YAAcrZ,MAC5CsZ,YAAcrb,IAAgBqb,YAActZ,IACzC,WAGA,OAGR,MAEF,KAAK,IACCqZ,YAAcrZ,IAAgBqZ,YAAcza,GAC9C2a,GAAM,EAECF,YAAc7a,KACrB+a,EAAM,KAGR,MAEF,KAAK,KACHL,EAAMnB,EAAM4B,OAAOT,GAAK,GAO5B,MAHAD,GAAMlB,EAAME,UAAUgB,EAAKM,GAC3BL,EAAMnB,EAAME,UAAUiB,EAAKM,GAEpBC,EAAMR,EAAME,EAAMD,EAAMQ,CAEjC,SACE,MAAOP,GAAM,IAAMl+B,KAAK6jB,OAAO7d,IAAI82B,EAAMG,UAAU3vB,KAAK,MAAQ,MAItEzN,EAAOD,QAAUmlB,GAKZ,SAASllB,EAAQD,EAASM,GAE/B,YAeA,SAASyjB,GAAcC,EAAQC,GAC7B,KAAM7jB,eAAgB2jB,IACpB,KAAM,IAAI1a,aAAY,mDAIxB,MAAM2a,YAAkBsE,IAAO,KAAM,IAAI1hB,WAAU,6CACnD,KAAKT,EAAQ8d,KAAYA,EAAOsY,MAAMC,GACpC,KAAM,IAAI51B,WAAU,yDAGtBxG,MAAK4jB,OAASA,EACd5jB,KAAK6jB,OAASA,EAzBhB,GAAIqE,GAAOhoB,EAAoB,KAE3B48B,EAAQ58B,EAAoB,KAC5Bk8B,EAASlU,EAAKkU,OACdr2B,EAAUD,MAAMC,OAwBpB4d,GAAa7hB,UAAY,GAAIomB,GAE7BvE,EAAa7hB,UAAUN,KAAO,eAU9BmiB,EAAa7hB,UAAUu6B,SAAW,SAAUC,GAC1C,GAAI/X,GAAK+X,EAAKv7B,KAAKf,KAAK4jB,OAAOnU,MAC3BkvB,EAAuB,kBAAPpa,IAAqC,GAAdA,EAAGqa,QAG1C/a,EAAS7jB,KAAK6jB,OAAO7d,IAAI,SAAU8d,GACrC,MAAOA,GAAMuY,SAASC,IAGxB,IAAIqC,EAAO,CAET,GACIE,GADApvB,EAAOzP,KAAK4jB,OAAOnU,IAEvB,GACEovB,GAAa,IAAMj6B,KAAKwC,MAAsB,IAAhBxC,KAAK+lB,gBAE9BkU,IAAcvC,GAGrB,OAFAA,GAAKuC,GAAc7+B,KAAK6jB,OAEjB,KAAOpU,EAAO,uBACLA,EAAO,MAAQoU,EAAOvW,KAAK,MAAQ,aACpCmC,EAAO,MAAaovB,EAAa,kBAIhD,MAAO7+B,MAAK4jB,OAAOyY,SAASC,GAAQ,IAAMzY,EAAOvW,KAAK,MAAQ,KASlEqW,EAAa7hB,UAAUy6B,KAAO,SAAUC,GACtC,GAAIlb,KAGAthB,MAAK08B,MAAMF,IACblb,EAAM5U,KAAK1M,MAIbshB,EAAQA,EAAM2K,OAAOjsB,KAAK4jB,OAAO2Y,KAAKC,GAItC,KAAK,GADD3Y,GAAS7jB,KAAK6jB,OACT3e,EAAI,EAAG8B,EAAM6c,EAAO5c,OAAYD,EAAJ9B,EAASA,IAC5Coc,EAAQA,EAAM2K,OAAOpI,EAAO3e,GAAGq3B,KAAKC,GAGtC,OAAOlb,IAOTqC,EAAa7hB,UAAUwJ,SAAW,WAEhC,MAAOtL,MAAK4jB,OAAOtY,WAAa,IAAMtL,KAAK6jB,OAAOvW,KAAK,MAAQ,KAOjEqW,EAAa7hB,UAAU66B,MAAQ,WAC7B,MAAOG,GAAMgC,SAAS9+B,OAGxBH,EAAOD,QAAU+jB,GAKZ,SAAS9jB,EAAQD,EAASM,GAE/B,YAYA,SAASglB,GAAWrB,GAClB,KAAM7jB,eAAgBklB,IACpB,KAAM,IAAIjc,aAAY,mDAIxB,KAAKnD,MAAMC,QAAQ8d,IACG,GAAjBA,EAAO5c,QAAgC,GAAjB4c,EAAO5c,SAC7B4c,EAAOsY,MAAMC,GAChB,KAAM,IAAI51B,WAAU,kEAGtBxG,MAAKuL,MAAQsY,EAAO,GACpB7jB,KAAKwL,IAAQqY,EAAO,GACpB7jB,KAAKyL,KAAQoY,EAAO,GAxBtB,GAAIqE,GAAOhoB,EAAoB,KAE3Bk8B,EAASlU,EAAKkU,MAyBlBlX,GAAUpjB,UAAY,GAAIomB,GAE1BhD,EAAUpjB,UAAUN,KAAO,YAU3B0jB,EAAUpjB,UAAUu6B,SAAW,SAAUC,GACvC,MAAO,cACHt8B,KAAKuL,MAAM8wB,SAASC,GAAQ,KAC5Bt8B,KAAKwL,IAAI6wB,SAASC,IACjBt8B,KAAKyL,KAAQ,KAAOzL,KAAKyL,KAAK4wB,SAASC,GAAS,IACjD,KAQNpX,EAAUpjB,UAAUy6B,KAAO,SAAUC,GACnC,GAAIlb,KAcJ,OAXIthB,MAAK08B,MAAMF,IACblb,EAAM5U,KAAK1M,MAIbshB,EAAQA,EAAM2K,OAAOjsB,KAAKuL,MAAMgxB,KAAKC,IACjCx8B,KAAKyL,OACP6V,EAAQA,EAAM2K,OAAOjsB,KAAKyL,KAAK8wB,KAAKC,KAEtClb,EAAQA,EAAM2K,OAAOjsB,KAAKwL,IAAI+wB,KAAKC,KASrCtX,EAAUpjB,UAAUwJ,SAAW,WAE7B,GAAIzD,GAAM7H,KAAKuL,MAAMD,UAMrB,OALItL,MAAKyL,OACP5D,GAAO,IAAM7H,KAAKyL,KAAKH,YAEzBzD,GAAO,IAAM7H,KAAKwL,IAAIF,YASxB4Z,EAAUpjB,UAAU66B,MAAQ,WAC1B,GAAI90B,GAAM7H,KAAKuL,MAAMoxB,OAMrB,OALI38B,MAAKyL,OACP5D,GAAO,IAAM7H,KAAKyL,KAAKkxB,SAEzB90B,GAAO,IAAM7H,KAAKwL,IAAImxB,SAKxB98B,EAAOD,QAAUslB,GAKZ,SAASrlB,EAAQD,EAASM,GAE/B,YAeA,SAASqjB,GAAW9T,GAClB,KAAMzP,eAAgBujB,IACpB,KAAM,IAAIta,aAAY,mDAIxB,KAAKmB,EAASqF,GAAQ,KAAM,IAAIjJ,WAAU,uCAE1CxG,MAAKyP,KAAOA,EAqCd,QAASsvB,GAAOtvB,GACd,KAAM,IAAI3O,OAAM,oBAAsB2O,GA3DxC,GAAIyY,GAAOhoB,EAAoB,KAC3BoC,EAAOpC,EAAoB,IAE3B48B,EAAQ58B,EAAoB,KAC5BkK,EAAWlK,EAAoB,KAAKkK,QAoBxCmZ,GAAWzhB,UAAY,GAAIomB,GAE3B3E,EAAWzhB,UAAUN,KAAO,aAU5B+hB,EAAWzhB,UAAUu6B,SAAW,SAAUC,GAKxC,MAHAA,GAAY,MAAIyC,EAChBzC,EAAW,KAAIh6B,EAEXtC,KAAKyP,OAAQ6sB,GAAKv7B,KACb,KAAOf,KAAKyP,KAAO,uBAAyBzP,KAAKyP,KAAO,cAAgBzP,KAAKyP,KAAO,MAGpF,KACGzP,KAAKyP,KAAO,uBAAyBzP,KAAKyP,KAAO,SACtDnN,EAAKuO,gBAAgB7Q,KAAKyP,MACvB,mBAAqBzP,KAAKyP,KAAO,KACjC,UAAYzP,KAAKyP,KAAO,MAC5B,KAiBR8T,EAAWzhB,UAAUwJ,SAAW,WAC9B,MAAOtL,MAAKyP,MAQd8T,EAAWzhB,UAAU66B,MAAQ,WAC3B,MAAOG,GAAMG,SAASj9B,KAAKyP,OAG7B5P,EAAOD,QAAU2jB,GAKZ,SAAS1jB,EAAQD,EAASM,GAE/B,YAaA,SAASwjB,GAAWha,EAAOoW,GACzB,KAAM9f,eAAgB0jB,IACpB,KAAM,IAAIza,aAAY,mDAGxB,MAAMS,YAAiB+Z,IACrB,KAAM,IAAIjd,WAAU,2CAEtB,MAAMsZ,YAAgBoI,IACpB,KAAM,IAAI1hB,WAAU,qCAGtBxG,MAAK0J,MAAQA,EACb1J,KAAK8f,KAAOA,EAxBd,GAAIoI,GAAOhoB,EAAoB,KAC3BujB,EAAYvjB,EAAoB,IA0BpCwjB,GAAW5hB,UAAY,GAAIomB,GAE3BxE,EAAW5hB,UAAUN,KAAO,aAU5BkiB,EAAW5hB,UAAUu6B,SAAW,SAAUC,GACxC,MAAO,UAAYt8B,KAAK0J,MAAMo0B,aAAe,QACzC99B,KAAK0J,MAAM+zB,cAAcnB,EAAOt8B,KAAK8f,KAAKuc,SAASC,KAQzD5Y,EAAW5hB,UAAUy6B,KAAO,SAAUC,GACpC,GAAIlb,KAaJ,OAVIthB,MAAK08B,MAAMF,IACblb,EAAM5U,KAAK1M,MAIbshB,EAAQA,EAAM2K,OAAOjsB,KAAK0J,MAAM6yB,KAAKC,IAGrClb,EAAQA,EAAM2K,OAAOjsB,KAAK8f,KAAKyc,KAAKC,KAStC9Y,EAAW5hB,UAAUwJ,SAAW,WAC9B,MAAOtL,MAAK0J,MAAM4B,WAAa,MAAQtL,KAAK8f,KAAKxU,YAOnDoY,EAAW5hB,UAAU66B,MAAQ,WAC3B,MAAO38B,MAAK0J,MAAMizB,QAAU,MAAQ38B,KAAK8f,KAAK6c,SAGhD98B,EAAOD,QAAU8jB,GAKZ,SAAS7jB,EAAQD,EAASM,GAE/B,YAOA,SAASgoB,KACP,KAAMloB,eAAgBkoB,IACpB,KAAM,IAAIjf,aAAY,oDAoJ1B,QAAS+1B,GAAgBnX,GACvB,IAAK,GAAIjE,KAAUiE,GACjB,GAAIA,EAAMnhB,eAAekd,IACnBA,IAAUiZ,GACZ,KAAM,IAAI/7B,OAAM,sCAAwC8iB,EAAS,2BAazE,QAASqb,GAAWl+B,GAClB,GAAIm+B,GAAcr+B,OAAOF,OAAOI,EAEhC,KAAK,GAAI0O,KAAQ1O,GACf,GAAIA,EAAK2F,eAAe+I,GAAO,CAC7B,GAAI8U,GAAKxjB,EAAK0O,GACVuc,EAAYzH,GAAMA,EAAGyH,SACrBA,KACFkT,EAAYzvB,GAAQuc,GAK1B,MAAOkT,GAzLT,GAAIrC,GAAW38B,EAAoB,IAgBnCgoB,GAAKpmB,UAAUie,KAAO,WACpB,KAAM,IAAIjf,OAAM,2EAIlBonB,EAAKpmB,UAAUN,KAAO,OAUtB0mB,EAAKpmB,UAAUimB,QAAU,SAAUhnB,GACjC,KAAMA,YAAgBF,SACpB,KAAM,IAAI2F,WAAU,qCAItB,IAAI81B,IACFv7B,KAAMk+B,EAAWl+B,GACjBi+B,eAAgBA,GAGdG,EAAOn/B,KAAKq8B,SAASC,GAErB8C,EAAWv+B,OAAOi0B,KAAKwH,GAAMt2B,IAAI,SAAUyJ,GAC7C,MAAO,WAAaA,EAAO,YAAcA,EAAO,QAG9C4vB,EACAD,EAAS9xB,KAAK,KACV,+GAIgB6xB,EAAO,SAI3Bx/B,EAAU,GAAI2/B,UAAU,OAAQD,EACpC,OAAO1/B,GAAQ28B,IAWjBpU,EAAKpmB,UAAUu6B,SAAW,WACxB,KAAM,IAAIv7B,OAAM,oCAmBlBonB,EAAKpmB,UAAUy6B,KAAO,SAAUC,GAC9B,MAAOx8B,MAAK08B,MAAMF,IAAWx8B,UAU/BkoB,EAAKpmB,UAAU46B,MAAQ,SAAUF,GAC/B,GAAIE,IAAQ,CAEZ,IAAIF,EAAQ,EACNA,EAAOh7B,MAAUxB,eAAgBw8B,GAAOh7B,OAC1Ck7B,GAAQ,EAGV,IAAIgB,GAAalB,EAAOkB,UACxB,IAAIhB,GAASgB,EACX,IAAK,GAAI52B,KAAQ42B,GACf,GAAIA,EAAWh3B,eAAeI,IACxB9G,KAAK8G,KAAU42B,EAAW52B,GAAO,CACnC41B,GAAQ,CACR,QAOV,MAAOA,IAOTxU,EAAKpmB,UAAUwJ,SAAW,WACxB,MAAO,IAOT4c,EAAKpmB,UAAU66B,MAAQ,WACrB,MAAO,IAQTzU,EAAKkU,OAAS,SAAS96B,GACrB,MAAOA,aAAkB4mB,IAyC3BroB,EAAOD,QAAUsoB,GAKZ,SAASroB,EAAQD,EAASM,GAE/B,GACI2I,IADiB3I,EAAoB,KACxBA,EAAoB,KAOrCN,GAAQosB,UAAY,SAAUvb,GAC5B,MAAIA,aAAe5H,GACV,GAAIA,GAAW4H,EAAI/G,MAAQ,EAAG+G,EAAIxI,IAAM,EAAGwI,EAAI/H,IAAM,GAGvD+H,IAMJ,SAAS5Q,EAAQD,GAEtB,YAOAA,GAAQ0sB,UAAY,SAASrmB,GAC3B,MAAQA,aAAiBI,UAA6B,iBAATJ,KAM1C,SAASpG,EAAQD,EAASM,GAE/B,YA4FA,SAASq/B,GAAa7zB,EAAOrK,GAC3B,GAAIyE,MAAMC,QAAQ2F,GAAQ,CAGxB,IAAK,GAFD7D,GAAM,IACNb,EAAM0E,EAAMzE,OACP/B,EAAI,EAAO8B,EAAJ9B,EAASA,IACd,GAALA,IACF2C,GAAO,MAETA,GAAO03B,EAAY7zB,EAAMxG,GAAI7D,EAG/B,OADAwG,IAAO,IAIP,MAAOjI,GAAQyH,OAAOqE,EAAOrK,GAxGjC,GAAIH,GAAShB,EAAoB,GAC7BypB,EAAYzpB,EAAoB,KAChCuB,EAAYvB,EAAoB,IAOpCN,GAAQwK,SAAW,SAASnE,GAC1B,MAAQA,aAAiBG,SAA4B,gBAATH,IAQ9CrG,EAAQyQ,SAAW,SAAS1G,EAAM+iB,GAChC,GAAInhB,GAAQ5B,EAAK1C,OAASylB,EAAOzlB,OAC7BuE,EAAM7B,EAAK1C,MACf,OAAQ0C,GAAKe,UAAUa,EAAOC,KAASkhB,GA0BzC9sB,EAAQyH,OAAS,SAASpB,EAAO5E,GAC/B,MAAIH,GAAOgG,SAASjB,GACX/E,EAAOmG,OAAOpB,EAAO5E,GAG1B4E,YAAiBxE,GACZkoB,EAAUtiB,OAAOpB,EAAO5E,GAG7ByE,MAAMC,QAAQE,GACTs5B,EAAYt5B,EAAO5E,GAGxBzB,EAAQwK,SAASnE,GACZ,IAAMA,EAAQ,IAGF,kBAAVA,GACFA,EAAM0Z,OAAS1Z,EAAM0Z,OAAS,GAAK,WAGxC1Z,YAAiBpF,QACS,kBAAjBoF,GAAMoB,OACRpB,EAAMoB,OAAOhG,GAGb4E,EAAMqF,WAIVlF,OAAOH,KAkCX,SAASpG,GAEdA,EAAOD,SACL6P,KAAQ,IACRgQ,SAAY,YACZE,QACE,KAEFD,YAAe,oFACfE,UACE,IACA,QACA,SACA,UAEFI,SAAY,SAMT,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,QACRgQ,SAAY,YACZE,QACE,SAEFD,YAAe,sBACfE,UACE,SAEFI,SAAY,UAMT,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,IACRgQ,SAAY,YACZE,QACE,KAEFD,YAAe,sIACfE,UACE,IACA,QACA,YAEFI,aAMG,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,WACRgQ,SAAY,YACZE,QACE,YAEFD,YAAe,6GACfE,UACE,WACA,SAEFI,aAMG,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,YACZE,QACE,OAEFD,YAAe,mEACfE,UACE,MACA,UAEFI,aAMG,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,YACZE,QACE,QAEFD,YAAe,oEACfE,UACE,OACA,WAEFI,aAMG,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,QACRgQ,SAAY,YACZE,QACE,SAEFD,YAAe,kEACfE,UACE,QACA,aAEFI,aAMG,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,SACRgQ,SAAY,YACZE,QACE,UAEFD,YAAe,mEACfE,UACE,SACA,cAEFI,aAMG,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,YACZE,QACE,OAEFD,YAAe,eACfE,UACE,MACA,SAEFI,aAMG,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,YACZE,QACE,QAEFD,YAAe,aACfE,UACE,QAEFI,SAAY,OAAQ,WAMjB,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,KACRgQ,SAAY,YACZE,QACE,MAEFD,YAAe,gJACfE,UACE,KACA,aAEFI,SAAY,SAMT,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,YACZE,QACE,OAEFD,YAAe,mOACfE,UACE,OAEFI,aAMG,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,UACRgQ,SAAY,YACZE,QACE,WAEFD,YAAe,+DACfE,UACE,UACA,aAEFI,aAMG,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,QACRgQ,SAAY,YACZE,QACE,SAEFD,YAAe,6DACfE,UACE,QACA,WAEFI,aAMG,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,YACZE,QACE,OAEFD,YAAe,0GACfE,UACE,MACA,UAEFI,SAAY,QAMT,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,YACZE,QACE,QAEFD,YAAe,qBACfE,UACE,QAEFI,SAAY,WAMT,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,UACRgQ,SAAY,YACZE,QACE,WAEFD,YAAe,8CACfE,UACE,WAEFI,aAMG,SAASngB,EAAQD,EAASM,GAE/B,YAKAL,GAAOD,QAAU,SAAUmB,GA6BzB,QAAS2xB,GAAajjB,GACpB,IAAK+vB,EAAc94B,eAAe+I,GAChC,KAAM,IAAI3O,OAAM,wBAA0B2O,EAE5C,IAAI9D,GAAO7F,MAAMhE,UAAU0qB,MAAMjsB,KAAK6H,UAAW,GAC7CsqB,EAAe8M,EAAc/vB,GAAM1C,MAAM/M,KAAM2L,EAEnD,OAAO,UAAU+mB,GAGf,GAAI+M,IAEF9U,OAAQ,SAAS+U,EAAMC,EAAMC,GAC3B,GAAI3zB,GAAMhE,EAAKS,CACf,IAAIN,UAAUnB,OAAS,EACrB,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,SAAUP,UAAUnB,OAAQ,EAAG,EA+BrE,IA5BgC,IAArBmB,UAAUnB,OACf6Z,EAAa4e,GACfzzB,EAAOyzB,EAGPh3B,EAAMg3B,EAGsB,IAArBt3B,UAAUnB,OACf6Z,EAAa4e,IACfzzB,EAAOyzB,EACPh3B,EAAMi3B,IAGN13B,EAAMy3B,EACNh3B,EAAMi3B,IAIR1zB,EAAOyzB,EACPz3B,EAAM03B,EACNj3B,EAAMk3B,GAKI/5B,SAAR6C,IAAmBA,EAAM,GACjB7C,SAARoC,IAAmBA,EAAM,GAChBpC,SAAToG,EAAoB,CACtB,GAAIyD,GAAMmwB,EAAqB5zB,EAAK9F,UAAW8B,EAAKS,EAAKo3B,EACzD,OAAQ7zB,aAAgB5J,GAAU,GAAIA,GAAOqN,GAAOA,EAEjD,MAAOowB,GAAQ73B,EAAKS,IAG3BkiB,UAAW,SAAS8U,EAAMC,EAAMC,GAC9B,GAAI3zB,GAAMhE,EAAKS,CACf,IAAIN,UAAUnB,OAAS,GAAKmB,UAAUnB,OAAS,EAC7C,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,YAAaP,UAAUnB,OAAQ,EAAG,EA8BxE,IA3B8B,IAArBmB,UAAUnB,OACb6Z,EAAa4e,GACfzzB,EAAOyzB,EAGPh3B,EAAMg3B,EAGoB,IAArBt3B,UAAUnB,OACb6Z,EAAa4e,IACfzzB,EAAOyzB,EACPh3B,EAAMi3B,IAGN13B,EAAMy3B,EACNh3B,EAAMi3B,IAIR1zB,EAAOyzB,EACPz3B,EAAM03B,EACNj3B,EAAMk3B,GAKI/5B,SAARoC,IAAmBA,EAAM,GAChBpC,SAAToG,EAAoB,CACtB,GAAIyD,GAAMmwB,EAAqB5zB,EAAK9F,UAAW8B,EAAKS,EAAKq3B,EACzD,OAAQ9zB,aAAgB5J,GAAU,GAAIA,GAAOqN,GAAOA,EAEjD,MAAOqwB,GAAW93B,EAAKS,IAG9BgiB,WAAY,SAASsV,GACnB,GAAyB,IAArB53B,UAAUnB,OACZ,KAAM,IAAIlG,GAAKkB,MAAM0G,eAAe,aAAcP,UAAUnB,OAAQ,EAEtE,IAAI+4B,YAAqB39B,GACvB29B,EAAYA,EAAU75B,cAEnB,KAAKL,MAAMC,QAAQi6B,GACtB,KAAM,IAAIj/B,GAAKkB,MAAM6G,qBAAqB,aAAc/H,EAAK,UAAUi/B,GAGzE,IAAIt0B,EAAMO,KAAK+zB,GAAW/4B,OAAS,EACjC,KAAM,IAAInG,OAAM,yCAIlB,OAAOk/B,GAAUp7B,KAAK6jB,MAAM7jB,KAAK+lB,SAAWqV,EAAU/4B,WAKtD64B,EAAU,SAAS73B,EAAKS,GAC1B,MAAOT,GAAMyqB,KAAkBhqB,EAAMT,IAGnC83B,EAAa,SAAS93B,EAAKS,GAC7B,MAAO9D,MAAK6jB,MAAMxgB,EAAMyqB,KAAkBhqB,EAAMT,KAI9C43B,EAAuB,SAAS5zB,EAAMhE,EAAKS,EAAKu3B,GAClD,GAAeh5B,GAAQ/B,EAAnBqI,IAGJ,IAFAtB,EAAOA,EAAKugB,MAAM,GAEdvgB,EAAKhF,OAAS,EAChB,IAAK/B,EAAI,EAAG+B,EAASgF,EAAKmkB,QAAanpB,EAAJ/B,EAAYA,IAC7CqI,EAAKb,KAAKmzB,EAAqB5zB,EAAMhE,EAAKS,EAAKu3B,QAEjD,KAAK/6B,EAAI,EAAG+B,EAASgF,EAAKmkB,QAAanpB,EAAJ/B,EAAYA,IAC7CqI,EAAKb,KAAKuzB,EAASh4B,EAAKS,GAG5B,OAAO6E,GAGT,OAAOkyB,IAEN/M,GAxKL,GAAIrwB,GAASnC,EAAoB,GAC7BwL,EAAQxL,EAAoB,KAC5BuC,EAAavC,EAAoB,IACjC4gB,EAAere,EAAWqe,aA0K1B0e,GAEFU,QAAS,WACP,MAAOt7B,MAAK+lB,QAOdwV,OAAQ,WACN,MAAO,YAKL,IAJA,GAAIC,GAAIC,EACJC,EAAS,GAGG,EAATA,GAAcA,EAAS,GAC5BF,EAAKx7B,KAAK+lB,SACV0V,EAAKz7B,KAAK+lB,SACV2V,EAAS,EAAE,EAAI17B,KAAKoP,IAAI,GAAKpP,KAAK0M,IAAI8uB,GAAK,IAAOx7B,KAAKmG,IAAI,EAAInG,KAAKC,GAAKw7B,GAAM,EAEjF,OAAOC,KAKb,OAAO5N,KAMJ,SAAS7yB,EAAQD,EAASM,GAoB/B,QAASqgC,GAAeC,GACvB,MAAOtgC,GAAoBugC,EAAsBD,IAElD,QAASC,GAAsBD,GAC9B,MAAOx6B,GAAIw6B,IAAS,WAAa,KAAM,IAAI1/B,OAAM,uBAAyB0/B,EAAM,SAtBjF,GAAIx6B,IACH06B,UAAW,IACXC,aAAc,IACdC,YAAa,IACbC,eAAgB,IAChBC,WAAY,IACZC,cAAe,IACfC,WAAY,IACZC,cAAe,IACfC,QAAS,IACTC,WAAY,IACZC,UAAW,IACXC,aAAc,IACdC,SAAU,IACVC,YAAa,IACbC,WAAY,IACZC,cAAe,IAQhBlB,GAAezL,KAAO,WACrB,MAAOj0B,QAAOi0B,KAAK9uB,IAEpBu6B,EAAemB,QAAUjB,EACzB5gC,EAAOD,QAAU2gC,GAKZ,SAAS1gC,EAAQD,GAEtB,YAWAA,GAAQ4B,KAAO,SAASmC,GACtB,GAAInC,SAAcmC,EAElB,IAAa,WAATnC,EAAmB,CACrB,GAAU,OAANmC,EAAsB,MAAO,MACjC,IAAIA,YAAa0C,SAAS,MAAO,SACjC,IAAI1C,YAAauC,QAAS,MAAO,QACjC,IAAIvC,YAAayC,QAAS,MAAO,QACjC,IAAIN,MAAMC,QAAQpC,GAAQ,MAAO,OACjC,IAAIA,YAAa2C,MAAS,MAAO,MACjC,IAAI3C,YAAa4C,QAAS,MAAO,SAGnC,MAAO/E,KAMJ,SAAS3B,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,UAEFD,YAAe,8BACfE,UACE,WACA,aAEFI,SAAY,UAMT,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,YACZE,QACE,QACA,aAEFD,YAAe,kBACfE,UACE,gBACA,UACA,SACA,qBACA,iBAEFI,SACE,cAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,aACZE,QACE,WAEFD,YACI,wHACJE,UACE,YACA,YACA,cAEFI,SAAY,QAAS,MAAO,WAMzB,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,aACZE,QACE,WAEFD,YAAe,2DACfE,UACE,UACA,MACA,aAEFI,SACE,WACA,SACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,SACRgQ,SAAY,YACZE,QACE,QACA,gBAEFD,YAAe,qBACfE,UACE,YACA,QACA,UACA,YACA,cACA,eAEFI,SACE,cAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,YACRgQ,SAAY,YACZE,QACE,SACA,mBAEFD,YAAe,kCACfE,UACE,yBACA,yBACA,UAEFI,SACE,WACA,cACA,YAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,cACRgQ,SAAY,YACZE,QACE,SACA,qBAEFD,YAAe,oCACfE,UACE,yBACA,yBACA,UAEFI,SACE,WACA,SACA,eAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,SACRgQ,SAAY,YACZE,QACE,SACA,gBAEFD,YACI,+CACJE,UACE,yBACA,UAEFI,SACE,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,UAEFD,YAAe,qCACfE,UACE,WACA,UACA,gBACA,UACA,uDAEFI,SACE,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,UAEFD,YACI,sGACJE,UACE,WACA,WACA,YACA,aAEFI,SAAY,OAAQ,QAAS,WAM1B,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,QACRgQ,SAAY,aACZE,QACE,YAEFD,YACI,yHACJE,UACE,aACA,aACA,eAEFI,SAAY,OAAQ,MAAO,WAMxB,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,YACA,qBAEFD,YAAe,uCACfE,UACE,aACA,aACA,oBAEFI,SAAa,MAAO,UAMjB,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,aAEFD,YAAe,qCACfE,UACE,YACA,aACA,iBAEFI,SAAa,SAMV,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,SACA,gBAEFD,YAAe,8NACfE,UACE,WACA,eACA,SACA,SACA,iBACA,uBACA,mBACA,SAEFI,SACE,MACA,WAMC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,QACRgQ,SAAY,aACZE,QACE,YAEFD,YAAe,4CACfE,UACE,iBACA,eACA,SACA,uBACA,kBAEFI,SACE,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,YACZE,QACE,QACA,UACA,aAEFD,YACI,gEACJE,UACE,QACA,SACA,WACA,4BACA,WACA,YAEFI,SAAY,YAMT,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,WACRgQ,SAAY,YACZE,QACE,QACA,kBAEFD,YAAe,uBACfE,UACE,gBACA,UACA,YACA,cACA,cAEFI,SACE,YAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,aACZE,QACE,UACA,cAEFD,YAAe,oDACfE,UACE,YACA,aACA,gBACA,6BACA,8BACA,kBACA,4BACA,gCACA,mCAOC,SAAS/f,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,YACZE,QACE,QACA,aAEFD,YACI,uCACJE,UACE,UACA,QACA,oBAEFI,SAAa,cAMV,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,QACRgQ,SAAY,aACZE,QACE,WACA,eAEFD,YACI,4LACJE,UACE,aACA,aACA,cACA,cACA,eACA,uBAEFI,SAAY,OAAQ,QAAS,SAM1B,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,aACZE,QACE,WAEFD,YACI,iGACJE,UACE,YACA,aACA,WAEFI,SACE,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,aACZE,QACE,WAEFD,YACI,+EACJE,UACE,WACA,QACA,YAEFI,SACE,SACA,cAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,SACRgQ,SAAY,aACZE,QACE,aAEFD,YACI,2DACJE,UACE,YACA,UACA,MACA,SAEFI,SACE,WACA,MACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,WACRgQ,SAAY,YACZE,QACE,QACA,kBAEFD,YAAe,uBACfE,UACE,cACA,QACA,YACA,YACA,iBAEFI,SACE,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,aACRgQ,SAAY,YACZE,QACE,KACA,iBAEFD,YACI,yEACJE,UACE,OACA,UACA,SAEFI,SACE,MAAO,WAAY,eAOlB,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,YACRgQ,SAAY,YACZE,QACE,KACA,gBAEFD,YACI,4CACJE,UACE,QACA,QAEFI,SACE,MAAO,WAAY,gBAOlB,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,aACZE,QACE,cAEFD,YAAe,gEACfE,UACE,cACA,aACA,sBAEFI,SAAa,MAAO,SAMjB,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,UACRgQ,SAAY,aACZE,QACE,iBAEFD,YACI,8GACJE,UACE,gBACA,gBACA,gBACA,qBACA,yBAEFI,SACE,QAAS,UAAW,UAAW,YAAa,cAO3C,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,YACRgQ,SAAY,aACZE,QACE,mBAEFD,YACI,+IACJE,UACE,qBACA,oBAEFI,SACE,QAAS,UAAW,UAAW,SAAU,YAAa,WAAY,aAOjE,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,QACRgQ,SAAY,aACZE,QACE,SACA,eAEFD,YACI,wFACJE,UACE,WACA,WACA,UACA,YACA,SACA,gBAEFI,SACE,UAAW,UAAW,SAAU,YAAa,WAAY,UAAW,eAOnE,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,SACRgQ,SAAY,aACZE,QACE,QACA,gBAEFD,YACI,2FACJE,UACE,QACA,UACA,UACA,YACA,UACA,UACA,iBAEFI,SACE,QAAS,UAAW,UAAW,YAAa,WAAY,aAOvD,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,WACRgQ,SAAY,aACZE,QACE,SACA,kBAEFD,YACI,yGACJE,UACE,UACA,WACA,UACA,YACA,WAEFI,SACE,QAAS,UAAW,YAAa,UAAW,WAAY,aAOvD,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,UACRgQ,SAAY,aACZE,QACE,QACA,iBAEFD,YACI,mGACJE,UACE,QACA,UACA,UACA,YACA,UACA,iBAEFI,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,aAOtD,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,YACRgQ,SAAY,aACZE,QACE,SACA,mBAEFD,YACI,0GACJE,UACE,UACA,WACA,UACA,YACA,WAEFI,SACE,QAAS,UAAW,SAAU,UAAW,WAAY,aAOpD,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,UACRgQ,SAAY,aACZE,QACE,SACA,iBAEFD,YACI,uGACJE,UACE,WACA,WACA,UACA,YACA,SACA,eACA,kBAEFI,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,UAAW,eAOjE,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,UACZE,QACE,UAEFD,YACI,iGACJE,UACE,cACA,cACA,eAEFI,SACE,KACA,KACA,OACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,UACZE,QACE,WAEFD,YACI,gGACJE,UACE,eACA,eACA,eAEFI,SACE,KACA,KACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,KACRgQ,SAAY,UACZE,QACE,SAEFD,YAAe,yCACfE,UACE,aACA,aACA,YACA,WAEFI,SACE,KACA,OACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,KACRgQ,SAAY,UACZE,QACE,SAEFD,YAAe,8CACfE,UACE,aACA,aACA,YACA,WAEFI,SACE,KACA,OACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,YACRgQ,SAAY,OACZE,QACE,gBAEFD,YACI,+CACJE,UACE,YACA,kCACA,mBACA,uBACA,8BAEFI,SACE,UAAW,UAAW,QAAS,SAAU,SAAU,UAOlD,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,UACRgQ,SAAY,OACZE,QACE,IACA,cAEFD,YACI,6CACJE,UACE,aACA,aACA,aACA,kBACA,mBACA,yBAEFI,SACE,YAAa,UAAW,QAAS,SAAU,SAAU,S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ACE,sBAEFD,YAAe,kEACfE,UACE,sBAEFI,SAAY,eAAgB,eAMzB,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,YACRgQ,SAAY,cACZE,QACE,KACA,gBAEFD,YAAe,mCACfE,UACE,KACA,YACA,MAEFI,SAAY,eAAgB,kBAMzB,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,eACRgQ,SAAY,cACZE,QACE,kBACA,sBAEFD,YAAe,kEACfE,UACE,kBACA,sBAEFI,SAAY,eAAgB,eAMzB,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,aACRgQ,SAAY,cACZE,QACE,qBAEFD,YACI,0CACJE,UACE,mBACA,4BAEFI,SAAY,eAAgB,SAAU,eAMnC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,SACRgQ,SAAY,cACZE,QACE,WACA,cACA,mBACA,eACA,oBACA,0BAEFD,YACI,0BACJE,UACE,WACA,iBACA,kBAEFI,SAAY,eAAgB,aAAc,eAMvC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,UACRgQ,SAAY,cACZE,QACE,YACA,eACA,oBACA,gBACA,qBACA,2BAEFD,YACI,iCACJE,UACE,YACA,kBACA,uBAEFI,SAAY,eAAgB,aAAc,YAKvC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,uBACA,uBACA,gCACA,iCAEFI,SACE,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,aACZE,QACE,qBACA,UACA,gBAEFD,YAAe,mDACfE,UACE,mBACA,qBACA,wBACA,wBACA,8BAEFI,SACE,MACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,SACRgQ,SAAY,aACZE,QACE,uBACA,aAEFD,YAAe,mLACfE,UACE,kBACA,yBAEFI,SACE,MACA,OACA,MACA,OACA,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,uBACA,uBACA,gCACA,iCAEFI,SACE,MACA,OACA,SACA,OACA,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,aACZE,QACE,qBACA,WAEFD,YAAe,qCACfE,UACE,gBACA,kBACA,sBAEFI,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,4KACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,oBACA,UAEFD,YAAe,iCACfE,UACE,kBACA,oBACA,qBAEFI,SACE,MACA,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,gIACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,eACZE,QACE,WAEFD,YAAe,oDACfE,UACE,YACA,kBAEFI,SACE,MACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,eACZE,QACE,WAEFD,YAAe,kDACfE,UACE,YACA,kBAEFI,SACE,MACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,eACZE,QACE,WAEFD,YAAe,qDACfE,UACE,YACA,kBAEFI,SACE,MACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,QACRgQ,SAAY,eACZE,QACE,eAEFD,YACI,qEACJE,UACE,mBACA,wBACA,iBACA,iBACA,eAEFI,SACE,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,eACZE,QACE,UAEFD,YAAe,sCACfE,UACE,SACA,kBACA,eACA,cACA,2BAEFI,SACE,OACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,eACZE,QACE,WAEFD,YAAe,iDACfE,UACE,aAEFI,SACE,OACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,eACZE,QACE,UAEFD,YAAe,6DACfE,UACE,SACA,cAEFI,SACE,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,eACZE,QACE,WAEFD,YAAe,oDACfE,UACE,UACA,eAEFI,SACE,OACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,eACZE,QACE,UAEFD,YAAe,4DACfE,UACE,SACA,cAEFI,SACE,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,eACZE,QACE,WAEFD,YAAe,wEACfE,UACE,UACA,eAEFI,SACE,OACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,eACZE,QACE,UAEFD,YAAe,0DACfE,UACE,SACA,cAEFI,SACE,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,eACZE,QACE,WAEFD,YAAe,sEACfE,UACE,UACA,eAEFI,SACE,OACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,eACZE,QACE,UAEFD,YAAe,oCACfE,UACE,SACA,kBACA,cACA,cACA,2BAEFI,SACE,OACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,eACZE,QACE,WAEFD,YAAe,+CACfE,UACE,aAEFI,SACE,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,eACZE,QACE,UAEFD,YAAe,uCACfE,UACE,WACA,sB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"} \ No newline at end of file +{"version":3,"file":"math.map","sources":["./dist/math.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","create","config","Object","Error","math","_config","matrix","number","precision","epsilon","options","object","deepExtend","type","BigNumber","defaultType","decimals","clone","constructor","prototype","convert","digits","error","Complex","Range","Index","Matrix","Unit","Help","ResultSet","collection","expression","node","parse","Parser","docs","ifElse","chaining","Selector","window","mathjs","bigE","exp","bigPhi","plus","sqrt","div","arctan","x","y","yPrev","NaN","x2","times","num","sign","k","equals","minus","bigPi","Big","pi4th","bigTau","pi","big","Math","PI","tau","e","E","phi","i","Infinity","UNINITIALIZED","LN2","ln","LN10","LOG2E","LOG10E","SQRT1_2","SQRT2","version","undefined","Array","isArray","map","value","Number","valueOf","String","Boolean","Date","RegExp","TypeError","key","hasOwnProperty","extend","a","b","prop","deepEqual","len","length","isNumber","isInteger","round","format","isNaN","notation","toFixed","toExponential","lower","upper","exponential","str","abs","valueStr","toPrecision","min","parseFloat","replace","arguments","DBL_EPSILON","EPSILON","nearlyEqual","isFinite","diff","max","ArgumentsError","DimensionError","IndexError","UnsupportedTypeError","re","im","SyntaxError","arg","construct","fromPolar","r","skipWhitespace","next","isDigitDot","isDigit","index","text","charAt","revert","oldIndex","parseNumber","parseComplex","cnext","util","isUnit","isString","string","isComplex","first","separator","second","substring","hasBase","BASE_UNITS","ANGLE","toNumber","cos","sin","toPolar","atan2","other","strRe","strIm","toString","start","end","step","array","args","split","nums","invalid","some","isRange","size","ceil","forEach","callback","obj","toArray","_ranges","_isScalar","ii","push","_createRange","primitive","isIndex","ranges","apply","range","values","dim","isScalar","row","strings","join","data","_data","preprocess","types","_size","_get","get","validateIndex","_getSubmatrix","dims","last","child","_set","submatrix","defaultValue","sSize","iSize","set","outer","unsqueeze","_fit","_setSubmatrix","dataIndex","subIndex","newSize","changed","resize","elem","isMatrix","subset","replacement","index_i","me","recurse","name","res","_findUnit","unit","prefix","UNIT_NONE","PREFIX_NONE","_normalize","fixPrefix","parseUnit","unitName","UNITS","endsWith","prefixLen","prefixName","prefixes","err","offset","_unnormalize","prefixValue","isValuelessUnit","base","equalBase","to","valuelessUnit","bestPrefix","_bestPrefix","absValue","bestDiff","log","scientific","PREFIXES","NONE","SHORT","da","h","M","G","T","P","Z","Y","d","u","n","f","z","LONG","deca","hecto","kilo","mega","giga","tera","peta","exa","zetta","yotta","deci","centi","milli","micro","nano","pico","femto","atto","zepto","yocto","SQUARED","CUBIC","BINARY_SHORT","pow","Ki","Mi","Gi","Ti","Pi","Ei","Zi","Yi","BINARY_LONG","kibi","mebi","gibi","tebi","pebi","exi","zebi","yobi","LENGTH","MASS","TIME","CURRENT","TEMPERATURE","LUMINOUS_INTENSITY","AMOUNT_OF_SUBSTANCE","FORCE","SURFACE","VOLUME","BIT","BASE_UNIT_NONE","meter","inch","foot","yard","mile","link","rod","chain","angstrom","in","ft","yd","mi","li","rd","ch","mil","m2","sqin","sqft","sqyd","sqmi","sqrd","sqch","sqmil","m3","L","l","litre","cuin","cuft","cuyd","teaspoon","tablespoon","drop","gtt","minim","fluiddram","fluidounce","gill","cc","cup","pint","quart","gallon","beerbarrel","oilbarrel","hogshead","fldr","floz","gi","cp","pt","qt","gal","bbl","obl","g","gram","ton","tonne","grain","dram","ounce","poundmass","hundredweight","stick","gr","dr","oz","lbm","cwt","s","sec","minute","hour","day","rad","deg","grad","cycle","A","ampere","K","degC","degF","degR","kelvin","celsius","fahrenheit","rankine","mol","mole","cd","candela","N","newton","lbf","poundforce","bits","B","bytes","PLURALS","meters","inches","feet","yards","miles","links","rods","chains","angstroms","litres","teaspoons","tablespoons","minims","fluiddrams","fluidounces","gills","cups","pints","quarts","gallons","beerbarrels","oilbarrels","hogsheads","gtts","grams","tons","tonnes","grains","drams","ounces","poundmasses","hundredweights","sticks","seconds","minutes","hours","days","radians","degrees","gradients","cycles","amperes","moles","plural","lt","liter","liters","lb","lbs","doc","isHelp","desc","category","description","syntax","examples","parser","expr","eval","seealso","toJSON","entries","_reduce","mat","ret","val","tran","_switch","j","I","J","tmp","argsToArray","isCollection","deepMap","deepMap2","array1","array2","reduce","deepForEach","extra_nodes","nodes","parseStart","nesting_level","conditional_level","nextPreview","getToken","token_type","TOKENTYPE","NULL","token","DELIMITER","c2","DELIMITERS","isAlpha","NAMED_DELIMITERS","SYMBOL","UNKNOWN","createSyntaxError","NUMBER","getTokenSkipNewline","openParams","closeParams","parseBlock","createError","block","visible","ConstantNode","parseFunctionAssignment","BlockNode","add","parseAssignment","valid","parseConditional","SymbolNode","AssignmentNode","IndexNode","UpdateNode","FunctionNode","symbol","params","param","FunctionAssignmentNode","parseRelational","prev","condition","trueExpr","falseExpr","ConditionalNode","operators","fn","parseConversion","==","!=","<",">","<=",">=","OperatorNode","parseRange","parseAddSubtract","RangeNode","parseMultiplyDivide","+","-","parseUnary","*",".*","/","./","%","mod","parsePow","parseLeftHandOperators","parseCustomNodes","!","'","handler","parseSymbol","parseFunctions","parseIndex","parseString","tPrev","parseMatrix","rows","cols","parseRow","ArrayNode","parseParentheses","parseEnd","col","message",",","(",")","[","]","\"",";","^",".^","=",":","?","scope","_parse","compile","remove","clear","Node","cube","divide","dotDivide","dotMultiply","dotPow","fix","floor","gcd","lcm","log10","multiply","norm","square","subtract","unaryMinus","unaryPlus","xgcd","compare","larger","largerEq","smaller","smallerEq","unequal","conj","bignumber","complex","help","det","diag","eye","flatten","inv","ones","squeeze","transpose","zeros","combinations","factorial","permutations","pickRandom","random","randomInt","mean","median","prod","std","sum","acos","asin","atan","cosh","cot","coth","csc","csch","sech","sinh","tan","tanh","filter","sort","errorTransform","transform","concat","lastIndex","isBoolean","_filter","test","_scope","find","sub","eq","rawArgs","arrayIn","jj","asMatrix","createProxy","slice","done","search","_divideComplex","den","edivide","emultiply","epow","isNegative","_bigGcd","isInt","zero","isZero","neg","_bigLcm","t","_mod","_multiplyMatrixMatrix","result","_multiplyVectorMatrix","_multiplyMatrixVector","_multiplyVectorVector","dot","_multiplyComplex","sizeX","sizeY","RangeError","POSITIVE_INFINITY","v","NEGATIVE_INFINITY","equal","rs","powComplex","temp1","temp2","px","roundNumber","toDecimalPlaces","cmp","unary","_xgcd","q","lastx","lasty","_bigXgcd","_deepEqual","gt","gte","largereq","lte","smallereq","bool","lcase","toLowerCase","select","_concat","concatDim","prevDim","matrices","shift","_det","compute_mu","mu","fa","vector","iMax","asArray","kSuper","kSub","asBigNumber","one","minimum","flat","_inv","temp","Ac","Bc","Ar","Br","_range","_rangeInc","_bigRange","_bigRangeInc","includeEnd","pop","_resizeString","defaultChar","_getSubset","_getSubstring","strLen","substr","_setSubset","_setSubstring","chars","transposedRow","transposed","isPositiveInteger","distribution","arity","dividedBy","_getSmaller","_min","_getLarger","_max","_nmean","_mean","_median","left","right","middle","_prod","variance","_sum","_var","normalization","DEFAULT_NORMALIZATION","temp3","temp4","ep","en","cim","sim","entry","_import","override","wrap","isSupportedType","math_import","opts","_module","_mapArray","print","template","original","keys","_compare","_forEachArray","isBigNumber","toExpNeg","toExpPos","toSignificantDigits","_validate","dimNext","_resize","oldLen","newLen","minLen","_squeeze","_unsqueeze","validate","_defaultValue","unshift","__WEBPACK_AMD_DEFINE_RESULT__","global","coefficientToString","LOGBASE","checkRoundingDigits","rm","repeating","ci","mathpow","checkRM","method","Decimal","outOfRange","parseInt","ifExceptionsThrow","checkArg","MAX_DIGITS","pr","denom","guard","sd","rep","external","rnd","getCoeffLength","more","intPow","c0","x1","xc","xci","mathfloor","BASE","convertBase","DecimalConstructor","crypto","NUMERALS","EXP_LIMIT","INT_POW_LIMIT","yc","base10","inf","sd10","xLTy","reverse","half","indexOf","dp","pos","sep1","sep2","arr","maxD","d0","d2","frac","n0","n1","d1","yN","strL","xe","toBaseOut","baseIn","baseOut","arrL","multiplyInteger","carry","aL","bL","logbase","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","maxOrMin","ltgt","rand","Uint32Array","copy","DecimalFactory","parseDecimal","isValid","trim","isNum","orig","count","stack","actual","expected","relation","splice","every","isNode","_compile","defs","results","match","toTex","childNode","keywords","latex","brace","addBraces","toSymbol","js","testCondition","valueType","SUPPORTED_TYPES","boolean","null","variable","compileSubset","properties","someUseEnd","rangesUseEnd","useEnd","objectName","op","lhs","rhs","mop","toOperator","lp","rp","lhb","rhb","lop","rop","toUnit","isRaw","paramsName","toParams","undef","_validateScope","_transform","transformed","code","defsCode","factoryCode","Function","formatArray","distributions","randFunctions","arg1","arg2","arg3","_randomDataForMatrix","_random","_randomInt","possibles","randFunc","uniform","normal","u1","u2","picked","webpackContext","req","webpackContextResolve","./clone","./clone.js","./filter","./filter.js","./forEach","./forEach.js","./format","./format.js","./import","./import.js","./map","./map.js","./print","./print.js","./sort","./sort.js","./typeof","./typeof.js","resolve","mapSymbols","symbols","latexIs","latexIsFn","latexToFn","greek","Alpha","alpha","Beta","beta","Gamma","gamma","Delta","delta","Epsilon","varepsilon","Zeta","zeta","Eta","eta","Theta","theta","vartheta","Iota","iota","Kappa","kappa","varkappa","Lambda","lambda","Mu","Nu","nu","Xi","Omicron","omicron","varpi","Rho","rho","varrho","Sigma","sigma","varsigma","Tau","Upsilon","upsilon","Phi","varphi","Chi","chi","Psi","psi","Omega","omega","dots","ldots","cdots","vdots","ddots","idots","logic","true","false","Inf","infinity","oo","lim","functions","arccos","ker","limsup","arcsin","lg","Pr","sup","hom","var","curlyFunctions","int","Int","integrate","eigenvalues","liminf","units","isSymbol","isFunction","toFunction","isCurlyFunction","toCurlyFunction","isOperator","_toUnit","notSpaced","braces","that","func","texParams","showFunc","suffix"],"mappings":"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AoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAI9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EA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ACfE,UACE,YACA,aACA,gBACA,6BACA,8BACA,kBACA,4BACA,gCACA,mCAOC,SAAS/f,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,YACZE,QACE,QACA,aAEFD,YACI,uCACJE,UACE,UACA,QACA,oBAEFI,SAAa,cAMV,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,QACRgQ,SAAY,aACZE,QACE,WACA,eAEFD,YACI,4LACJE,UACE,aACA,aACA,cACA,cACA,eACA,uBAEFI,SAAY,OAAQ,QAAS,SAM1B,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,aACZE,QACE,WAEFD,YACI,iGACJE,UACE,YACA,aACA,WAEFI,SACE,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,aACZE,QACE,WAEFD,YACI,+EACJE,UACE,WACA,QACA,YAEFI,SACE,SACA,cAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,SACRgQ,SAAY,aACZE,QACE,aAEFD,YACI,2DACJE,UACE,YACA,UACA,MACA,SAEFI,SACE,WACA,MACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,WACRgQ,SAAY,YACZE,QACE,QACA,kBAEFD,YAAe,uBACfE,UACE,cACA,QACA,YACA,YACA,iBAEFI,SACE,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,aACRgQ,SAAY,YACZE,QACE,KACA,iBAEFD,YACI,yEACJE,UACE,OACA,UACA,SAEFI,SACE,MAAO,WAAY,eAOlB,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,YACRgQ,SAAY,YACZE,QACE,KACA,gBAEFD,YACI,4CACJE,UACE,QACA,QAEFI,SACE,MAAO,WAAY,gBAOlB,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,aACZE,QACE,cAEFD,YAAe,gEACfE,UACE,cACA,aACA,sBAEFI,SAAa,MAAO,SAMjB,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,UACRgQ,SAAY,aACZE,QACE,iBAEFD,YACI,8GACJE,UACE,gBACA,gBACA,gBACA,qBACA,yBAEFI,SACE,QAAS,UAAW,UAAW,YAAa,cAO3C,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,YACRgQ,SAAY,aACZE,QACE,mBAEFD,YACI,+IACJE,UACE,qBACA,oBAEFI,SACE,QAAS,UAAW,UAAW,SAAU,YAAa,WAAY,aAOjE,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,QACRgQ,SAAY,aACZE,QACE,SACA,eAEFD,YACI,wFACJE,UACE,WACA,WACA,UACA,YACA,SACA,gBAEFI,SACE,UAAW,UAAW,SAAU,YAAa,WAAY,UAAW,eAOnE,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,SACRgQ,SAAY,aACZE,QACE,QACA,gBAEFD,YACI,2FACJE,UACE,QACA,UACA,UACA,YACA,UACA,UACA,iBAEFI,SACE,QAAS,UAAW,UAAW,YAAa,WAAY,aAOvD,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,WACRgQ,SAAY,aACZE,QACE,SACA,kBAEFD,YACI,yGACJE,UACE,UACA,WACA,UACA,YACA,WAEFI,SACE,QAAS,UAAW,YAAa,UAAW,WAAY,aAOvD,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,UACRgQ,SAAY,aACZE,QACE,QACA,iBAEFD,YACI,mGACJE,UACE,QACA,UACA,UACA,YACA,UACA,iBAEFI,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,aAOtD,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,YACRgQ,SAAY,aACZE,QACE,SACA,mBAEFD,YACI,0GACJE,UACE,UACA,WACA,UACA,YACA,WAEFI,SACE,QAAS,UAAW,SAAU,UAAW,WAAY,aAOpD,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,UACRgQ,SAAY,aACZE,QACE,SACA,iBAEFD,YACI,uGACJE,UACE,WACA,WACA,UACA,YACA,SACA,eACA,kBAEFI,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,UAAW,eAOjE,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,UACZE,QACE,UAEFD,YACI,iGACJE,UACE,cACA,cACA,eAEFI,SACE,KACA,KACA,OACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,UACZE,QACE,WAEFD,YACI,gGACJE,UACE,eACA,eACA,eAEFI,SACE,KACA,KACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,KACRgQ,SAAY,UACZE,QACE,SAEFD,YAAe,yCACfE,UACE,aACA,aACA,YACA,WAEFI,SACE,KACA,OACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,KACRgQ,SAAY,UACZE,QACE,SAEFD,YAAe,8CACfE,UACE,aACA,aACA,YACA,WAEFI,SACE,KACA,OACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,YACRgQ,SAAY,OACZE,QACE,gBAEFD,YACI,+CACJE,UACE,YACA,kCACA,mBACA,uBACA,8BAEFI,SACE,UAAW,UAAW,QAAS,SAAU,SAAU,UAOlD,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,UACRgQ,SAAY,OACZE,QACE,IACA,cAEFD,YACI,6CACJE,UACE,aACA,aACA,aACA,kBACA,mBACA,yBAEFI,SACE,YAAa,UAAW,QAAS,SAAU,SAAU,SAAU,UAO9D,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,UACRgQ,SAAY,OACZE,QACE,YACA,kBACA,mBAEFD,YACI,2BACJE,UACE,YACA,gBACA,qBAEFI,SACE,YAAa,UAAW,QAAS,SAAU,SAAU,SAAU,UAO9D,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,QACRgQ,SAAY,OACZE,QACE,UACA,cACA,mBACA,yBACA,kCACA,+CAEFD,YACI,yDACJE,UACE,KACA,YACA,yBACA,UACA,eACA,4BAEFI,SACE,YAAa,UAAW,UAAW,UAAW,SAAU,QAAS,SAAU,UAO1E,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,SACRgQ,SAAY,OACZE,QACE,KACA,6BACA,WACA,iBAEFD,YACI,mBACJE,UACE,KACA,YACA,qBACA,WACA,kBAEFI,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU;EAO/D,SAASn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A,iBACA,kBAEFI,SAAY,eAAgB,aAAc,eAMvC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,UACRgQ,SAAY,cACZE,QACE,YACA,eACA,oBACA,gBACA,qBACA,2BAEFD,YACI,iCACJE,UACE,YACA,kBACA,uBAEFI,SAAY,eAAgB,aAAc,YAKvC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,uBACA,uBACA,gCACA,iCAEFI,SACE,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,aACZE,QACE,qBACA,UACA,gBAEFD,YAAe,mDACfE,UACE,mBACA,qBACA,wBACA,wBACA,8BAEFI,SACE,MACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,SACRgQ,SAAY,aACZE,QACE,uBACA,aAEFD,YAAe,mLACfE,UACE,kBACA,yBAEFI,SACE,MACA,OACA,MACA,OACA,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,uBACA,uBACA,gCACA,iCAEFI,SACE,MACA,OACA,SACA,OACA,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,aACZE,QACE,qBACA,WAEFD,YAAe,qCACfE,UACE,gBACA,kBACA,sBAEFI,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,4KACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,oBACA,UAEFD,YAAe,iCACfE,UACE,kBACA,oBACA,qBAEFI,SACE,MACA,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,gIACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,eACZE,QACE,WAEFD,YAAe,oDACfE,UACE,YACA,kBAEFI,SACE,MACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,eACZE,QACE,WAEFD,YAAe,kDACfE,UACE,YACA,kBAEFI,SACE,MACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,eACZE,QACE,WAEFD,YAAe,qDACfE,UACE,YACA,kBAEFI,SACE,MACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,QACRgQ,SAAY,eACZE,QACE,eAEFD,YACI,qEACJE,UACE,mBACA,wBACA,iBACA,iBACA,eAEFI,SACE,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,eACZE,QACE,UAEFD,YAAe,sCACfE,UACE,SACA,kBACA,eACA,cACA,2BAEFI,SACE,OACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,eACZE,QACE,WAEFD,YAAe,iDACfE,UACE,aAEFI,SACE,OACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,eACZE,QACE,UAEFD,YAAe,6DACfE,UACE,SACA,cAEFI,SACE,MACA,MACA,SAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,OACRgQ,SAAY,eACZE,QACE,WAEFD,YAAe,oDACfE,UACE,UACA,eAEFI,SACE,OACA,OACA,UAOC,SAASngB,GAEdA,EAAOD,SACL6P,KAAQ,MACRgQ,SAAY,eACZE,QACE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"} \ No newline at end of file diff --git a/dist/math.min.js b/dist/math.min.js index 090bad8de..c454096a2 100644 --- a/dist/math.min.js +++ b/dist/math.min.js @@ -6,8 +6,8 @@ * It features real and complex numbers, units, matrices, a large set of * mathematical functions, and a flexible expression parser. * - * @version 0.27.1-SNAPSHOT - * @date 2014-08-28 + * @version 1.0.0-SNAPSHOT + * @date 2014-09-04 * * @license * Copyright (C) 2013-2014 Jos de Jong @@ -24,11 +24,11 @@ * License for the specific language governing permissions and limitations under * the License. */ -!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):"object"==typeof exports?exports.math=r():e.math=r()}(this,function(){return function(e){function r(t){if(n[t])return n[t].exports;var i=n[t]={exports:{},id:t,loaded:!1};return e[t].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}var n={};return r.m=e,r.c=n,r.p="",r(0)}([function(e,r,n){e.exports=n(1)},function(e,r,n){"use strict";function t(e){if("function"!=typeof Object.create)throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var r={},a={matrix:"matrix",number:"number",precision:64,epsilon:1e-14};r.config=function(e){if(e){if(i.deepExtend(a,e),e.precision&&r.type.BigNumber.config({precision:e.precision}),n(2)(r,a),e.number&&e.number.defaultType)throw new Error("setting `number.defaultType` is deprecated. Use `number` instead.");if(e.number&&e.number.precision)throw new Error("setting `number.precision` is deprecated. Use `precision` instead.");if(e.matrix&&e.matrix.defaultType)throw new Error("setting `matrix.defaultType` is deprecated. Use `matrix` instead.");if(e.matrix&&e.matrix["default"])throw new Error("setting `matrix.default` is deprecated. Use `matrix` instead.");if(e.decimals)throw new Error("setting `decimals` is deprecated. Use `precision` instead.")}return i.clone(a)},r.create=t;var s=n(141).constructor();if("function"!=typeof s.prototype.clone&&(s.prototype.clone=function(){return new s(this)}),"function"==typeof s.convert)throw new Error("Cannot add function convert to BigNumber: function already exists");return s.convert=function(e){return o(e)>15?e:new s(e)},r.error=n(5),r.type={},r.type.Complex=n(6),r.type.Range=n(7),r.type.Index=n(8),r.type.Matrix=n(9),r.type.Unit=n(10),r.type.Help=n(11),r.type.ResultSet=n(12),r.type.BigNumber=s,r.collection=n(13),r.expression={},r.expression.node=n(16),r.expression.parse=n(14),r.expression.Parser=n(15),r.expression.docs=n(17),n(28)(r,a),n(29)(r,a),n(30)(r,a),n(31)(r,a),n(32)(r,a),n(33)(r,a),n(34)(r,a),n(35)(r,a),n(36)(r,a),n(37)(r,a),n(38)(r,a),n(39)(r,a),n(40)(r,a),n(41)(r,a),n(42)(r,a),n(43)(r,a),n(44)(r,a),n(45)(r,a),n(46)(r,a),n(47)(r,a),n(48)(r,a),n(49)(r,a),n(50)(r,a),n(51)(r,a),n(52)(r,a),n(53)(r,a),n(54)(r,a),n(55)(r,a),n(56)(r,a),n(57)(r,a),n(58)(r,a),n(59)(r,a),n(60)(r,a),n(61)(r,a),n(62)(r,a),n(63)(r,a),n(64)(r,a),n(65)(r,a),n(66)(r,a),n(67)(r,a),n(68)(r,a),n(69)(r,a),n(70)(r,a),n(71)(r,a),n(72)(r,a),n(73)(r,a),n(74)(r,a),n(75)(r,a),n(76)(r,a),n(77)(r,a),n(78)(r,a),n(79)(r,a),n(80)(r,a),n(81)(r,a),n(82)(r,a),n(83)(r,a),n(84)(r,a),n(85)(r,a),n(86)(r,a),n(87)(r,a),n(88)(r,a),n(89)(r,a),n(90)(r,a),n(91)(r,a),n(92)(r,a),n(93)(r,a),n(94)(r,a),n(95)(r,a),n(96)(r,a),n(97)(r,a),n(98)(r,a),n(99)(r,a),n(100)(r,a),n(101)(r,a),n(102)(r,a),n(103)(r,a),n(104)(r,a),n(105)(r,a),n(106)(r,a),n(107)(r,a),n(108)(r,a),n(109)(r,a),n(110)(r,a),n(111)(r,a),n(112)(r,a),n(113)(r,a),n(114)(r,a),n(115)(r,a),n(116)(r,a),n(117)(r,a),n(118)(r,a),n(119)(r,a),n(120)(r,a),n(121)(r,a),n(122)(r,a),n(123)(r,a),n(124)(r,a),n(125)(r,a),n(126)(r,a),n(127)(r,a),n(128)(r,a),n(129)(r,a),n(130)(r,a),n(131)(r,a),n(132)(r,a),n(133)(r,a),r.ifElse=function(){throw new Error("Function ifElse is deprecated. Use the conditional operator instead.")},n(2)(r,a),n(18)(r,a),n(19)(r,a),n(20)(r,a),n(21)(r,a),n(22)(r,a),n(23)(r,a),n(24)(r,a),n(25)(r,a),n(26)(r,a),r.chaining={},r.chaining.Selector=n(27)(r,a),r.config(a),r.config(e),r}var i=n(3),o=n(4).digits,a=t();"undefined"!=typeof window&&(window.mathjs=a),e.exports=a},function(e,r,n){"use strict";e.exports=function(e,r){function t(){return new f(1).exp()}function i(){return new f(1).plus(new f(5).sqrt()).div(2)}function o(e){for(var r=e,n=0/0,t=e.times(e),i=e,o=-1,a=3;!r.equals(n);a+=2)i=i.times(t),n=r,r=o>0?r.plus(i.div(a)):r.minus(i.div(a)),o=-o;return r}function a(){var e=f.constructor({precision:f.precision+4}),r=new e(4).times(o(new e(1).div(5))).minus(o(new e(1).div(239)));return new f(4).times(r)}function s(){f.config({precision:r.precision+2});var e=a();return f.config({precision:r.precision}),new f(2).times(e)}var u=(n(134),n(6)),f=e.type.BigNumber,c="bignumber"===r.number;e.pi=c?a():Math.PI,e.tau=c?s():2*Math.PI,e.e=c?t():Math.E,e.phi=c?i():1.618033988749895,e.i=new u(0,1),e.Infinity=1/0,e.NaN=0/0,e["true"]=!0,e["false"]=!1,e["null"]=null,e.uninitialized=n(135).UNINITIALIZED,e.E=e.e,e.LN2=c?new f(2).ln():Math.LN2,e.LN10=c?new f(10).ln():Math.LN10,e.LOG2E=c?new f(1).div(new f(2).ln()):Math.LOG2E,e.LOG10E=c?new f(1).div(new f(10).ln()):Math.LOG10E,e.PI=e.pi,e.SQRT1_2=c?new f(.5).sqrt():Math.SQRT1_2,e.SQRT2=c?new f(2).sqrt():Math.SQRT2,e.version=n(136)}},function(e,r){"use strict";r.clone=function n(e){var r=typeof e;if("number"===r||"string"===r||"boolean"===r||null===e||void 0===e)return e;if("function"==typeof e.clone)return e.clone();if(Array.isArray(e))return e.map(function(e){return n(e)});if(e instanceof Number)return new Number(e.valueOf());if(e instanceof String)return new String(e.valueOf());if(e instanceof Boolean)return new Boolean(e.valueOf());if(e instanceof Date)return new Date(e.valueOf());if(e instanceof RegExp)throw new TypeError("Cannot clone "+e);var t={};for(var i in e)e.hasOwnProperty(i)&&(t[i]=n(e[i]));return t},r.extend=function(e,r){for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n]);return e},r.deepExtend=function t(e,r){if(Array.isArray(r))throw new TypeError("Arrays are not supported by deepExtend");for(var n in r)if(r.hasOwnProperty(n))if(r[n]&&r[n].constructor===Object)void 0===e[n]&&(e[n]={}),e[n].constructor===Object?t(e[n],r[n]):e[n]=r[n];else{if(Array.isArray(r[n]))throw new TypeError("Arrays are not supported by deepExtend");e[n]=r[n]}return e},r.deepEqual=function(e,n){var t,i,o;if(Array.isArray(e)){if(!Array.isArray(n))return!1;if(e.length!=n.length)return!1;for(i=0,o=e.length;o>i;i++)if(!r.deepEqual(e[i],n[i]))return!1;return!0}if(e instanceof Object){if(Array.isArray(n)||!(n instanceof Object))return!1;for(t in e)if(!r.deepEqual(e[t],n[t]))return!1;for(t in n)if(!r.deepEqual(e[t],n[t]))return!1;return!0}return typeof e==typeof n&&e==n}},function(e,r){"use strict";r.isNumber=function(e){return e instanceof Number||"number"==typeof e},r.isInteger=function(e){return e==Math.round(e)},r.sign=function(e){return e>0?1:0>e?-1:0},r.format=function(e,n){if("function"==typeof n)return n(e);if(1/0===e)return"Infinity";if(e===-1/0)return"-Infinity";if(isNaN(e))return"NaN";var t="auto",i=void 0;switch(n&&(n.notation&&(t=n.notation),r.isNumber(n)?i=n:n.precision&&(i=n.precision)),t){case"fixed":return r.toFixed(e,i);case"exponential":return r.toExponential(e,i);case"auto":var o=.001,a=1e5;if(n&&n.exponential&&(void 0!==n.exponential.lower&&(o=n.exponential.lower),void 0!==n.exponential.upper&&(a=n.exponential.upper)),0===e)return"0";var s,u=Math.abs(e);if(u>=o&&a>u){var f=i?e.toPrecision(Math.min(i,21)):e.toPrecision();s=parseFloat(f)+""}else s=r.toExponential(e,i);return s.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],r=arguments[4];return"."!==e?e+r:r});default:throw new Error('Unknown notation "'+t+'". Choose "auto", "exponential", or "fixed".')}},r.toExponential=function(e,r){return void 0!==r?e.toExponential(Math.min(r-1,20)):e.toExponential()},r.toFixed=function(e,r){return e.toFixed(Math.min(r,20))},r.digits=function(e){return e.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length},r.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16,r.nearlyEqual=function(e,n,t){if(null==t)return e==n;if(e==n)return!0;if(isNaN(e)||isNaN(n))return!1;if(isFinite(e)&&isFinite(n)){var i=Math.abs(e-n);return i="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){y++,w=x.charAt(y)}function u(e){y=e,w=x.charAt(y)}function f(){var e,r="";if(e=y,"+"==w?s():"-"==w&&(r+=w,s()),!o(w))return u(e),null;if("."==w){if(r+=w,s(),!a(w))return u(e),null}else{for(;a(w);)r+=w,s();"."==w&&(r+=w,s())}for(;a(w);)r+=w,s();if("E"==w||"e"==w){if(r+=w,s(),("+"==w||"-"==w)&&(r+=w,s()),!a(w))return u(e),null;for(;a(w);)r+=w,s()}return r}function c(){var e=x.charAt(y+1);if("I"==w||"i"==w)return s(),"1";if(!("+"!=w&&"-"!=w||"I"!=e&&"i"!=e)){var r="+"==w?"1":"-1";return s(),s(),r}return null}var l=n(142),p=n(10),m=l.number,h=l.number.isNumber,g=p.isUnit,d=l.string.isString;t.isComplex=function(e){return e instanceof t};var x,y,w;t.parse=function(e){if(x=e,y=-1,w="",!d(x))return null;s(),i();var r=f();if(r){if("I"==w||"i"==w)return s(),i(),w?null:new t(0,Number(r));i();var n=w;if("+"!=n&&"-"!=n)return i(),w?null:new t(Number(r),0);s(),i();var o=f();if(o){if("I"!=w&&"i"!=w)return null;s()}else if(o=c(),!o)return null;return"-"==n&&(o="-"==o[0]?"+"+o.substring(1):"-"+o),s(),i(),w?null:new t(Number(r),Number(o))}return(r=c())?(i(),w?null:new t(0,Number(r))):null},t.fromPolar=function(){switch(arguments.length){case 1:var e=arguments[0];if("object"==typeof e)return t.fromPolar(e.r,e.phi);throw new TypeError("Input has to be an object with r and phi keys.");case 2:var r=arguments[0],n=arguments[1];if(h(r)){if(g(n)&&n.hasBase(p.BASE_UNITS.ANGLE)&&(n=n.toNumber("rad")),h(n))return new t(r*Math.cos(n),r*Math.sin(n));throw new TypeError("Phi is not a number nor an angle unit.")}throw new TypeError("Radius r is not a number.");default:throw new SyntaxError("Wrong number of arguments in function fromPolar")}},t.prototype.toPolar=function(){return{r:Math.sqrt(this.re*this.re+this.im*this.im),phi:Math.atan2(this.im,this.re)}},t.prototype.clone=function(){return new t(this.re,this.im)},t.prototype.equals=function(e){return this.re===e.re&&this.im===e.im},t.prototype.format=function(e){var r="",n=m.format(this.re,e),t=m.format(this.im,e);return r=0==this.im?n:0==this.re?1==this.im?"i":-1==this.im?"-i":t+"i":this.im>0?1==this.im?n+" + i":n+" + "+t+"i":-1==this.im?n+" - i":n+" - "+t.substring(1)+"i"},t.prototype.toString=function(){return this.format()},t.prototype.valueOf=t.prototype.toString,e.exports=t},function(e,r,n){"use strict";function t(e,r,n){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(null!=e&&!o.isNumber(e))throw new TypeError("Parameter start must be a number");if(null!=r&&!o.isNumber(r))throw new TypeError("Parameter end must be a number");if(null!=n&&!o.isNumber(n))throw new TypeError("Parameter step must be a number");this.start=null!=e?parseFloat(e):0,this.end=null!=r?parseFloat(r):0,this.step=null!=n?parseFloat(n):1}{var i=n(142),o=i.number,a=i.string;i.array}t.parse=function(e){if(!a.isString(e))return null;var r=e.split(":"),n=r.map(function(e){return parseFloat(e)}),i=n.some(function(e){return isNaN(e)});if(i)return null;switch(n.length){case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[2],n[1]);default:return null}},t.prototype.clone=function(){return new t(this.start,this.end,this.step)},t.isRange=function(e){return e instanceof t},t.prototype.size=function(){var e=0,r=this.start,n=this.step,t=this.end,i=t-r;return o.sign(n)==o.sign(i)?e=Math.ceil(i/n):0==i&&(e=0),isNaN(e)&&(e=0),[e]},t.prototype.min=function(){var e=this.size()[0];return e>0?this.step>0?this.start:this.start+(e-1)*this.step:void 0},t.prototype.max=function(){var e=this.size()[0];return e>0?this.step>0?this.start+(e-1)*this.step:this.start:void 0},t.prototype.forEach=function(e){var r=this.start,n=this.step,t=this.end,i=0;if(n>0)for(;t>r;)e(r,i,this),r+=n,i++;else if(0>n)for(;r>t;)e(r,i,this),r+=n,i++},t.prototype.map=function(e){var r=[];return this.forEach(function(n,t,i){r[t]=e(n,t,i)}),r},t.prototype.toArray=function(){var e=[];return this.forEach(function(r,n){e[n]=r}),e},t.prototype.valueOf=function(){return this.toArray()},t.prototype.format=function(e){var r=o.format(this.start,e);return 1!=this.step&&(r+=":"+o.format(this.step,e)),r+=":"+o.format(this.end,e)},t.prototype.toString=function(){return this.format()},e.exports=t},function(e,r,n){"use strict";function t(){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");this._ranges=[],this._isScalar=!0;for(var e=0,r=arguments.length;r>e;e++){var n=arguments[e];if(n instanceof a)this._ranges.push(n),this._isScalar=!1;else if(c(n))this._ranges.push(i(n)),this._isScalar=!1;else if(u(n))this._ranges.push(i([n,n+1]));else{var o=n.valueOf();if(!c(o))throw new TypeError("Ranges must be an Array, Number, or Range");this._ranges.push(i(o)),this._isScalar=!1}}}function i(e){for(var r=e.length,n=0;r>n;n++)if(!u(e[n])||!f(e[n]))throw new TypeError("Index parameters must be integer numbers");switch(e.length){case 2:return new a(e[0],e[1]);case 3:return new a(e[0],e[1],e[2]);default:throw new SyntaxError("Wrong number of arguments in Index (2 or 3 expected)")}}var o=n(142),a=n(7),s=o.number,u=s.isNumber,f=s.isInteger,c=Array.isArray;t.prototype.clone=function(){var e=new t;return e._ranges=o.object.clone(this._ranges),e._isScalar=this._isScalar,e},t.isIndex=function(e){return e instanceof t},t.create=function(e){var r=new t;return t.apply(r,e),r},t.prototype.size=function(){for(var e=[],r=0,n=this._ranges.length;n>r;r++){var t=this._ranges[r];e[r]=t.size()[0]}return e},t.prototype.max=function(){for(var e=[],r=0,n=this._ranges.length;n>r;r++){var t=this._ranges[r];e[r]=t.max()}return e},t.prototype.min=function(){for(var e=[],r=0,n=this._ranges.length;n>r;r++){var t=this._ranges[r];e[r]=t.min()}return e},t.prototype.forEach=function(e){for(var r=0,n=this._ranges.length;n>r;r++)e(this._ranges[r],r,this)},t.prototype.range=function(e){return this._ranges[e]||null},t.prototype.isScalar=function(){return this._isScalar},t.prototype.toArray=function(){for(var e=[],r=0,n=this._ranges.length;n>r;r++){var t=this._ranges[r],i=[],o=t.start,a=t.end,s=t.step;if(s>0)for(;a>o;)i.push(o),o+=s;else if(0>s)for(;o>a;)i.push(o),o+=s;e.push(i)}return e},t.prototype.valueOf=t.prototype.toArray,t.prototype.toString=function(){for(var e=[],r=0,n=this._ranges.length;n>r;r++){var t=this._ranges[r],i=s.format(t.start);1!=t.step&&(i+=":"+s.format(t.step)),i+=":"+s.format(t.end),e.push(i)}return"["+e.join(", ")+"]"},e.exports=t},function(e,r,n){"use strict";function t(e){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof t)this._data=e.clone()._data;else if(d(e))this._data=f(e);else{if(null!=e)throw new TypeError("Unsupported type of data ("+c.types.type(e)+")");this._data=[]}this._size=h.size(this._data)}function i(e,r){if(!(r instanceof p))throw new TypeError("Invalid index");var n=r.isScalar();if(n)return e.get(r.min());var i=r.size();if(i.length!=e._size.length)throw new l(i.length,e._size.length);for(var a=r.min(),s=r.max(),u=0,f=e._size.length;f>u;u++)x(a[u],e._size[u]),x(s[u],e._size[u]);return new t(o(e._data,r,i.length,0))}function o(e,r,n,t){var i=t==n-1,a=r.range(t);return a.map(i?function(r){return e[r]}:function(i){var a=e[i];return o(a,r,n,t+1)})}function a(e,r,n,i){if(!(r instanceof p))throw new TypeError("Invalid index");var o,a=r.size(),f=r.isScalar();if(n instanceof t?(o=n.size(),n=n.valueOf()):o=h.size(n),f){if(0!=o.length)throw new TypeError("Scalar expected");e.set(r.min(),n,i)}else{if(a.length");var d=r.max().map(function(e){return e+1});u(e,d,i);var x=a.length,y=0;s(e._data,r,n,x,y)}return e}function s(e,r,n,t,i){var o=i==t-1,a=r.range(i);a.forEach(o?function(r,t){x(r),e[r]=n[t]}:function(o,a){x(o),s(e[o],r,n[a],t,i+1)})}function u(e,r,n){for(var t=g.clone(e._size),i=!1;t.lengtho;o++)r[o]>t[o]&&(t[o]=r[o],i=!0);i&&e.resize(t,n)}function f(e){for(var r=0,n=e.length;n>r;r++){var i=e[r];d(i)?e[r]=f(i):i instanceof t&&(e[r]=f(i._data))}return e}var c=n(142),l=n(138),p=n(8),m=(c.number,c.string),h=c.array,g=c.object,d=Array.isArray,x=h.validateIndex;t.isMatrix=function(e){return e instanceof t},t.prototype.subset=function(e,r,n){switch(arguments.length){case 1:return i(this,e);case 2:case 3:return a(this,e,r,n);default:throw new SyntaxError("Wrong number of arguments")}},t.prototype.get=function(e){if(!d(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new l(e.length,this._size.length);for(var r=this._data,n=0,t=e.length;t>n;n++){var i=e[n];x(i,r.length),r=r[i]}return g.clone(r)},t.prototype.set=function(e,r,n){var t,i;if(!d(e))throw new Error("Array expected");if(e.lengtht;t++){var s=e[t];x(s,a.length),a=a[s]}return s=e[e.length-1],x(s,a.length),a[s]=r,this},t.prototype.resize=function(e,r){return this._size=g.clone(e),this._data=h.resize(this._data,this._size,r),this},t.prototype.clone=function(){var e=new t;return e._data=g.clone(this._data),e._size=g.clone(this._size),e},t.prototype.size=function(){return this._size},t.prototype.map=function(e){var r=this,n=new t,i=[],o=function(n,t){return d(n)?n.map(function(e,r){return i[t]=r,o(e,t+1)}):e(n,i,r)};return n._data=o(this._data,0),n._size=g.clone(this._size),n},t.prototype.forEach=function(e){var r=this,n=[],t=function(i,o){d(i)?i.forEach(function(e,r){n[o]=r,t(e,o+1)}):e(i,n,r)};t(this._data,0)},t.prototype.toArray=function(){return g.clone(this._data)},t.prototype.valueOf=function(){return this._data},t.prototype.format=function(e){return m.format(this._data,e)},t.prototype.toString=function(){return m.format(this._data)},e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new Error("Constructor must be called with the new operator");if(void 0!=e&&!y(e))throw new TypeError("First parameter in Unit constructor must be a number");if(void 0!=r&&(!w(r)||""==r))throw new TypeError("Second parameter in Unit constructor must be a string");if(void 0!=r){var n=l(r);if(!n)throw new SyntaxError('Unknown unit "'+r+'"');this.unit=n.unit,this.prefix=n.prefix}else this.unit=M,this.prefix=b;this.value=void 0!=e?this._normalize(e):null,this.fixPrefix=!1}function i(){for(;" "==h||" "==h;)s()}function o(e){return e>="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){m++,h=p.charAt(m)}function u(e){m=e,h=p.charAt(m)}function f(){var e,r="";if(e=m,"+"==h?s():"-"==h&&(r+=h,s()),!o(h))return u(e),null;if("."==h){if(r+=h,s(),!a(h))return u(e),null}else{for(;a(h);)r+=h,s();"."==h&&(r+=h,s())}for(;a(h);)r+=h,s();if("E"==h||"e"==h){if(r+=h,s(),("+"==h||"-"==h)&&(r+=h,s()),!a(h))return u(e),null;for(;a(h);)r+=h,s()}return r}function c(){var e="";for(i();h&&" "!=h&&" "!=h;)e+=h,s();return e||null}function l(e){for(var r in T)if(T.hasOwnProperty(r)&&x.endsWith(e,r)){var n=T[r],t=e.length-r.length,i=e.substring(0,t),o=n.prefixes[i];if(void 0!==o)return{unit:n,prefix:o}}return null}var p,m,h,g=n(142),d=g.number,x=g.string,y=g.number.isNumber,w=g.string.isString;t.parse=function(e){if(p=e,m=-1,h="",!w(p))return null;s(),i();var r,n=f();if(n){if(r=c(),s(),i(),h)return null;if(n&&r)try{return new t(Number(n),r)}catch(o){}}else{if(r=c(),s(),i(),h)return null;if(r)try{return new t(null,r)}catch(o){}}return null},t.isUnit=function(e){return e instanceof t},t.prototype.clone=function(){var e=new t;for(var r in this)this.hasOwnProperty(r)&&(e[r]=this[r]);return e},t.prototype._normalize=function(e){return(e+this.unit.offset)*this.unit.value*this.prefix.value},t.prototype._unnormalize=function(e,r){return void 0==r?e/this.unit.value/this.prefix.value-this.unit.offset:e/this.unit.value/r-this.unit.offset},t.isValuelessUnit=function(e){return null!=l(e)},t.prototype.hasBase=function(e){return this.unit.base===e},t.prototype.equalBase=function(e){return this.unit.base===e.unit.base},t.prototype.equals=function(e){return this.equalBase(e)&&this.value==e.value},t.prototype.to=function(e){var r;if(w(e)){if(r=new t(null,e),!this.equalBase(r))throw new Error("Units do not match");return r.value=this.value,r.fixPrefix=!0,r}if(e instanceof t){if(!this.equalBase(e))throw new Error("Units do not match");if(null!==e.value)throw new Error("Cannot convert to a unit with a value");return r=e.clone(),r.value=this.value,r.fixPrefix=!0,r}throw new Error("String or Unit expected as parameter")},t.prototype.toNumber=function(e){var r=this.to(e);return r._unnormalize(r.value,r.prefix.value)},t.prototype.toString=function(){return this.format()},t.prototype.valueOf=t.prototype.toString,t.prototype.format=function(e){var r,n;if(null===this.value||this.fixPrefix)r=this._unnormalize(this.value),n=null!==this.value?d.format(r,e)+" ":"",n+=this.prefix.name+this.unit.name;else{var t=this._bestPrefix();r=this._unnormalize(this.value,t.value),n=d.format(r,e)+" ",n+=t.name+this.unit.name}return n},t.prototype._bestPrefix=function(){var e=Math.abs(this.value/this.unit.value),r=b,n=Math.abs(Math.log(e/r.value)/Math.LN10-1.2),t=this.unit.prefixes;for(var i in t)if(t.hasOwnProperty(i)){var o=t[i];if(o.scientific){var a=Math.abs(Math.log(e/o.value)/Math.LN10-1.2);n>a&&(r=o,n=a)}}return r};var v={NONE:{"":{name:"",value:1,scientific:!0}},SHORT:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:10,scientific:!1},h:{name:"h",value:100,scientific:!1},k:{name:"k",value:1e3,scientific:!0},M:{name:"M",value:1e6,scientific:!0},G:{name:"G",value:1e9,scientific:!0},T:{name:"T",value:1e12,scientific:!0},P:{name:"P",value:1e15,scientific:!0},E:{name:"E",value:1e18,scientific:!0},Z:{name:"Z",value:1e21,scientific:!0},Y:{name:"Y",value:1e24,scientific:!0},d:{name:"d",value:.1,scientific:!1},c:{name:"c",value:.01,scientific:!1},m:{name:"m",value:.001,scientific:!0},u:{name:"u",value:1e-6,scientific:!0},n:{name:"n",value:1e-9,scientific:!0},p:{name:"p",value:1e-12,scientific:!0},f:{name:"f",value:1e-15,scientific:!0},a:{name:"a",value:1e-18,scientific:!0},z:{name:"z",value:1e-21,scientific:!0},y:{name:"y",value:1e-24,scientific:!0}},LONG:{"":{name:"",value:1,scientific:!0},deca:{name:"deca",value:10,scientific:!1},hecto:{name:"hecto",value:100,scientific:!1},kilo:{name:"kilo",value:1e3,scientific:!0},mega:{name:"mega",value:1e6,scientific:!0},giga:{name:"giga",value:1e9,scientific:!0},tera:{name:"tera",value:1e12,scientific:!0},peta:{name:"peta",value:1e15,scientific:!0},exa:{name:"exa",value:1e18,scientific:!0},zetta:{name:"zetta",value:1e21,scientific:!0},yotta:{name:"yotta",value:1e24,scientific:!0},deci:{name:"deci",value:.1,scientific:!1},centi:{name:"centi",value:.01,scientific:!1},milli:{name:"milli",value:.001,scientific:!0},micro:{name:"micro",value:1e-6,scientific:!0},nano:{name:"nano",value:1e-9,scientific:!0},pico:{name:"pico",value:1e-12,scientific:!0},femto:{name:"femto",value:1e-15,scientific:!0},atto:{name:"atto",value:1e-18,scientific:!0},zepto:{name:"zepto",value:1e-21,scientific:!0},yocto:{name:"yocto",value:1e-24,scientific:!0}},SQUARED:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:100,scientific:!1},h:{name:"h",value:1e4,scientific:!1},k:{name:"k",value:1e6,scientific:!0},M:{name:"M",value:1e12,scientific:!0},G:{name:"G",value:1e18,scientific:!0},T:{name:"T",value:1e24,scientific:!0},P:{name:"P",value:1e30,scientific:!0},E:{name:"E",value:1e36,scientific:!0},Z:{name:"Z",value:1e42,scientific:!0},Y:{name:"Y",value:1e48,scientific:!0},d:{name:"d",value:.01,scientific:!1},c:{name:"c",value:1e-4,scientific:!1},m:{name:"m",value:1e-6,scientific:!0},u:{name:"u",value:1e-12,scientific:!0},n:{name:"n",value:1e-18,scientific:!0},p:{name:"p",value:1e-24,scientific:!0},f:{name:"f",value:1e-30,scientific:!0},a:{name:"a",value:1e-36,scientific:!0},z:{name:"z",value:1e-42,scientific:!0},y:{name:"y",value:1e-42,scientific:!0}},CUBIC:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:1e3,scientific:!1},h:{name:"h",value:1e6,scientific:!1},k:{name:"k",value:1e9,scientific:!0},M:{name:"M",value:1e18,scientific:!0},G:{name:"G",value:1e27,scientific:!0},T:{name:"T",value:1e36,scientific:!0},P:{name:"P",value:1e45,scientific:!0},E:{name:"E",value:1e54,scientific:!0},Z:{name:"Z",value:1e63,scientific:!0},Y:{name:"Y",value:1e72,scientific:!0},d:{name:"d",value:.001,scientific:!1},c:{name:"c",value:1e-6,scientific:!1},m:{name:"m",value:1e-9,scientific:!0},u:{name:"u",value:1e-18,scientific:!0},n:{name:"n",value:1e-27,scientific:!0},p:{name:"p",value:1e-36,scientific:!0},f:{name:"f",value:1e-45,scientific:!0},a:{name:"a",value:1e-54,scientific:!0},z:{name:"z",value:1e-63,scientific:!0},y:{name:"y",value:1e-72,scientific:!0}},BINARY_SHORT:{"":{name:"",value:1,scientific:!0},k:{name:"k",value:1024,scientific:!0},M:{name:"M",value:Math.pow(1024,2),scientific:!0},G:{name:"G",value:Math.pow(1024,3),scientific:!0},T:{name:"T",value:Math.pow(1024,4),scientific:!0},P:{name:"P",value:Math.pow(1024,5),scientific:!0},E:{name:"E",value:Math.pow(1024,6),scientific:!0},Z:{name:"Z",value:Math.pow(1024,7),scientific:!0},Y:{name:"Y",value:Math.pow(1024,8),scientific:!0},Ki:{name:"Ki",value:1024,scientific:!0},Mi:{name:"Mi",value:Math.pow(1024,2),scientific:!0},Gi:{name:"Gi",value:Math.pow(1024,3),scientific:!0},Ti:{name:"Ti",value:Math.pow(1024,4),scientific:!0},Pi:{name:"Pi",value:Math.pow(1024,5),scientific:!0},Ei:{name:"Ei",value:Math.pow(1024,6),scientific:!0},Zi:{name:"Zi",value:Math.pow(1024,7),scientific:!0},Yi:{name:"Yi",value:Math.pow(1024,8),scientific:!0}},BINARY_LONG:{"":{name:"",value:1,scientific:!0},kilo:{name:"kilo",value:1024,scientific:!0},mega:{name:"mega",value:Math.pow(1024,2),scientific:!0},giga:{name:"giga",value:Math.pow(1024,3),scientific:!0},tera:{name:"tera",value:Math.pow(1024,4),scientific:!0},peta:{name:"peta",value:Math.pow(1024,5),scientific:!0},exa:{name:"exa",value:Math.pow(1024,6),scientific:!0},zetta:{name:"zetta",value:Math.pow(1024,7),scientific:!0},yotta:{name:"yotta",value:Math.pow(1024,8),scientific:!0},kibi:{name:"kibi",value:1024,scientific:!0},mebi:{name:"mebi",value:Math.pow(1024,2),scientific:!0},gibi:{name:"gibi",value:Math.pow(1024,3),scientific:!0},tebi:{name:"tebi",value:Math.pow(1024,4),scientific:!0},pebi:{name:"pebi",value:Math.pow(1024,5),scientific:!0},exi:{name:"exi",value:Math.pow(1024,6),scientific:!0},zebi:{name:"zebi",value:Math.pow(1024,7),scientific:!0},yobi:{name:"yobi",value:Math.pow(1024,8),scientific:!0}}},b={name:"",value:1,scientific:!0},E={NONE:{},LENGTH:{},MASS:{},TIME:{},CURRENT:{},TEMPERATURE:{},LUMINOUS_INTENSITY:{},AMOUNT_OF_SUBSTANCE:{},FORCE:{},SURFACE:{},VOLUME:{},ANGLE:{},BIT:{}},N={},M={name:"",base:N,value:1,offset:0},T={meter:{name:"meter",base:E.LENGTH,prefixes:v.LONG,value:1,offset:0},inch:{name:"inch",base:E.LENGTH,prefixes:v.NONE,value:.0254,offset:0},foot:{name:"foot",base:E.LENGTH,prefixes:v.NONE,value:.3048,offset:0},yard:{name:"yard",base:E.LENGTH,prefixes:v.NONE,value:.9144,offset:0},mile:{name:"mile",base:E.LENGTH,prefixes:v.NONE,value:1609.344,offset:0},link:{name:"link",base:E.LENGTH,prefixes:v.NONE,value:.201168,offset:0},rod:{name:"rod",base:E.LENGTH,prefixes:v.NONE,value:5.02921,offset:0},chain:{name:"chain",base:E.LENGTH,prefixes:v.NONE,value:20.1168,offset:0},angstrom:{name:"angstrom",base:E.LENGTH,prefixes:v.NONE,value:1e-10,offset:0},m:{name:"m",base:E.LENGTH,prefixes:v.SHORT,value:1,offset:0},"in":{name:"in",base:E.LENGTH,prefixes:v.NONE,value:.0254,offset:0},ft:{name:"ft",base:E.LENGTH,prefixes:v.NONE,value:.3048,offset:0},yd:{name:"yd",base:E.LENGTH,prefixes:v.NONE,value:.9144,offset:0},mi:{name:"mi",base:E.LENGTH,prefixes:v.NONE,value:1609.344,offset:0},li:{name:"li",base:E.LENGTH,prefixes:v.NONE,value:.201168,offset:0},rd:{name:"rd",base:E.LENGTH,prefixes:v.NONE,value:5.02921,offset:0},ch:{name:"ch",base:E.LENGTH,prefixes:v.NONE,value:20.1168,offset:0},mil:{name:"mil",base:E.LENGTH,prefixes:v.NONE,value:254e-7,offset:0},m2:{name:"m2",base:E.SURFACE,prefixes:v.SQUARED,value:1,offset:0},sqin:{name:"sqin",base:E.SURFACE,prefixes:v.NONE,value:64516e-8,offset:0},sqft:{name:"sqft",base:E.SURFACE,prefixes:v.NONE,value:.09290304,offset:0},sqyd:{name:"sqyd",base:E.SURFACE,prefixes:v.NONE,value:.83612736,offset:0},sqmi:{name:"sqmi",base:E.SURFACE,prefixes:v.NONE,value:2589988.110336,offset:0},sqrd:{name:"sqrd",base:E.SURFACE,prefixes:v.NONE,value:25.29295,offset:0},sqch:{name:"sqch",base:E.SURFACE,prefixes:v.NONE,value:404.6873,offset:0},sqmil:{name:"sqmil",base:E.SURFACE,prefixes:v.NONE,value:6.4516e-10,offset:0},m3:{name:"m3",base:E.VOLUME,prefixes:v.CUBIC,value:1,offset:0},L:{name:"L",base:E.VOLUME,prefixes:v.SHORT,value:.001,offset:0},l:{name:"l",base:E.VOLUME,prefixes:v.SHORT,value:.001,offset:0},litre:{name:"litre",base:E.VOLUME,prefixes:v.LONG,value:.001,offset:0},cuin:{name:"cuin",base:E.VOLUME,prefixes:v.NONE,value:16387064e-12,offset:0},cuft:{name:"cuft",base:E.VOLUME,prefixes:v.NONE,value:.028316846592,offset:0},cuyd:{name:"cuyd",base:E.VOLUME,prefixes:v.NONE,value:.764554857984,offset:0},teaspoon:{name:"teaspoon",base:E.VOLUME,prefixes:v.NONE,value:5e-6,offset:0},tablespoon:{name:"tablespoon",base:E.VOLUME,prefixes:v.NONE,value:15e-6,offset:0},drop:{name:"drop",base:E.VOLUME,prefixes:v.NONE,value:5e-8,offset:0},gtt:{name:"gtt",base:E.VOLUME,prefixes:v.NONE,value:5e-8,offset:0},minim:{name:"minim",base:E.VOLUME,prefixes:v.NONE,value:6.161152e-8,offset:0},fluiddram:{name:"fluiddram",base:E.VOLUME,prefixes:v.NONE,value:36966911e-13,offset:0},fluidounce:{name:"fluidounce",base:E.VOLUME,prefixes:v.NONE,value:2957353e-11,offset:0},gill:{name:"gill",base:E.VOLUME,prefixes:v.NONE,value:.0001182941,offset:0},cc:{name:"cc",base:E.VOLUME,prefixes:v.NONE,value:1e-6,offset:0},cup:{name:"cup",base:E.VOLUME,prefixes:v.NONE,value:.0002365882,offset:0},pint:{name:"pint",base:E.VOLUME,prefixes:v.NONE,value:.0004731765,offset:0},quart:{name:"quart",base:E.VOLUME,prefixes:v.NONE,value:.0009463529,offset:0},gallon:{name:"gallon",base:E.VOLUME,prefixes:v.NONE,value:.003785412,offset:0},beerbarrel:{name:"beerbarrel",base:E.VOLUME,prefixes:v.NONE,value:.1173478,offset:0},oilbarrel:{name:"oilbarrel",base:E.VOLUME,prefixes:v.NONE,value:.1589873,offset:0},hogshead:{name:"hogshead",base:E.VOLUME,prefixes:v.NONE,value:.238481,offset:0},fldr:{name:"fldr",base:E.VOLUME,prefixes:v.NONE,value:36966911e-13,offset:0},floz:{name:"floz",base:E.VOLUME,prefixes:v.NONE,value:2957353e-11,offset:0},gi:{name:"gi",base:E.VOLUME,prefixes:v.NONE,value:.0001182941,offset:0},cp:{name:"cp",base:E.VOLUME,prefixes:v.NONE,value:.0002365882,offset:0},pt:{name:"pt",base:E.VOLUME,prefixes:v.NONE,value:.0004731765,offset:0},qt:{name:"qt",base:E.VOLUME,prefixes:v.NONE,value:.0009463529,offset:0},gal:{name:"gal",base:E.VOLUME,prefixes:v.NONE,value:.003785412,offset:0},bbl:{name:"bbl",base:E.VOLUME,prefixes:v.NONE,value:.1173478,offset:0},obl:{name:"obl",base:E.VOLUME,prefixes:v.NONE,value:.1589873,offset:0},g:{name:"g",base:E.MASS,prefixes:v.SHORT,value:.001,offset:0},gram:{name:"gram",base:E.MASS,prefixes:v.LONG,value:.001,offset:0},ton:{name:"ton",base:E.MASS,prefixes:v.SHORT,value:907.18474,offset:0},tonne:{name:"tonne",base:E.MASS,prefixes:v.SHORT,value:1e3,offset:0},grain:{name:"grain",base:E.MASS,prefixes:v.NONE,value:6479891e-11,offset:0},dram:{name:"dram",base:E.MASS,prefixes:v.NONE,value:.0017718451953125,offset:0},ounce:{name:"ounce",base:E.MASS,prefixes:v.NONE,value:.028349523125,offset:0},poundmass:{name:"poundmass",base:E.MASS,prefixes:v.NONE,value:.45359237,offset:0},hundredweight:{name:"hundredweight",base:E.MASS,prefixes:v.NONE,value:45.359237,offset:0},stick:{name:"stick",base:E.MASS,prefixes:v.NONE,value:.115,offset:0},gr:{name:"gr",base:E.MASS,prefixes:v.NONE,value:6479891e-11,offset:0},dr:{name:"dr",base:E.MASS,prefixes:v.NONE,value:.0017718451953125,offset:0},oz:{name:"oz",base:E.MASS,prefixes:v.NONE,value:.028349523125,offset:0},lbm:{name:"lbm",base:E.MASS,prefixes:v.NONE,value:.45359237,offset:0},cwt:{name:"cwt",base:E.MASS,prefixes:v.NONE,value:45.359237,offset:0},s:{name:"s",base:E.TIME,prefixes:v.SHORT,value:1,offset:0},min:{name:"min",base:E.TIME,prefixes:v.NONE,value:60,offset:0},h:{name:"h",base:E.TIME,prefixes:v.NONE,value:3600,offset:0},second:{name:"second",base:E.TIME,prefixes:v.LONG,value:1,offset:0},sec:{name:"sec",base:E.TIME,prefixes:v.LONG,value:1,offset:0},minute:{name:"minute",base:E.TIME,prefixes:v.NONE,value:60,offset:0},hour:{name:"hour",base:E.TIME,prefixes:v.NONE,value:3600,offset:0},day:{name:"day",base:E.TIME,prefixes:v.NONE,value:86400,offset:0},rad:{name:"rad",base:E.ANGLE,prefixes:v.NONE,value:1,offset:0},deg:{name:"deg",base:E.ANGLE,prefixes:v.NONE,value:.017453292519943295,offset:0},grad:{name:"grad",base:E.ANGLE,prefixes:v.NONE,value:.015707963267948967,offset:0},cycle:{name:"cycle",base:E.ANGLE,prefixes:v.NONE,value:6.283185307179586,offset:0},A:{name:"A",base:E.CURRENT,prefixes:v.SHORT,value:1,offset:0},ampere:{name:"ampere",base:E.CURRENT,prefixes:v.LONG,value:1,offset:0},K:{name:"K",base:E.TEMPERATURE,prefixes:v.NONE,value:1,offset:0},degC:{name:"degC",base:E.TEMPERATURE,prefixes:v.NONE,value:1,offset:273.15},degF:{name:"degF",base:E.TEMPERATURE,prefixes:v.NONE,value:1/1.8,offset:459.67},degR:{name:"degR",base:E.TEMPERATURE,prefixes:v.NONE,value:1/1.8,offset:0},kelvin:{name:"kelvin",base:E.TEMPERATURE,prefixes:v.NONE,value:1,offset:0},celsius:{name:"celsius",base:E.TEMPERATURE,prefixes:v.NONE,value:1,offset:273.15},fahrenheit:{name:"fahrenheit",base:E.TEMPERATURE,prefixes:v.NONE,value:1/1.8,offset:459.67},rankine:{name:"rankine",base:E.TEMPERATURE,prefixes:v.NONE,value:1/1.8,offset:0},mol:{name:"mol",base:E.AMOUNT_OF_SUBSTANCE,prefixes:v.NONE,value:1,offset:0},mole:{name:"mole",base:E.AMOUNT_OF_SUBSTANCE,prefixes:v.NONE,value:1,offset:0},cd:{name:"cd",base:E.LUMINOUS_INTENSITY,prefixes:v.NONE,value:1,offset:0},candela:{name:"candela",base:E.LUMINOUS_INTENSITY,prefixes:v.NONE,value:1,offset:0},N:{name:"N",base:E.FORCE,prefixes:v.SHORT,value:1,offset:0},newton:{name:"newton",base:E.FORCE,prefixes:v.LONG,value:1,offset:0},lbf:{name:"lbf",base:E.FORCE,prefixes:v.NONE,value:4.4482216152605,offset:0},poundforce:{name:"poundforce",base:E.FORCE,prefixes:v.NONE,value:4.4482216152605,offset:0},b:{name:"b",base:E.BIT,prefixes:v.BINARY_SHORT,value:1,offset:0},bits:{name:"bits",base:E.BIT,prefixes:v.BINARY_LONG,value:1,offset:0},B:{name:"B",base:E.BIT,prefixes:v.BINARY_SHORT,value:8,offset:0},bytes:{name:"bytes",base:E.BIT,prefixes:v.BINARY_LONG,value:8,offset:0}},A={meters:"meter",inches:"inch",feet:"foot",yards:"yard",miles:"mile",links:"link",rods:"rod",chains:"chain",angstroms:"angstrom",litres:"litre",teaspoons:"teaspoon",tablespoons:"tablespoon",minims:"minim",fluiddrams:"fluiddram",fluidounces:"fluidounce",gills:"gill",cups:"cup",pints:"pint",quarts:"quart",gallons:"gallon",beerbarrels:"beerbarrel",oilbarrels:"oilbarrel",hogsheads:"hogshead",gtts:"gtt",grams:"gram",tons:"ton",tonnes:"tonne",grains:"grain",drams:"dram",ounces:"ounce",poundmasses:"poundmass",hundredweights:"hundredweight",sticks:"stick",seconds:"second",minutes:"minute",hours:"hour",days:"day",radians:"rad",degrees:"deg",gradients:"grad",cycles:"cycle",amperes:"ampere",moles:"mole"}; -for(var S in A)if(A.hasOwnProperty(S)){var O=T[A[S]],C=Object.create(O);C.name=S,T[S]=C}T.lt=T.l,T.liter=T.litre,T.liters=T.litres,T.lb=T.lbm,T.lbs=T.lbm,t.PREFIXES=v,t.BASE_UNITS=E,t.UNITS=T,e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");this.math=e,this.doc=r}var i=n(142),o=i.object,a=i.string;t.isHelp=function(e){return e instanceof t},t.prototype.toString=function(){var e=this.doc||{},r="\n";if(e.name&&(r+="Name: "+e.name+"\n\n"),e.category&&(r+="Category: "+e.category+"\n\n"),e.description&&(r+="Description:\n "+e.description+"\n\n"),e.syntax&&(r+="Syntax:\n "+e.syntax.join("\n ")+"\n\n"),e.examples){var n=this.math.parser();r+="Examples:\n";for(var i=0;i=r){if(c(e[0])){for(u=i(e),a=[],o=0;on;n++){var a=[];for(r=0;t>r;r++)a.push(e[r][n]);o.push(a)}return o}{var o=n(142),a=n(139),s=n(138),u=n(9),f=o.array,c=o.array.isArray;o.string.isString}r.argsToArray=function(e){if(0==e.length)return[];if(1==e.length){var r=e[0];return r instanceof u&&(r=r.valueOf()),c(r)||(r=[r]),r}return o.array.argsToArray(e)},r.isCollection=function(e){return c(e)||e instanceof u},r.deepMap=function l(e,r){return e&&"function"==typeof e.map?e.map(function(e){return l(e,r)}):r(e)},r.deepMap2=function p(e,r,n){var t,i,o;if(c(e))if(c(r)){if(e.length!=r.length)throw new s(e.length,r.length);for(t=[],i=e.length,o=0;i>o;o++)t[o]=p(e[o],r[o],n)}else{if(r instanceof u)return t=p(e,r.valueOf(),n),new u(t);for(t=[],i=e.length,o=0;i>o;o++)t[o]=p(e[o],r,n)}else{if(e instanceof u)return r instanceof u?(t=p(e.valueOf(),r.valueOf(),n),new u(t)):(t=p(e.valueOf(),r,n),new u(t));if(c(r))for(t=[],i=r.length,o=0;i>o;o++)t[o]=p(e,r[o],n);else{if(r instanceof u)return t=p(e,r.valueOf(),n),new u(t);t=n(e,r)}}return t},r.reduce=function(e,r,n){var i=c(e)?f.size(e):e.size();if(0>r)throw new a(r);if(r>=i.length)throw new a(r,i.length);return e instanceof u?new u(t(e.valueOf(),r,n)):t(e,r,n)},r.deepForEach=function m(e,r){e instanceof u&&(e=e.valueOf());for(var n=0,t=e.length;t>n;n++){var i=e[n];c(i)?m(i,r):r(i)}}},function(e,r,n){"use strict";function t(e,r){if(1!=arguments.length&&2!=arguments.length)throw new F("parse",arguments.length,1,2);if(sr=r&&r.nodes?r.nodes:{},D(e))return ur=e,h();if(G(e)||e instanceof V)return H.deepMap(e,function(e){if(!D(e))throw new TypeError("String expected");return ur=e,h()});throw new TypeError("String or matrix expected")}function i(){fr=0,cr=ur.charAt(0),mr=0,hr=null}function o(){fr++,cr=ur.charAt(fr)}function a(){return ur.charAt(fr+1)}function s(){for(pr=ir.NULL,lr="";" "==cr||" "==cr||"\n"==cr&&mr;)o();if("#"==cr)for(;"\n"!=cr&&""!=cr;)o();if(""==cr)return void(pr=ir.DELIMITER);if("\n"==cr&&!mr)return pr=ir.DELIMITER,lr=cr,void o();var e=cr+a();if(2==e.length&&or[e])return pr=ir.DELIMITER,lr=e,o(),void o();if(or[cr])return pr=ir.DELIMITER,lr=cr,void o();if(!p(cr)){if(l(cr)){for(;l(cr)||m(cr);)lr+=cr,o();return void(pr=ar[lr]?ir.DELIMITER:ir.SYMBOL)}for(pr=ir.UNKNOWN;""!=cr;)lr+=cr,o();throw P('Syntax error in part "'+lr+'"')}if(pr=ir.NUMBER,"."==cr)lr+=cr,o(),m(cr)||(pr=ir.UNKNOWN);else{for(;m(cr);)lr+=cr,o();"."==cr&&(lr+=cr,o())}for(;m(cr);)lr+=cr,o();if("E"==cr||"e"==cr)for(lr+=cr,o(),("+"==cr||"-"==cr)&&(lr+=cr,o()),m(cr)||(pr=ir.UNKNOWN);m(cr);)lr+=cr,o()}function u(){do s();while("\n"==lr)}function f(){mr++}function c(){mr--}function l(e){return e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"==e}function p(e){return e>="0"&&"9">=e||"."==e}function m(e){return e>="0"&&"9">=e}function h(){i(),s();var e=g();if(""!=lr)throw pr==ir.DELIMITER?k("Unexpected operator "+lr):P('Unexpected part "'+lr+'"');return e}function g(){var e,r,n;if(""==lr)return new K("undefined","undefined");for("\n"!=lr&&";"!=lr&&(e=d());"\n"==lr||";"==lr;)r||(r=new W,e&&(n=";"!=lr,r.add(e,n))),s(),"\n"!=lr&&";"!=lr&&""!=lr&&(e=d(),n=";"!=lr,r.add(e,n));return r?r:e}function d(){if(pr==ir.SYMBOL&&"function"==lr)throw P('Deprecated keyword "function". Functions can now be assigned without it, like "f(x) = x^2".');return x()}function x(){var e,r,n,t,i=y();if("="==lr){if(i instanceof nr)return e=i.name,u(),n=x(),new Z(e,n);if(i instanceof J)return u(),n=x(),new tr(i,n);if(i instanceof er&&(t=!0,r=[],e=i.symbol.name,i.params.forEach(function(e,n){e instanceof nr?r[n]=e.name:t=!1}),t))return u(),n=x(),new $(e,r,n);throw P("Invalid left hand side of assignment operator =")}return i}function y(){for(var e=w();"?"==lr;){var r=hr;hr=mr,u();var n=e,t=w();if(":"!=lr)throw P("False part of conditional expression expected");hr=null,u();var i=y();e=new Q(n,t,i),hr=r}return e}function w(){var e,r,n,t,i;for(e=v(),r={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};lr in r;)n=lr,t=r[n],u(),i=[e,v()],e=new X(n,t,i);return e}function v(){var e,r,n,t,i;for(e=b(),r={to:"to","in":"to"};lr in r;)n=lr,t=r[n],u(),i=[e,b()],e=new X(n,t,i);return e}function b(){var e,r=[];if(e=":"==lr?new K("1","number"):E(),":"==lr&&hr!==mr){for(r.push(e);":"==lr;)u(),r.push(")"==lr||"]"==lr||","==lr||""==lr?new nr("end"):E());if(3==r.length){var n=r[2];r[2]=r[1],r[1]=n}e=new rr(r)}return e}function E(){var e,r,n,t,i;for(e=N(),r={"+":"add","-":"subtract"};lr in r;)n=lr,t=r[n],u(),i=[e,N()],e=new X(n,t,i);return e}function N(){var e,r,n,t,i;if(e=M(),r={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"},lr in r)for(;lr in r;)n=lr,t=r[n],u(),i=[e,M()],e=new X(n,t,i);return(pr==ir.SYMBOL||"in"==lr&&e instanceof K||pr==ir.NUMBER&&!(e instanceof K)||"("==lr||"["==lr)&&(e=new X("*","multiply",[e,N()])),e}function M(){var e,r,n;return"-"==lr||"+"==lr?(e=lr,r="+"==e?"unaryPlus":"unaryMinus",u(),n=[M()],new X(e,r,n)):T()}function T(){var e,r,n,t;return e=A(),("^"==lr||".^"==lr)&&(r=lr,n="^"==r?"pow":"dotPow",u(),t=[e,M()],e=new X(r,n,t)),e}function A(){var e,r,n,t,i;for(e=S(),r={"!":"factorial","'":"transpose"};lr in r;)n=lr,t=r[n],s(),i=[e],e=new X(n,t,i);return e}function S(){var e,r=[];if(pr==ir.SYMBOL&&sr[lr]){if(e=sr[lr],s(),"("==lr){if(r=[],f(),s(),")"!=lr)for(r.push(y());","==lr;)s(),r.push(y());if(")"!=lr)throw P("Parenthesis ) expected");c(),s()}return new e(r)}return O()}function O(){var e,r;return pr==ir.SYMBOL||pr==ir.DELIMITER&&lr in ar?(r=lr,s(),e=new nr(r),e=C(e),e=U(e)):q()}function C(e){var r;if("("==lr){if(r=[],f(),s(),")"!=lr)for(r.push(y());","==lr;)s(),r.push(y());if(")"!=lr)throw P("Parenthesis ) expected");return c(),s(),new er(e,r)}return e}function U(e){for(var r;"["==lr;){if(r=[],f(),s(),"]"!=lr)for(r.push(y());","==lr;)s(),r.push(y());if("]"!=lr)throw P("Parenthesis ] expected");c(),s(),e=new J(e,r)}return e}function q(){var e,r,n;if('"'==lr){for(r="",n="";""!=cr&&('"'!=cr||"\\"==n);)r+=cr,n=cr,o();if(s(),'"'!=lr)throw P('End of string " expected');return s(),e=new K(r,"string"),e=U(e)}return B()}function B(){var e,r,n,t;if("["==lr){if(f(),s(),"]"!=lr){var i=z();if(";"==lr){for(n=1,r=[i];";"==lr;)s(),r[n]=z(),n++;if("]"!=lr)throw P("End of matrix ] expected");c(),s(),t=r[0].nodes.length;for(var o=1;n>o;o++)if(r[o].nodes.length!=t)throw k("Column dimensions mismatch ("+r[o].nodes.length+" != "+t+")");e=new Y(r)}else{if("]"!=lr)throw P("End of matrix ] expected");c(),s(),e=i}}else c(),s(),e=new Y([]);return e}return I()}function z(){for(var e=[x()],r=1;","==lr;)s(),e[r]=x(),r++;return new Y(e)}function I(){var e;return pr==ir.NUMBER?(e=lr,s(),new K(e,"number")):_()}function _(){var e;if("("==lr){if(f(),s(),e=x(),")"!=lr)throw P("Parenthesis ) expected");return c(),s(),e}return R()}function R(){throw P(""==lr?"Unexpected end of expression":"Value expected")}function L(){return fr-lr.length+1}function P(e){var r=L(),n=new SyntaxError(e+" (char "+r+")");return n["char"]=r,n}function k(e){var r=L(),n=new Error(e+" (char "+r+")");return n["char"]=r,n}var j=n(142),F=n(137),D=j.string.isString,G=Array.isArray,V=(j.types.type,n(6),n(9)),H=(n(10),n(13)),Y=n(143),Z=n(144),W=n(145),Q=n(146),K=n(147),$=n(148),J=n(149),X=n(150),er=n(151),rr=n(152),nr=n(153),tr=n(154),ir={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},or={",":!0,"(":!0,")":!0,"[":!0,"]":!0,'"':!0,";":!0,"+":!0,"-":!0,"*":!0,".*":!0,"/":!0,"./":!0,"%":!0,"^":!0,".^":!0,"!":!0,"'":!0,"=":!0,":":!0,"?":!0,"==":!0,"!=":!0,"<":!0,">":!0,"<=":!0,">=":!0},ar={mod:!0,to:!0,"in":!0},sr={},ur="",fr=0,cr="",lr="",pr=ir.NULL,mr=0,hr=null;e.exports=t},function(e,r,n){"use strict";function t(e){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof Object))throw new TypeError("Object expected as parameter math");this.math=e,this.scope={}}var i=n(14);t.prototype.parse=function(){throw new Error("Parser.parse is deprecated. Use math.parse instead.")},t.prototype.compile=function(){throw new Error("Parser.compile is deprecated. Use math.compile instead.")},t.prototype.eval=function(e){return i(e).compile(this.math).eval(this.scope)},t.prototype.get=function(e){return this.scope[e]},t.prototype.set=function(e,r){return this.scope[e]=r},t.prototype.remove=function(e){delete this.scope[e]},t.prototype.clear=function(){for(var e in this.scope)this.scope.hasOwnProperty(e)&&delete this.scope[e]},e.exports=t},function(e,r,n){"use strict";r.ArrayNode=n(143),r.AssignmentNode=n(144),r.BlockNode=n(145),r.ConditionalNode=n(146),r.ConstantNode=n(147),r.IndexNode=n(149),r.FunctionAssignmentNode=n(148),r.FunctionNode=n(151),r.Node=n(155),r.OperatorNode=n(150),r.RangeNode=n(152),r.SymbolNode=n(153),r.UpdateNode=n(154)},function(e,r,n){r.e=n(159),r.E=n(159),r["false"]=n(160),r.i=n(161),r.Infinity=n(162),r.LN2=n(163),r.LN10=n(164),r.LOG2E=n(165),r.LOG10E=n(166),r.NaN=n(167),r["null"]=n(168),r.pi=n(169),r.PI=n(169),r.phi=n(170),r.SQRT1_2=n(171),r.SQRT2=n(172),r.tau=n(173),r["true"]=n(174),r.version=n(175),r.abs=n(179),r.add=n(180),r.ceil=n(181),r.cube=n(182),r.divide=n(183),r.dotDivide=n(184),r.dotMultiply=n(185),r.dotPow=n(186),r.exp=n(187),r.fix=n(188),r.floor=n(189),r.gcd=n(190),r.lcm=n(191),r.log=n(192),r.log10=n(193),r.mod=n(194),r.multiply=n(195),r.norm=n(196),r.pow=n(197),r.round=n(198),r.sign=n(199),r.sqrt=n(200),r.square=n(201),r.subtract=n(202),r.unaryMinus=n(203),r.unaryPlus=n(204),r.xgcd=n(205),r.compare=n(206),r.deepEqual=n(207),r.equal=n(208),r.larger=n(209),r.largerEq=n(210),r.smaller=n(211),r.smallerEq=n(212),r.unequal=n(213),r.arg=n(214),r.conj=n(215),r.re=n(216),r.im=n(217),r.bignumber=n(218),r["boolean"]=n(219),r.complex=n(220),r.index=n(221),r.matrix=n(222),r.number=n(223),r.string=n(224),r.unit=n(225),r.eval=n(226),r.help=n(227),r.concat=n(228),r.det=n(229),r.diag=n(230),r.eye=n(231),r.flatten=n(232),r.inv=n(233),r.ones=n(234),r.range=n(235),r.resize=n(236),r.size=n(237),r.squeeze=n(238),r.subset=n(239),r.transpose=n(240),r.zeros=n(241),r.combinations=n(242),r.factorial=n(243),r.permutations=n(244),r.pickRandom=n(245),r.random=n(246),r.randomInt=n(247),r.max=n(248),r.mean=n(249),r.median=n(250),r.min=n(251),r.prod=n(252),r.std=n(253),r.sum=n(254),r["var"]=n(255),r.acos=n(256),r.asin=n(257),r.atan=n(258),r.atan2=n(259),r.cos=n(260),r.cosh=n(261),r.cot=n(262),r.coth=n(263),r.csc=n(264),r.csch=n(265),r.sec=n(266),r.sech=n(267),r.sin=n(268),r.sinh=n(269),r.tan=n(270),r.tanh=n(271),r.to=n(272),r.clone=n(273),r.map=n(274),r.forEach=n(275),r.format=n(276),r["import"]=n(277),r.sort=n(278),r["typeof"]=n(279)},function(e,r,n){"use strict";var t=n(141),i=n(156).transform,o=n(4).isNumber,a=n(135).argsToArray;e.exports=function(e){e.concat.transform=function(){var r=a(arguments),n=r.length-1,s=r[n];o(s)?r[n]=s-1:s instanceof t&&(r[n]=s.minus(1));try{return e.concat.apply(e,r)}catch(u){throw i(u)}}}},function(e,r,n){"use strict";{var t=n(9);n(141),n(7),n(8),n(4).isNumber,Array.isArray}e.exports=function(e){e.forEach.transform=function(r,n){if(2!=arguments.length)throw new e.error.ArgumentsError("forEach",arguments.length,2);var i=r instanceof t?r.valueOf():r;if(!Array.isArray(i))throw new e.error.UnsupportedTypeError("forEach",e["typeof"](r));var o=[],a=function(e,t){return Array.isArray(e)?e.map(function(e,r){return o[t]=r+1,a(e,t+1)}):void n(e,o,r)};a(i,0)}}},function(e,r,n){"use strict";var t=n(141),i=n(7),o=n(8),a=n(9),s=n(4).isNumber,u=Array.isArray;e.exports=function(e){e.index.transform=function(){for(var e=[],r=0,n=arguments.length;n>r;r++){var f=arguments[r];if(f instanceof a&&(f=f.toArray()),f instanceof i)f.start--,f.end-=f.step.valueOf()>0?0:2;else if(u(f)){for(var c=0,l=f.length;l>c;c++)f[c]=f[c]instanceof t?f[c].toNumber():f[c];var p=f.length>2?f[2]:1;f[0]--,f[1]-=p>0?0:2}else s(f)?f--:f instanceof t&&(f=f.toNumber()-1);e[r]=f}var m=new o;return o.apply(m,e),m}}},function(e,r,n){"use strict";{var t=n(9);n(141),n(7),n(8),n(4).isNumber,Array.isArray}e.exports=function(e){e.map.transform=function(r,n){if(2!=arguments.length)throw new e.error.ArgumentsError("map",arguments.length,2);var i=r instanceof t,o=i?r.valueOf():r;if(Array.isArray(o)){var a=[],s=function(e,t){return Array.isArray(e)?e.map(function(e,r){return a[t]=r+1,s(e,t+1)}):n(e,a,r)},u=s(o,0);return i?new t(u):u}throw new e.error.UnsupportedTypeError("map",e["typeof"](r))}}},function(e,r,n){"use strict";var t=n(141),i=n(156).transform,o=n(4).isNumber,a=n(13).isCollection,s=n(135).argsToArray;e.exports=function(e){e.max.transform=function(){var r=s(arguments);if(2==r.length&&a(r[0])){var n=r[1];o(n)?r[1]=n-1:n instanceof t&&(r[1]=n.minus(1))}try{return e.max.apply(e,r)}catch(u){throw i(u)}}}},function(e,r,n){"use strict";var t=n(141),i=n(156).transform,o=n(4).isNumber,a=n(13).isCollection,s=n(135).argsToArray;e.exports=function(e){e.mean.transform=function(){var r=s(arguments);if(2==r.length&&a(r[0])){var n=r[1];o(n)?r[1]=n-1:n instanceof t&&(r[1]=n.minus(1))}try{return e.mean.apply(e,r)}catch(u){throw i(u)}}}},function(e,r,n){"use strict";var t=n(141),i=n(156).transform,o=n(4).isNumber,a=n(13).isCollection,s=n(135).argsToArray;e.exports=function(e){e.min.transform=function(){var r=s(arguments);if(2==r.length&&a(r[0])){var n=r[1];o(n)?r[1]=n-1:n instanceof t&&(r[1]=n.minus(1))}try{return e.min.apply(e,r)}catch(u){throw i(u)}}}},function(e,r,n){"use strict";var t=n(157).isBoolean,i=n(135).argsToArray;e.exports=function(e){e.range.transform=function(){var r=i(arguments),n=r.length-1,o=r[n];return t(o)||r.push(!0),e.range.apply(e,r)}}},function(e,r,n){"use strict";var t=n(156).transform,i=(n(157).isBoolean,n(135).argsToArray);e.exports=function(e){e.subset.transform=function(){try{return e.subset.apply(e,i(arguments))}catch(r){throw t(r)}}}},function(e,r,n){"use strict";e.exports=function(e){function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.value=e instanceof r?e.value:e}function t(e,n){var t=Array.prototype.slice;r.prototype[e]="function"==typeof n?function(){var e=[this.value].concat(t.call(arguments,0));return new r(n.apply(this,e))}:new r(n)}var i=n(158);r.prototype.done=function(){return this.value},r.prototype.valueOf=function(){return this.value},r.prototype.toString=function(){return i.format(this.value)},r.createProxy=t;for(var o in e)e.hasOwnProperty(o)&&t(o,e[o]);return r}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=n(14),i=n(13),o=r.string.isString,a=i.isCollection;e.compile=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("compile",arguments.length,1);if(o(r))return t(r).compile(e);if(a(r))return i.deepMap(r,function(r){return t(r).compile(e)});throw new TypeError("String, array, or matrix expected")}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=n(14),i=n(13),o=r.string.isString,a=i.isCollection;e.eval=function(r,n){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("eval",arguments.length,1,2);if(n=n||{},o(r))return t(r).compile(e).eval(n);if(a(r))return i.deepMap(r,function(r){return t(r).compile(e).eval(n)});throw new TypeError("String, array, or matrix expected")}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(11);e.help=function(n){if(1!=arguments.length)throw new SyntaxError("Wrong number of arguments in function help ("+arguments.length+" provided, 1 expected)");var t=null;if(n instanceof String||"string"==typeof n)t=n;else{var i;for(i in e)if(e.hasOwnProperty(i)&&n===e[i]){t=i;break}}var o=e.expression.docs[t];if(!t||!o)throw new Error('No documentation found on "'+t+'"');return new r(e,o)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(14);e.parse=function(){return r.apply(r,arguments)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=(n(9),n(13)),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.abs=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("abs",arguments.length,1);if(a(r))return Math.abs(r);if(u(r))return Math.sqrt(r.re*r.re+r.im*r.im);if(r instanceof t)return r.abs();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.abs(r);throw new e.error.UnsupportedTypeError("abs",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=(n(9),n(10)),a=n(13),s=r["boolean"].isBoolean,u=r.number.isNumber,f=r.string.isString,c=i.isComplex,l=o.isUnit,p=a.isCollection;e.add=function m(r,n){if(2!=arguments.length)throw new e.error.ArgumentsError("add",arguments.length,2);if(u(r)){if(u(n))return r+n;if(c(n))return new i(r+n.re,n.im)}if(c(r)){if(c(n))return new i(r.re+n.re,r.im+n.im);if(u(n))return new i(r.re+n,r.im)}if(l(r)&&l(n)){if(null==r.value)throw new Error("Parameter x contains a unit with undefined value");if(null==n.value)throw new Error("Parameter y contains a unit with undefined value");if(!r.equalBase(n))throw new Error("Units do not match");var o=r.clone();return o.value+=n.value,o.fixPrefix=!1,o}if(r instanceof t)return u(n)?n=t.convert(n):(s(n)||null===n)&&(n=new t(n?1:0)),n instanceof t?r.plus(n):m(r.toNumber(),n);if(n instanceof t)return u(r)?r=t.convert(r):(s(r)||null===r)&&(r=new t(r?1:0)),r instanceof t?r.plus(n):m(r,n.toNumber());if(p(r)||p(n))return a.deepMap2(r,n,m);if(f(r)||f(n))return r+n;if(s(r)||null===r)return m(+r,n);if(s(n)||null===n)return m(r,+n);throw new e.error.UnsupportedTypeError("add",e["typeof"](r),e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,f=i.isComplex;e.ceil=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("ceil",arguments.length,1);if(a(r))return Math.ceil(r);if(f(r))return new i(Math.ceil(r.re),Math.ceil(r.im));if(r instanceof t)return r.ceil();if(u(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.ceil(r);throw new e.error.UnsupportedTypeError("ceil",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.cube=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cube",arguments.length,1);if(a(r))return r*r*r;if(u(r))return e.multiply(e.multiply(r,r),r);if(r instanceof t)return r.times(r).times(r);if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("cube",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){function r(e,r){var n=r.re*r.re+r.im*r.im;return 0!=n?new o((e.re*r.re+e.im*r.im)/n,(e.im*r.re-e.re*r.im)/n):new o(0!=e.re?e.re/0:0,0!=e.im?e.im/0:0)}var t=n(142),i=e.type.BigNumber,o=n(6),a=(n(9),n(10)),s=n(13),u=t.number.isNumber,f=t["boolean"].isBoolean,c=o.isComplex,l=a.isUnit,p=s.isCollection;e.divide=function m(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("divide",arguments.length,2);if(u(n)){if(u(t))return n/t;if(c(t))return r(new o(n,0),t)}if(c(n)){if(c(t))return r(n,t);if(u(t))return r(n,new o(t,0))}if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.div(t):m(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.div(t):m(n,t.toNumber());if(l(n)&&u(t)){var a=n.clone();return a.value/=t,a}if(p(n))return p(t)?e.multiply(n,e.inv(t)):s.deepMap2(n,t,m);if(p(t))return e.multiply(n,e.inv(t));if(f(n)||null===n)return m(+n,t);if(f(t)||null===t)return m(n,+t);throw new e.error.UnsupportedTypeError("divide",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(13);e.dotDivide=function(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("dotDivide",arguments.length,2);return r.deepMap2(n,t,e.divide)},e.edivide=function(){throw new Error("Function edivide is renamed to dotDivide")}}},function(e,r,n){"use strict";e.exports=function(e){var r=(n(142),n(13));e.dotMultiply=function(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("dotMultiply",arguments.length,2);return r.deepMap2(n,t,e.multiply)},e.emultiply=function(){throw new Error("Function emultiply is renamed to dotMultiply")}}},function(e,r,n){"use strict";e.exports=function(e){var r=(n(142),n(13));e.dotPow=function(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("dotPow",arguments.length,2);return r.deepMap2(n,t,e.pow)},e.epow=function(){throw new Error("Function epow is renamed to dotPow")}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=(n(9),n(13)),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.exp=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("exp",arguments.length,1);if(a(r))return Math.exp(r);if(u(r)){var n=Math.exp(r.re);return new i(n*Math.cos(r.im),n*Math.sin(r.im))}if(r instanceof t)return r.exp();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.exp(r);throw new e.error.UnsupportedTypeError("exp",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.fix=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("fix",arguments.length,1);if(a(r))return r>0?Math.floor(r):Math.ceil(r);if(u(r))return new i(r.re>0?Math.floor(r.re):Math.ceil(r.re),r.im>0?Math.floor(r.im):Math.ceil(r.im));if(r instanceof t)return r.isNegative()?r.ceil():r.floor();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("fix",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.floor=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("floor",arguments.length,1);if(a(r))return Math.floor(r);if(u(r))return new i(Math.floor(r.re),Math.floor(r.im));if(r instanceof t)return r.floor();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("floor",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){function r(e,r){if(!e.isInt()||!r.isInt())throw new Error("Parameters in function gcd must be integer numbers");for(var n=new i(0);!r.isZero();){var t=e.mod(r);e=r,r=t}return e.lt(n)?e.neg():e}var t=n(142),i=e.type.BigNumber,o=n(13),a=t.number.isNumber,s=t["boolean"].isBoolean,u=t.number.isInteger,f=o.isCollection;e.gcd=function c(){var n,t=arguments[0],l=arguments[1];if(2==arguments.length){if(a(t)&&a(l)){if(!u(t)||!u(l))throw new Error("Parameters in function gcd must be integer numbers");for(;0!=l;)n=t%l,t=l,l=n;return 0>t?-t:t}if(f(t)||f(l))return o.deepMap2(t,l,c);if(t instanceof i)return a(l)?l=i.convert(l):(s(l)||null===l)&&(l=new i(l?1:0)),l instanceof i?r(t,l):c(t.toNumber(),l);if(l instanceof i)return a(t)?t=i.convert(t):(s(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?r(t,l):c(t.toNumber(),l);if(s(t)||null===t)return c(+t,l);if(s(l)||null===l)return c(t,+l);throw new e.error.UnsupportedTypeError("gcd",e["typeof"](t),e["typeof"](l))}if(arguments.length>2){for(var p=1;p2){for(var m=1;m=0?Math.log(r):c(new i(r,0));if(u(r))return new i(Math.log(Math.sqrt(r.re*r.re+r.im*r.im)),Math.atan2(r.im,r.re));if(r instanceof t)return r.isNegative()?c(r.toNumber()):r.ln();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("log",e["typeof"](r))}if(2==arguments.length)return e.divide(c(r),c(n));throw new e.error.ArgumentsError("log",arguments.length,1,2)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.log10=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("log10",arguments.length,1);if(a(r))return r>=0?Math.log(r)/Math.LN10:c(new i(r,0));if(r instanceof t)return r.isNegative()?c(r.toNumber()):r.log();if(u(r))return new i(Math.log(Math.sqrt(r.re*r.re+r.im*r.im))/Math.LN10,Math.atan2(r.im,r.re)/Math.LN10);if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("log10",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){function r(e,r){if(r>0)return e-r*Math.floor(e/r);if(0==r)return e;throw new Error("Cannot calculate mod for a negative divisor")}var t=n(142),i=e.type.BigNumber,o=n(13),a=t.number.isNumber,s=t["boolean"].isBoolean,u=o.isCollection;e.mod=function f(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("mod",arguments.length,2);if(a(n)&&a(t))return r(n,t);if(n instanceof i)return a(t)?t=i.convert(t):(s(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.isZero()?n:n.mod(t):f(n.toNumber(),t);if(t instanceof i)return a(n)?n=i.convert(n):(s(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.isZero()?n:n.mod(t):f(n,t.toNumber());if(u(n)||u(t))return o.deepMap2(n,t,f);if(s(n)||null===n)return f(+n,t);if(s(t)||null===t)return f(n,+t);throw new e.error.UnsupportedTypeError("mod",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){for(var t=[],i=r.length,o=n[0].length,a=r[0].length,s=0;i>s;s++){t[s]=[];for(var u=0;o>u;u++){for(var f=null,c=0;a>c;c++){var l=e.multiply(r[s][c],n[c][u]);f=null===f?l:e.add(f,l)}t[s][u]=f}}var p=1===i&&1===o;return p?t[0][0]:t}function t(r,n){for(var t=[],i=n.length,o=n[0].length,a=0;o>a;a++){for(var s=null,u=0;i>u;u++){var f=e.multiply(r[u],n[u][a]);s=0===u?f:e.add(s,f)}t[a]=s}return 1===t.length?t[0]:t}function i(r,n){for(var t=[],i=r.length,o=r[0].length,a=0;i>a;a++){for(var s=null,u=0;o>u;u++){var f=e.multiply(r[a][u],n[u]);s=0===u?f:e.add(s,f)}t[a]=s}return 1===t.length?t[0]:t}function o(r,n){var t=r.length;if(!t)throw new Error("Cannot multiply two empty vectors");for(var i=0,o=0;t>o;o++)i=e.add(i,e.multiply(r[o],n[o]));return i}function a(e,r){return 0==e.im?0==r.im?new f(e.re*r.re,0):0==r.re?new f(0,e.re*r.im):new f(e.re*r.re,e.re*r.im):0==e.re?0==r.im?new f(0,e.im*r.re):0==r.re?new f(-e.im*r.im,0):new f(-e.im*r.im,e.im*r.re):0==r.im?new f(e.re*r.re,e.im*r.re):0==r.re?new f(-e.im*r.im,e.re*r.im):new f(e.re*r.re-e.im*r.im,e.re*r.im+e.im*r.re)}var s=n(142),u=e.type.BigNumber,f=n(6),c=n(9),l=n(10),p=n(13),m=s.array,h=s.number.isNumber,g=s["boolean"].isBoolean,d=f.isComplex,x=Array.isArray,y=l.isUnit;e.multiply=function w(n,s){var l;if(2!=arguments.length)throw new e.error.ArgumentsError("multiply",arguments.length,2);if(h(n)){if(h(s))return n*s;if(d(s))return a(new f(n,0),s);if(y(s))return l=s.clone(),l.value=null===l.value?l._normalize(n):l.value*n,l}if(d(n)){if(h(s))return a(n,new f(s,0));if(d(s))return a(n,s)}if(n instanceof u)return h(s)?s=u.convert(s):(g(s)||null===s)&&(s=new u(s?1:0)),s instanceof u?n.times(s):w(n.toNumber(),s);if(s instanceof u)return h(n)?n=u.convert(n):(g(n)||null===n)&&(n=new u(n?1:0)),n instanceof u?n.times(s):w(n,s.toNumber());if(y(n)&&h(s))return l=n.clone(),l.value=null===l.value?l._normalize(s):l.value*s,l;if(x(n)){if(x(s)){var v=m.size(n),b=m.size(s);if(1==v.length){if(1==b.length){if(v[0]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Length of A must match length of B (A is "+v[0]+", B is "+b[0]+v[0]+" != "+b[0]+")");return o(n,s)}if(2==b.length){if(v[0]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Length of A must match rows of B (A is "+v[0]+", B is "+b[0]+"x"+b[1]+", "+v[0]+" != "+b[0]+")");return t(n,s)}throw new Error("Can only multiply a 1 or 2 dimensional matrix (B has "+b.length+" dimensions)")}if(2==v.length){if(1==b.length){if(v[1]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Columns of A must match length of B (A is "+v[0]+"x"+v[0]+", B is "+b[0]+", "+v[1]+" != "+b[0]+")");return i(n,s)}if(2==b.length){if(v[1]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Columns of A must match rows of B (A is "+v[0]+"x"+v[1]+", B is "+b[0]+"x"+b[1]+", "+v[1]+" != "+b[0]+")");return r(n,s)}throw new Error("Can only multiply a 1 or 2 dimensional matrix (B has "+b.length+" dimensions)")}throw new Error("Can only multiply a 1 or 2 dimensional matrix (A has "+v.length+" dimensions)")}return s instanceof c?(l=w(n,s.valueOf()),x(l)?new c(l):l):p.deepMap2(n,s,w)}if(n instanceof c)return s instanceof c?(l=w(n.valueOf(),s.valueOf()),x(l)?new c(l):l):(l=w(n.valueOf(),s),x(l)?new c(l):l);if(x(s))return p.deepMap2(n,s,w);if(s instanceof c)return new c(p.deepMap2(n,s.valueOf(),w));if(g(n)||null===n)return w(+n,s);if(g(s)||null===s)return w(n,+s);throw new e.error.UnsupportedTypeError("multiply",e["typeof"](n),e["typeof"](s))}}},function(e,r,n){"use strict"; -e.exports=function(e){var r=n(142),t=n(135),i=e.type.BigNumber,o=n(6),a=n(9),s=(n(13),r.number.isNumber),u=r["boolean"].isBoolean,f=o.isComplex,c=Array.isArray;e.norm=function l(r,n){if(arguments.length<1||arguments.length>2)throw new e.error.ArgumentsError("abs",arguments.length,1,2);if(s(r))return Math.abs(r);if(f(r))return Math.sqrt(r.re*r.re+r.im*r.im);if(r instanceof i)return r.abs();if(u(r)||null===r)return Math.abs(r);if(c(r)){var o=t.size(r);if(null==n&&(n=2),1==o.length){if(n===Number.POSITIVE_INFINITY||"inf"===n){var p;return e.forEach(r,function(r){var n=e.abs(r);(!p||e.larger(n,p))&&(p=n)}),p}if(n===Number.NEGATIVE_INFINITY||"-inf"===n){var p;return e.forEach(r,function(r){var n=e.abs(r);(!p||e.smaller(n,p))&&(p=n)}),p}if("fro"===n)return l(r);if(s(n)&&!isNaN(n)){if(!e.equal(n,0)){var p=0;return e.forEach(r,function(r){p=e.add(e.pow(e.abs(r),n),p)}),e.pow(p,1/n)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}if(2==o.length){if(1==n){for(var m=[],h=0;h=0?Math.pow(n,t):r(new o(n,0),new o(t,0));if(p(t))return r(new o(n,0),t)}if(p(n)){if(u(t))return r(n,new o(t,0));if(p(t))return r(n,t)}if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.isInteger()&&!n.isNegative()?n.pow(t):m(n.toNumber(),t.toNumber()):m(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.isInteger()&&!n.isNegative()?n.pow(t):m(n.toNumber(),t.toNumber()):m(n,t.toNumber());if(c(n)){if(!u(t)||!l(t)||0>t)throw new TypeError("For A^b, b must be a positive integer (value is "+t+")");var h=s.size(n);if(2!=h.length)throw new Error("For A^b, A must be 2 dimensional (A has "+h.length+" dimensions)");if(h[0]!=h[1])throw new Error("For A^b, A must be square (size is "+h[0]+"x"+h[1]+")");for(var g=e.eye(h[0]).valueOf(),d=n;t>=1;)1==(1&t)&&(g=e.multiply(d,g)),t>>=1,d=e.multiply(d,d);return g}if(n instanceof a)return new a(m(n.valueOf(),t));if(f(n)||null===n)return m(+n,t);if(f(t)||null===t)return m(n,+t);throw new e.error.UnsupportedTypeError("pow",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){function r(e,r){var n=Math.pow(10,r);return Math.round(e*n)/n}var t=n(142),i=e.type.BigNumber,o=n(6),a=n(13),s=t.number.isNumber,u=t.number.isInteger,f=t["boolean"].isBoolean,c=o.isComplex,l=a.isCollection;e.round=function p(n,t){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("round",arguments.length,1,2);if(void 0==t){if(s(n))return Math.round(n);if(c(n))return new o(Math.round(n.re),Math.round(n.im));if(n instanceof i)return n.toDecimalPlaces(0);if(l(n))return a.deepMap(n,p);if(f(n)||null===n)return Math.round(n);throw new e.error.UnsupportedTypeError("round",e["typeof"](n))}if(!s(t)||!u(t)){if(!(t instanceof i)){if(f(t)||null===n)return p(n,+t);throw new TypeError("Number of decimals in function round must be an integer")}t=parseFloat(t.valueOf())}if(0>t||t>15)throw new Error("Number of decimals in function round must be in te range of 0-15");if(s(n))return r(n,t);if(c(n))return new o(r(n.re,t),r(n.im,t));if(n instanceof i)return n.toDecimalPlaces(t);if(l(n)||l(t))return a.deepMap2(n,t,p);if(f(n)||null===n)return p(+n,t);throw new e.error.UnsupportedTypeError("round",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number,s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isCollection;e.sign=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sign",arguments.length,1);if(s(r))return a.sign(r);if(f(r)){var n=Math.sqrt(r.re*r.re+r.im*r.im);return new i(r.re/n,r.im/n)}if(r instanceof t)return new t(r.cmp(0));if(c(r))return o.deepMap(r,l);if(u(r)||null===r)return a.sign(r);throw new e.error.UnsupportedTypeError("sign",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.sqrt=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sqrt",arguments.length,1);if(a(r))return r>=0?Math.sqrt(r):c(new i(r,0));if(u(r)){var n,l,p=Math.sqrt(r.re*r.re+r.im*r.im);return n=r.re>=0?.5*Math.sqrt(2*(p+r.re)):Math.abs(r.im)/Math.sqrt(2*(p-r.re)),l=r.re<=0?.5*Math.sqrt(2*(p-r.re)):Math.abs(r.im)/Math.sqrt(2*(p+r.re)),r.im>=0?new i(n,l):new i(n,-l)}if(r instanceof t)return r.isNegative()?c(r.toNumber()):r.sqrt();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("sqrt",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.square=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("square",arguments.length,1);if(a(r))return r*r;if(u(r))return e.multiply(r,r);if(r instanceof t)return r.times(r);if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return r*r;throw new e.error.UnsupportedTypeError("square",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=(n(9),n(10)),a=n(13),s=r["boolean"].isBoolean,u=r.number.isNumber,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.subtract=function p(r,n){if(2!=arguments.length)throw new e.error.ArgumentsError("subtract",arguments.length,2);if(u(r)){if(u(n))return r-n;if(f(n))return new i(r-n.re,-n.im)}else if(f(r)){if(u(n))return new i(r.re-n,r.im);if(f(n))return new i(r.re-n.re,r.im-n.im)}if(r instanceof t)return u(n)?n=t.convert(n):(s(n)||null===n)&&(n=new t(n?1:0)),n instanceof t?r.minus(n):p(r.toNumber(),n);if(n instanceof t)return u(r)?r=t.convert(r):(s(r)||null===r)&&(r=new t(r?1:0)),r instanceof t?r.minus(n):p(r,n.toNumber());if(c(r)&&c(n)){if(null==r.value)throw new Error("Parameter x contains a unit with undefined value");if(null==n.value)throw new Error("Parameter y contains a unit with undefined value");if(!r.equalBase(n))throw new Error("Units do not match");var o=r.clone();return o.value-=n.value,o.fixPrefix=!1,o}if(l(r)||l(n))return a.deepMap2(r,n,p);if(s(r)||null===r)return p(+r,n);if(s(n)||null===n)return p(r,+n);throw new e.error.UnsupportedTypeError("subtract",e["typeof"](r),e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(142),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t["boolean"].isBoolean,c=t.string.isString,l=o.isComplex,p=a.isUnit,m=s.isCollection;e.unaryMinus=function h(n){if(1!=arguments.length)throw new e.error.ArgumentsError("unaryMinus",arguments.length,1);if(u(n))return-n;if(l(n))return new o(-n.re,-n.im);if(n instanceof i)return n.neg();if(p(n)){var t=n.clone();return t.value=-n.value,t}if(m(n))return s.deepMap(n,h);if(f(n)||c(n)||null===n)return"bignumber"==r.number?new i(-n):-n;throw new e.error.UnsupportedTypeError("unaryMinus",e["typeof"](n))},e.unary=function(){throw new Error("Function unary is deprecated. Use unaryMinus instead.")}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(142),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t["boolean"].isBoolean,c=t.string.isString,l=o.isComplex,p=a.isUnit,m=s.isCollection;e.unaryPlus=function h(n){if(1!=arguments.length)throw new e.error.ArgumentsError("unaryPlus",arguments.length,1);if(u(n))return n;if(l(n))return n.clone();if(n instanceof i)return n;if(p(n))return n.clone();if(m(n))return s.deepMap(n,h);if(f(n)||c(n)||null===n)return"bignumber"==r.number?new i(+n):+n;throw new e.error.UnsupportedTypeError("unaryPlus",e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e,r){function t(e,n){for(var t,i,o,s=0,u=1,f=1,c=0;n;)i=Math.floor(e/n),o=e%n,t=s,s=u-i*s,u=t,t=f,f=c-i*f,c=t,e=n,n=o;var l;return l=0>e?[-e,-u,-c]:[e,e?u:0,c],"array"===r.matrix?l:new a(l)}function i(e,n){for(var t,i,o,u=new s(0),f=new s(0),c=new s(1),l=new s(1),p=new s(0);!n.isZero();)i=e.div(n).floor(),o=e.mod(n),t=f,f=c.minus(i.times(f)),c=t,t=l,l=p.minus(i.times(l)),p=t,e=n,n=o;var m;return m=e.lt(u)?[e.neg(),c.neg(),p.neg()]:[e,e.isZero()?0:c,p],"array"===r.matrix?m:new a(m)}var o=n(142),a=n(9),s=e.type.BigNumber,u=o.number.isNumber,f=o["boolean"].isBoolean,c=o.number.isInteger;e.xgcd=function l(r,n){if(2==arguments.length){if(u(r)&&u(n)){if(!c(r)||!c(n))throw new Error("Parameters in function xgcd must be integer numbers");return t(r,n)}if(r instanceof s)return u(n)?n=s.convert(n):(f(n)||null===n)&&(n=new s(n?1:0)),n instanceof s?i(r,n):l(r.toNumber(),n);if(n instanceof s)return u(r)?r=s.convert(r):(f(r)||null===r)&&(r=new s(r?1:0)),r instanceof s?i(r,n):l(r.toNumber(),n);if(f(r)||null===r)return l(+r,n);if(f(n)||null===n)return l(r,+n);throw new e.error.UnsupportedTypeError("xgcd",e["typeof"](r),e["typeof"](n))}throw new SyntaxError("Function xgcd expects two arguments")}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(142),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.compare=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("compare",arguments.length,2);if(u(n)&&u(t))return f(n,t,r.epsilon)?0:n>t?1:-1;if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?new i(n.cmp(t)):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?new i(n.cmp(t)):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.value>t.value?1:n.valuet?1:t>n?-1:0;if(c(n)||null===n)return g(+n,t);if(c(t)||null===t)return g(n,+t);if(p(n)||p(t))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("compare",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){function r(n,t){if(o(n)){if(o(t)){var i=n.length;if(i!==t.length)return!1;for(var a=0;i>a;a++)if(!r(n[a],t[a]))return!1;return!0}return!1}return o(t)?!1:e.equal(n,t)}var t=n(13),i=t.isCollection,o=Array.isArray;e.deepEqual=function(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("deepEqual",arguments.length,2);return i(n)||i(t)?r(n.valueOf(),t.valueOf()):e.equal(n,t)}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(142),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.equal=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("equal",arguments.length,2);if(u(n)){if(u(t))return f(n,t,r.epsilon);if(p(t))return f(n,t.re,r.epsilon)&&f(t.im,0,r.epsilon)}if(p(n)){if(u(t))return f(n.re,t,r.epsilon)&&f(n.im,0,r.epsilon);if(p(t))return f(n.re,t.re,r.epsilon)&&f(n.im,t.im,r.epsilon)}if(n instanceof i)return u(t)?t=i.convert(t):c(t)&&(t=new i(t?1:0)),t instanceof i?n.eq(t):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):c(n)&&(n=new i(n?1:0)),n instanceof i?n.eq(t):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.value==t.value}if(h(n)||h(t))return s.deepMap2(n,t,g);if(l(n)||l(t))return n==t;if(c(n))return g(+n,t);if(c(t))return g(n,+t);if(null===n)return null===t;if(null===t)return null===n;if(void 0===n)return void 0===t;if(void 0===t)return void 0===n;throw new e.error.UnsupportedTypeError("equal",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(142),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.larger=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("larger",arguments.length,2);if(u(n)&&u(t))return!f(n,t,r.epsilon)&&n>t;if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.gt(t):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.gt(t):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.value>t.value}if(h(n)||h(t))return s.deepMap2(n,t,g);if(l(n)||l(t))return n>t;if(c(n)||null===n)return g(+n,t);if(c(t)||null===t)return g(n,+t);if(p(n)||p(t))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("larger",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(142),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.largerEq=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("largerEq",arguments.length,2);if(u(n)&&u(t))return f(n,t,r.epsilon)||n>t;if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.gte(t):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.gte(t):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.value>=t.value}if(h(n)||h(t))return s.deepMap2(n,t,g);if(l(n)||l(t))return n>=t;if(c(n)||null===n)return g(+n,t);if(c(t)||null===t)return g(n,+t);if(p(n)||p(t))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("largerEq",e["typeof"](n),e["typeof"](t))},e.largereq=function(){throw new Error("Function largereq is renamed to largerEq")}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(142),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.smaller=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("smaller",arguments.length,2);if(u(n)&&u(t))return!f(n,t,r.epsilon)&&t>n;if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.lt(t):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.lt(t):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.valuen;if(c(n)||null===n)return g(+n,t);if(c(t)||null===t)return g(n,+t);if(p(n)||p(t))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("smaller",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(142),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.smallerEq=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("smallerEq",arguments.length,2);if(u(n)&&u(t))return f(n,t,r.epsilon)||t>n;if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.lte(t):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.lte(t):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.value<=t.value}if(h(n)||h(t))return s.deepMap2(n,t,g);if(l(n)||l(t))return t>=n;if(c(n)||null===n)return g(+n,t);if(c(t)||null===t)return g(n,+t);if(p(n)||p(t))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("smallerEq",e["typeof"](n),e["typeof"](t))},e.smallereq=function(){throw new Error("Function smallereq is renamed to smallerEq")}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(142),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.unequal=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("unequal",arguments.length,2);if(u(n)){if(u(t))return!f(n,t,r.epsilon);if(p(t))return!f(n,t.re,r.epsilon)||!f(t.im,0,r.epsilon)}if(p(n)){if(u(t))return!f(n.re,t,r.epsilon)||!f(n.im,0,r.epsilon);if(p(t))return!f(n.re,t.re,r.epsilon)||!f(n.im,t.im,r.epsilon)}if(n instanceof i)return u(t)?t=i.convert(t):c(t)&&(t=new i(t?1:0)),t instanceof i?!n.eq(t):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):c(n)&&(n=new i(n?1:0)),n instanceof i?!n.eq(t):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.value!=t.value}if(h(n)||h(t))return s.deepMap2(n,t,g);if(l(n)||l(t))return n!=t;if(c(n))return g(+n,t);if(c(t))return g(n,+t);if(null===n)return null!==t;if(null===t)return null!==n;if(void 0===n)return void 0!==t;if(void 0===t)return void 0!==n;throw new e.error.UnsupportedTypeError("unequal",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,f=i.isComplex;e.arg=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("arg",arguments.length,1);if(a(r))return Math.atan2(0,r);if(f(r))return Math.atan2(r.im,r.re);if(u(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);if(r instanceof t)return c(r.toNumber());throw new e.error.UnsupportedTypeError("arg",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.object,s=r.number.isNumber,u=r["boolean"].isBoolean,f=o.isCollection,c=i.isComplex;e.conj=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("conj",arguments.length,1);return s(r)?r:r instanceof t?new t(r):c(r)?new i(r.re,-r.im):f(r)?o.deepMap(r,l):u(r)||null===r?+r:a.clone(r)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.object,s=r.number.isNumber,u=r["boolean"].isBoolean,f=o.isCollection,c=i.isComplex;e.re=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("re",arguments.length,1);return s(r)?r:r instanceof t?new t(r):c(r)?r.re:f(r)?o.deepMap(r,l):u(r)||null===r?+r:a.clone(r)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,f=i.isComplex;e.im=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("im",arguments.length,1);return a(r)?0:r instanceof t?new t(0):f(r)?r.im:u(r)?o.deepMap(r,c):s(r)||null===r?0:0}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(13),o=i.isCollection,a=r.number.isNumber,s=r.string.isString,u=r["boolean"].isBoolean;e.bignumber=function f(r){if(arguments.length>1)throw new e.error.ArgumentsError("bignumber",arguments.length,0,1);if(r instanceof t||a(r)||s(r))return new t(r);if(u(r)||null===r)return new t(+r);if(o(r))return i.deepMap(r,f);if(0==arguments.length)return new t(0);throw new e.error.UnsupportedTypeError("bignumber",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(13),o=i.isCollection,a=r.number.isNumber,s=r.string.isString;e["boolean"]=function u(r){if(1!=arguments.length)throw new e.error.ArgumentsError("boolean",arguments.length,0,1);if("true"===r||r===!0)return!0;if("false"===r||r===!1||null===r)return!1;if(r instanceof Boolean)return 1==r;if(a(r))return 0!==r;if(r instanceof t)return!r.isZero();if(s(r)){var n=r.toLowerCase();if("true"===n)return!0;if("false"===n)return!1;var f=Number(r);if(""!=r&&!isNaN(f))return 0!==f}if(o(r))return i.deepMap(r,u);throw new SyntaxError(r.toString()+" is no valid boolean")}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=o.isCollection,s=r.number.isNumber,u=r.string.isString,f=i.isComplex;e.complex=function c(){switch(arguments.length){case 0:return new i(0,0);case 1:var r=arguments[0];if(s(r))return new i(r,0);if(r instanceof t)return new i(r.toNumber(),0);if(f(r))return r.clone();if(u(r)){var n=i.parse(r);if(n)return n;throw new SyntaxError('String "'+r+'" is no valid complex number')}if(a(r))return o.deepMap(r,c);if("object"==typeof r){if("re"in r&&"im"in r)return new i(r.re,r.im);if("r"in r&&"phi"in r)return i.fromPolar(r.r,r.phi)}throw new TypeError("Two numbers, single string or an fitting object expected in function complex");case 2:var l=arguments[0],p=arguments[1];if(l instanceof t&&(l=l.toNumber()),p instanceof t&&(p=p.toNumber()),s(l)&&s(p))return new i(l,p);throw new TypeError("Two numbers or a single string expected in function complex");default:throw new e.error.ArgumentsError("complex",arguments.length,0,2)}}}},function(e,r,n){"use strict";e.exports=function(e){var r=(n(142),e.type.BigNumber),t=n(8);e.index=function(){var e=Array.prototype.slice.apply(arguments).map(function(e){return e instanceof r?e.toNumber():Array.isArray(e)?e.map(function(e){return e instanceof r?e.toNumber():e}):e}),n=new t;return t.apply(n,e),n}}},function(e,r,n){"use strict";e.exports=function(e){var r=(n(142),n(9));e.matrix=function(n){if(arguments.length>1)throw new e.error.ArgumentsError("matrix",arguments.length,0,1);return new r(n)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(13),o=i.isCollection,a=r.number.isNumber,s=r["boolean"].isBoolean,u=r.string.isString;e.number=function f(r){switch(arguments.length){case 0:return 0;case 1:if(o(r))return i.deepMap(r,f);if(r instanceof t)return r.toNumber();if(u(r)){var n=Number(r);if(isNaN(n)&&(n=Number(r.valueOf())),isNaN(n))throw new SyntaxError(r.toString()+" is no valid number");return n}if(s(r)||null===r)return+r;if(a(r))return r;throw new e.error.UnsupportedTypeError("number",e["typeof"](r));default:throw new e.error.ArgumentsError("number",arguments.length,0,1)}}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(15);e.parser=function(){return new r(e)}}},function(e){"use strict";e.exports=function(e){e.select=function(r){return new e.chaining.Selector(r)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=n(13),i=r.number,o=r.number.isNumber,a=t.isCollection;e.string=function s(r){switch(arguments.length){case 0:return"";case 1:return o(r)?i.format(r):a(r)?t.deepMap(r,s):null===r?"null":r.toString();default:throw new e.error.ArgumentsError("string",arguments.length,0,1)}}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(10),o=n(13),a=o.isCollection,s=r.string.isString;e.unit=function u(r){switch(arguments.length){case 1:var n=arguments[0];if(n instanceof i)return n.clone();if(s(n)){if(i.isValuelessUnit(n))return new i(null,n);var f=i.parse(n);if(f)return f;throw new SyntaxError('String "'+n+'" is no valid unit')}if(a(r))return o.deepMap(r,u);throw new TypeError("A string or a number and string expected in function unit");case 2:return arguments[0]instanceof t?new i(arguments[0].toNumber(),arguments[1]):new i(arguments[0],arguments[1]);default:throw new e.error.ArgumentsError("unit",arguments.length,1,2)}}}},function(e,r,n){"use strict";e.exports=function(e){function r(n,t,i,o){if(i>o){if(n.length!=t.length)throw new e.error.DimensionError(n.length,t.length);for(var a=[],s=0;sn;n++){var g=arguments[n];if(g instanceof o&&(m=!0),n==a-1&&(f(g)||g instanceof i)){if(t=p,p=g.valueOf(),!c(p))throw new TypeError("Integer number expected for dimension");if(0>p)throw new e.error.IndexError(p);if(n>0&&p>t)throw new e.error.IndexError(p,t+1)}else{if(!l(g))throw new e.error.UnsupportedTypeError("concat",e["typeof"](g));var d=s.clone(g).valueOf(),x=u.size(g.valueOf());if(h[n]=d,t=p,p=x.length-1,n>0&&p!=t)throw new e.error.DimensionError(t+1,p+1)}}if(0==h.length)throw new SyntaxError("At least one matrix expected");for(var y=h.shift();h.length;)y=r(y,h.shift(),p,0);return m?new o(y):y}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){if(1==n)return o.clone(r[0][0]);if(2==n)return e.subtract(e.multiply(r[0][0],r[1][1]),e.multiply(r[1][0],r[0][1]));for(var t=function(r){var n,t,i=new Array(r.length),o=0;for(n=1;nt;t++)i[n][t]=0;for(t=n+1;ta;a++)i=e.multiply(t(i),r);return n%2==0?e.unaryMinus(i[0][0]):i[0][0]}var t=n(142),i=n(9),o=t.object,a=t.string;e.det=function(n){if(1!=arguments.length)throw new e.error.ArgumentsError("det",arguments.length,1);var t;switch(n instanceof i?t=n.size():n instanceof Array?(n=new i(n),t=n.size()):t=[],t.length){case 0:return o.clone(n);case 1:if(1==t[0])return o.clone(n.valueOf()[0]);throw new RangeError("Matrix must be square (size: "+a.format(t)+")");case 2:var s=t[0],u=t[1];if(s==u)return r(n.clone().valueOf(),s,u);throw new RangeError("Matrix must be square (size: "+a.format(t)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+a.format(t)+")")}}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(9),o=r.object,a=r.array.isArray,s=r.number.isNumber,u=r.number.isInteger;e.diag=function(r,n){var f,c,l,p;if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("diag",arguments.length,1,2);if(n){if(n instanceof t&&(n=n.toNumber()),!s(n)||!u(n))throw new TypeError("Second parameter in function diag must be an integer")}else n=0;var m,h=n>0?n:0,g=0>n?-n:0;if(r instanceof i)m=!1;else{if(!a(r))throw new TypeError("First parameter in function diag must be a Matrix or Array");r=new i(r),m=!0}var d=r.size();switch(d.length){case 1:c=r.valueOf();var x=new i,y=c[0]instanceof t?new t(0):0;for(x.resize([c.length+g,c.length+h],y),f=x.valueOf(),p=c.length,l=0;p>l;l++)f[l+g][l+h]=o.clone(c[l]);return m?x.valueOf():x;case 2:for(c=[],f=r.valueOf(),p=Math.min(d[0]-g,d[1]-h),l=0;p>l;l++)c[l]=o.clone(f[l+g][l+h]);return m?c:new i(c);default:throw new RangeError("Matrix for function diag must be 2 dimensional")}}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(142),i=e.type.BigNumber,o=n(9),a=n(13),s=t.number.isNumber,u=t.number.isInteger,f=Array.isArray;e.eye=function(n){var t=a.argsToArray(arguments),c=n instanceof o?!0:f(n)?!1:"matrix"===r.matrix;if(0==t.length)return c?new o:[];if(1==t.length)t[1]=t[0];else if(t.length>2)throw new e.error.ArgumentsError("eye",t.length,0,2);var l=t[0],p=t[1];if(l instanceof i&&(l=l.toNumber()),p instanceof i&&(p=p.toNumber()),!s(l)||!u(l)||1>l)throw new Error("Parameters in function eye must be positive integers");if(!s(p)||!u(p)||1>p)throw new Error("Parameters in function eye must be positive integers");var m=!1;t=t.map(function(e){return e instanceof i?(m=!0,e.toNumber()):e});var h=new o,g=m?new i(1):1,d=m?new i(0):0;h.resize(t,d);for(var x=e.min(t),y=h.valueOf(),w=0;x>w;w++)y[w][w]=g;return c?h:h.valueOf()}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=n(9),i=r.object,o=r.array,a=Array.isArray;e.flatten=function(r){if(1!==arguments.length)throw new e.error.ArgumentsError("flatten",arguments.length,1);if(r instanceof t){var n=i.clone(r.toArray()),s=o.flatten(n);return new t(s)}if(a(r))return o.flatten(i.clone(r));throw new e.error.UnsupportedTypeError("flatten",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n,t){var i,o,a,s,u;if(1==n){if(s=r[0][0],0==s)throw Error("Cannot calculate inverse, determinant is zero");return[[e.divide(1,s)]]}if(2==n){var f=e.det(r);if(0==f)throw Error("Cannot calculate inverse, determinant is zero");return[[e.divide(r[1][1],f),e.divide(e.unaryMinus(r[0][1]),f)],[e.divide(e.unaryMinus(r[1][0]),f),e.divide(r[0][0],f)]]}var c=r.concat();for(i=0;n>i;i++)c[i]=c[i].concat();for(var l=e.eye(n).valueOf(),p=0;t>p;p++){for(i=p;n>i&&0==c[i][p];)i++;if(i==n||0==c[i][p])throw Error("Cannot calculate inverse, determinant is zero");i!=p&&(u=c[p],c[p]=c[i],c[i]=u,u=l[p],l[p]=l[i],l[i]=u);var m=c[p],h=l[p];for(i=0;n>i;i++){var g=c[i],d=l[i];if(i!=p){if(0!=g[p]){for(a=e.divide(e.unaryMinus(g[p]),m[p]),o=p;t>o;o++)g[o]=e.add(g[o],e.multiply(a,m[o]));for(o=0;t>o;o++)d[o]=e.add(d[o],e.multiply(a,h[o]))}}else{for(a=m[p],o=p;t>o;o++)g[o]=e.divide(g[o],a);for(o=0;t>o;o++)d[o]=e.divide(d[o],a)}}}return l}var t=n(142),i=t.string,o=n(9);e.inv=function(n){if(1!=arguments.length)throw new e.error.ArgumentsError("inv",arguments.length,1);var t=e.size(n).valueOf();switch(t.length){case 0:return e.divide(1,n);case 1:if(1==t[0])return n instanceof o?new o([e.divide(1,n.valueOf()[0])]):[e.divide(1,n[0])];throw new RangeError("Matrix must be square (size: "+i.format(t)+")");case 2:var a=t[0],s=t[1];if(a==s)return n instanceof o?new o(r(n.valueOf(),a,s)):r(n,a,s);throw new RangeError("Matrix must be square (size: "+i.format(t)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+i.format(t)+")")}}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(142),i=e.type.BigNumber,o=n(9),a=n(13),s=t.array,u=Array.isArray;e.ones=function(e){var n=a.argsToArray(arguments),t=e instanceof o?!0:u(e)?!1:"matrix"===r.matrix;if(0==n.length)return t?new o:[];var f=!1;n=n.map(function(e){return e instanceof i?(f=!0,e.toNumber()):e});var c=[],l=f?new i(1):1;return c=s.resize(c,n,l),t?new o(c):c}}},function(e,r,n){"use strict";e.exports=function(e,r){function t(e,r,n){var t=[],i=e;if(n>0)for(;r>i;)t.push(i),i+=n;else if(0>n)for(;i>r;)t.push(i),i+=n;return t}function i(e,r,n){var t=[],i=e;if(n>0)for(;r>=i;)t.push(i),i+=n;else if(0>n)for(;i>=r;)t.push(i),i+=n;return t}function o(e,r,n){var t=[],i=e.clone(),o=new f(0);if(n.gt(o))for(;i.lt(r);)t.push(i),i=i.plus(n);else if(n.lt(o))for(;i.gt(r);)t.push(i),i=i.plus(n);return t}function a(e,r,n){var t=[],i=e.clone(),o=new f(0);if(n.gt(o))for(;i.lte(r);)t.push(i),i=i.plus(n);else if(n.lt(o))for(;i.gte(r);)t.push(i),i=i.plus(n);return t}function s(e){var n=e.split(":"),t=null;if("bignumber"===r.number)try{t=n.map(function(e){return new f(e)})}catch(i){return null}else{t=n.map(function(e){return Number(e)});var o=t.some(function(e){return isNaN(e)});if(o)return null}switch(t.length){case 2:return{start:t[0],end:t[1],step:1};case 3:return{start:t[0],end:t[2],step:t[1]};default:return null}}var u=n(142),f=e.type.BigNumber,c=n(9),l=(n(13),u["boolean"].isBoolean),p=u.string.isString,m=u.number.isNumber; -e.range=function(){var n,u,h,g=Array.prototype.slice.call(arguments),d=!1;switch(l(g[g.length-1])&&(d=g.pop()?!0:!1),g.length){case 1:if(!p(g[0]))throw new TypeError("Two or three numbers or a single string expected in function range");var x=s(g[0]);if(!x)throw new SyntaxError('String "'+g[0]+'" is no valid range');n=x.start,u=x.end,h=x.step;break;case 2:n=g[0],u=g[1],h=1;break;case 3:n=g[0],u=g[1],h=g[2];break;case 4:throw new TypeError("Parameter includeEnd must be a boolean");default:throw new e.error.ArgumentsError("range",arguments.length,2,4)}if(!(m(n)||n instanceof f))throw new TypeError("Parameter start must be a number");if(!(m(u)||u instanceof f))throw new TypeError("Parameter end must be a number");if(!(m(h)||h instanceof f))throw new TypeError("Parameter step must be a number");if(n instanceof f||u instanceof f||h instanceof f){var y=!0;n instanceof f||(n=f.convert(n)),u instanceof f||(u=f.convert(u)),h instanceof f||(h=f.convert(h)),n instanceof f&&u instanceof f&&h instanceof f||(y=!1,n instanceof f&&(n=n.toNumber()),u instanceof f&&(u=u.toNumber()),h instanceof f&&(h=h.toNumber()))}var w=y?d?a:o:d?i:t,v=w(n,u,h);return"array"===r.matrix?v:new c(v)}}},function(e,r,n){"use strict";e.exports=function(e,r){function t(r,n,t){if(void 0!==t){if(!c(t)||1!==t.length)throw new TypeError("Single character expected as defaultValue")}else t=" ";if(1!==n.length)throw new e.error.DimensionError(n.length,1);var i=n[0];if(!l(i)||!p(i))throw new TypeError("Invalid size, must contain positive integers (size: "+f.format(n)+")");if(r.length>i)return r.substring(0,i);if(r.lengtha;a++)o+=t;return o}return r}var i=n(142),o=e.type.BigNumber,a=n(9),s=i.array,u=i.object.clone,f=i.string,c=i.string.isString,l=i.number.isNumber,p=i.number.isInteger,m=s.isArray;e.resize=function(n,i,f){if(2!=arguments.length&&3!=arguments.length)throw new e.error.ArgumentsError("resize",arguments.length,2,3);var l=n instanceof a?!0:m(n)?!1:"array"!==r.matrix;if(n instanceof a&&(n=n.valueOf()),i instanceof a&&(i=i.valueOf()),i.length&&i[0]instanceof o&&(i=i.map(function(e){return e instanceof o?e.toNumber():e})),c(n))return t(n,i,f);if(0==i.length){for(;m(n);)n=n[0];return u(n)}m(n)||(n=[n]),n=u(n);var p=s.resize(n,i,f);return l?new a(p):p}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(142),i=e.type.BigNumber,o=n(6),a=n(10),s=n(9),u=t.array,f=t.number.isNumber,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit;e.size=function(n){if(1!=arguments.length)throw new e.error.ArgumentsError("size",arguments.length,1);var t="array"===r.matrix;if(f(n)||p(n)||m(n)||c(n)||null==n||n instanceof i)return t?[]:new s([]);if(l(n))return t?[n.length]:new s([n.length]);if(Array.isArray(n))return u.size(n);if(n instanceof s)return new s(n.size());throw new e.error.UnsupportedTypeError("size",e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=n(9),i=r.object,o=r.array,a=Array.isArray;e.squeeze=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("squeeze",arguments.length,1);if(a(r))return o.squeeze(i.clone(r));if(r instanceof t){var n=o.squeeze(r.toArray());return a(n)?new t(n):n}return i.clone(r)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){var i,o;if(l(r))return i=new s(r),o=i.subset(n),o.valueOf();if(r instanceof s)return r.subset(n);if(c(r))return t(r,n);throw new e.error.UnsupportedTypeError("subset",e["typeof"](r))}function t(r,n){if(!(n instanceof u))throw new TypeError("Index expected");if(1!=n.size().length)throw new e.error.DimensionError(n.size().length,1);var t=r.length;f.validateIndex(n.min()[0],t),f.validateIndex(n.max()[0],t);var i=n.range(0),o="";return i.forEach(function(e){o+=r.charAt(e)}),o}function i(r,n,t,i){var a;if(l(r))return a=new s(e.clone(r)),a.subset(n,t,i),a.valueOf();if(r instanceof s)return r.clone().subset(n,t,i);if(c(r))return o(r,n,t,i);throw new e.error.UnsupportedTypeError("subset",e["typeof"](r))}function o(r,n,t,i){if(!(n instanceof u))throw new TypeError("Index expected");if(1!=n.size().length)throw new e.error.DimensionError(n.size().length,1);if(void 0!==i){if(!c(i)||1!==i.length)throw new TypeError("Single character expected as defaultValue")}else i=" ";var o=n.range(0),a=o.size()[0];if(a!=t.length)throw new e.error.DimensionError(o.size()[0],t.length);var s=r.length;f.validateIndex(n.min()[0]),f.validateIndex(n.max()[0]);for(var l=[],p=0;s>p;p++)l[p]=r.charAt(p);if(o.forEach(function(e,r){l[e]=t.charAt(r)}),l.length>s)for(p=s-1,a=l.length;a>p;p++)l[p]||(l[p]=i);return l.join("")}var a=n(142),s=n(9),u=n(8),f=a.array,c=a.string.isString,l=Array.isArray;e.subset=function(){switch(arguments.length){case 2:return r(arguments[0],arguments[1]);case 3:case 4:return i(arguments[0],arguments[1],arguments[2],arguments[3]);default:throw new e.error.ArgumentsError("subset",arguments.length,2,4)}}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=n(9),i=r.object,o=r.string;e.transpose=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("transpose",arguments.length,1);var n=e.size(r).valueOf();switch(n.length){case 0:return i.clone(r);case 1:return i.clone(r);case 2:var a,s=n[1],u=n[0],f=r instanceof t,c=r.valueOf(),l=[],p=i.clone;if(0===s)throw new RangeError("Cannot transpose a 2D matrix with no rows(size: "+o.format(n)+")");for(var m=0;s>m;m++){a=l[m]=[];for(var h=0;u>h;h++)a[h]=p(c[h][m])}return f?new t(l):l;default:throw new RangeError("Matrix must be two dimensional (size: "+o.format(n)+")")}}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(142),i=e.type.BigNumber,o=n(9),a=n(13),s=t.array,u=Array.isArray;e.zeros=function(e){var n=a.argsToArray(arguments),t=e instanceof o?!0:u(e)?!1:"matrix"===r.matrix;if(0==n.length)return t?new o:[];var f=!1;n=n.map(function(e){return e instanceof i?(f=!0,e.toNumber()):e});var c=[],l=f?new i(0):0;return c=s.resize(c,n,l),t?new o(c):c}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(13),o=r.number.isNumber,a=r["boolean"].isBoolean,s=r.number.isInteger,u=i.isCollection;e.factorial=function c(r){var n,l;if(1!=arguments.length)throw new e.error.ArgumentsError("factorial",arguments.length,1);if(o(r)){if(!s(r)||0>r)throw new TypeError("Positive integer value expected in function factorial");for(n=r-1,l=r;n>1;)l*=n,n--;return 0==l&&(l=1),l}if(r instanceof t){if(!f(r))throw new TypeError("Positive integer value expected in function factorial");var p=new t(1);for(n=r.minus(p),l=r;n.gt(p);)l=l.times(n),n=n.minus(p);return l.equals(0)&&(l=p),l}if(a(r)||null===r)return 1;if(u(r))return i.deepMap(r,c);throw new e.error.UnsupportedTypeError("factorial",e["typeof"](r))};var f=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(176)(e);e.random=r("uniform").random}},function(e,r,n){"use strict";e.exports=function(e){var r=n(176)(e);e.randomInt=r("uniform").randomInt}},function(e,r,n){"use strict";e.exports=function(e){var r=n(176)(e);e.pickRandom=r("uniform").pickRandom}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=r.number.isNumber,o=r.number.isInteger;e.permutations=function(r,n){var s,u,f=arguments.length;if(f>2)throw new e.error.ArgumentsError("permutations",arguments.length,2);if(i(r)){if(!o(r)||0>r)throw new TypeError("Positive integer value expected in function permutations");if(1==f)return e.factorial(r);if(2==f&&i(n)){if(!o(n)||0>n)throw new TypeError("Positive integer value expected in function permutations");if(n>r)throw new TypeError("second argument k must be less than or equal to first argument n");for(s=1,u=r-n+1;r>=u;u++)s*=u;return s}}if(r instanceof t){if(void 0===n&&a(r))return e.factorial(r);if(n=t.convert(n),!(n instanceof t&&a(r)&&a(n)))throw new TypeError("Positive integer value expected in function permutations");if(n.gt(r))throw new TypeError("second argument k must be less than or equal to first argument n");for(s=new t(1),u=r.minus(n).plus(1);u.lte(r);u=u.plus(1))s=s.times(u);return s}throw new e.error.UnsupportedTypeError("permutations",e["typeof"](r))};var a=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=(n(13),r.number.isNumber),o=r.number.isInteger;e.combinations=function(r,n){var s,u,f,c,l=arguments.length;if(2!=l)throw new e.error.ArgumentsError("combinations",arguments.length,2);if(i(r)){if(!o(r)||0>r)throw new TypeError("Positive integer value enpected in function combinations");if(n>r)throw new TypeError("k must be less than or equal to n");for(s=Math.max(n,r-n),u=1,f=1;r-s>=f;f++)u=u*(s+f)/f;return u}if(r instanceof t){if(n=t.convert(n),!(n instanceof t&&a(r)&&a(n)))throw new TypeError("Positive integer value expected in function combinations");if(n.gt(r))throw new TypeError("k must be less than n in function combinations");for(s=r.minus(n),n.lt(s)&&(s=n),u=new t(1),f=new t(1),c=r.minus(s);f.lte(c);f=f.plus(1))u=u.times(s.plus(f)).dividedBy(f);return u}throw new e.error.UnsupportedTypeError("combinations",e["typeof"](r))};var a=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){return e.smaller(r,n)?r:n}function t(r){var n=void 0;if(i.deepForEach(r,function(r){(void 0===n||e.smaller(r,n))&&(n=r)}),void 0===n)throw new Error("Cannot calculate min of an empty array");return n}var i=(n(9),n(13)),o=i.isCollection;e.min=function(e){if(0==arguments.length)throw new SyntaxError("Function min requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return t(e);if(2==arguments.length)return i.reduce(arguments[0],arguments[1],r);throw new SyntaxError("Wrong number of parameters")}return t(arguments)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){return e.larger(r,n)?r:n}function t(r){var n=void 0;if(i.deepForEach(r,function(r){(void 0===n||e.larger(r,n))&&(n=r)}),void 0===n)throw new Error("Cannot calculate max of an empty array");return n}var i=(n(9),n(13)),o=i.isCollection;e.max=function(e){if(0==arguments.length)throw new SyntaxError("Function max requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return t(e);if(2==arguments.length)return i.reduce(arguments[0],arguments[1],r);throw new SyntaxError("Wrong number of parameters")}return t(arguments)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){var t=i.reduce(r,n,e.add),o=s(r)?a(r):r.size();return e.divide(t,o[n])}function t(r){var n=0,t=0;if(i.deepForEach(r,function(r){n=e.add(n,r),t++}),0===t)throw new Error("Cannot calculate mean of an empty array");return e.divide(n,t)}var i=(n(9),n(13)),o=i.isCollection,a=n(135).size,s=Array.isArray;e.mean=function(e){if(0==arguments.length)throw new SyntaxError("Function mean requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return t(e);if(2==arguments.length)return r(arguments[0],arguments[1]);throw new SyntaxError("Wrong number of parameters")}return t(arguments)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r){var n=u(r);n.sort(e.compare);var o=n.length;if(0==o)throw new Error("Cannot calculate median of an empty array");if(o%2==0){var s=n[o/2-1],f=n[o/2];if(!(a(s)||s instanceof i||s instanceof t))throw new e.error.UnsupportedTypeError("median",e["typeof"](s));if(!(a(f)||f instanceof i||f instanceof t))throw new e.error.UnsupportedTypeError("median",e["typeof"](f));return e.divide(e.add(s,f),2)}var c=n[(o-1)/2];if(!(a(c)||c instanceof i||c instanceof t))throw new e.error.UnsupportedTypeError("median",e["typeof"](c));return c}var t=(n(9),n(10)),i=e.type.BigNumber,o=n(13),a=n(4).isNumber,s=o.isCollection,u=n(135).flatten;e.median=function(e){if(0==arguments.length)throw new SyntaxError("Function median requires one or more parameters (0 provided)");if(s(e)){if(1==arguments.length)return r(e.valueOf());throw 2==arguments.length?new Error("median(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(Array.prototype.slice.call(arguments))}}},function(e,r,n){"use strict";e.exports=function(e){function r(r){var n=void 0;if(t.deepForEach(r,function(r){n=void 0===n?r:e.multiply(n,r)}),void 0===n)throw new Error("Cannot calculate prod of an empty array");return n}var t=(n(9),n(13)),i=t.isCollection;e.prod=function(e){if(0==arguments.length)throw new SyntaxError("Function prod requires one or more parameters (0 provided)");if(i(e)){if(1==arguments.length)return r(e);throw 2==arguments.length?new Error("prod(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(arguments)}}},function(e){"use strict";e.exports=function(e){e.std=function(){if(0==arguments.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");var r=e["var"].apply(null,arguments);return e.sqrt(r)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r){var n=void 0;if(t.deepForEach(r,function(r){n=void 0===n?r:e.add(n,r)}),void 0===n)throw new Error("Cannot calculate sum of an empty array");return n}var t=(n(9),n(13)),i=t.isCollection;e.sum=function(e){if(0==arguments.length)throw new SyntaxError("Function sum requires one or more parameters (0 provided)");if(i(e)){if(1==arguments.length)return r(e);throw 2==arguments.length?new Error("sum(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(arguments)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){var o=0,a=0;if(i.deepForEach(r,function(r){o=e.add(o,r),a++}),0===a)throw new Error("Cannot calculate var of an empty array");var s=e.divide(o,a);switch(o=0,i.deepForEach(r,function(r){var n=e.subtract(r,s);o=e.add(o,e.multiply(n,n))}),n){case"uncorrected":return e.divide(o,a);case"biased":return e.divide(o,a+1);case"unbiased":var u=o instanceof t?new t(0):0;return 1==a?u:e.divide(o,a-1);default:throw new Error('Unknown normalization "'+n+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}var t=(n(9),e.type.BigNumber),i=n(13),o=i.isCollection,a=n(158).isString,s="unbiased";e["var"]=function(e,n){if(0==arguments.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return r(e,s);if(2==arguments.length){if(!a(n))throw new Error("String expected for parameter normalization");return r(e,n)}throw new SyntaxError("Wrong number of parameters")}return r(arguments,s)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.acos=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acos",arguments.length,1);if(a(r))return r>=-1&&1>=r?Math.acos(r):c(new i(r,0));if(u(r)){var n=new i(r.im*r.im-r.re*r.re+1,-2*r.re*r.im),l=e.sqrt(n),p=new i(l.re-r.im,l.im+r.re),m=e.log(p);return new i(1.5707963267948966-m.im,m.re)}if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.acos(r);if(r instanceof t)return c(r.toNumber());throw new e.error.UnsupportedTypeError("acos",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.asin=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("asin",arguments.length,1);if(a(r))return r>=-1&&1>=r?Math.asin(r):c(new i(r,0));if(u(r)){var n=r.re,l=r.im,p=new i(l*l-n*n+1,-2*n*l),m=e.sqrt(p),h=new i(m.re-l,m.im+n),g=e.log(h);return new i(g.im,-g.re)}if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.asin(r);if(r instanceof t)return c(r.toNumber());throw new e.error.UnsupportedTypeError("asin",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.atan=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("atan",arguments.length,1);if(a(r))return Math.atan(r);if(u(r)){var n=r.re,l=r.im,p=n*n+(1-l)*(1-l),m=new i((1-l*l-n*n)/p,-2*n/p),h=e.log(m);return new i(-.5*h.im,.5*h.re)}if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.atan(r);if(r instanceof t)return c(r.toNumber());throw new e.error.UnsupportedTypeError("atan",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=(i.isComplex,o.isCollection);e.atan2=function f(r,n){if(2!=arguments.length)throw new e.error.ArgumentsError("atan2",arguments.length,2);if(a(r)&&a(n))return Math.atan2(r,n);if(u(r)||u(n))return o.deepMap2(r,n,f);if(s(r)||null===r)return f(+r,n);if(s(n)||null===n)return f(r,+n);if(r instanceof t)return f(r.toNumber(),n);if(n instanceof t)return f(r,n.toNumber());throw new e.error.UnsupportedTypeError("atan2",e["typeof"](r),e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.cos=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cos",arguments.length,1);if(s(r))return Math.cos(r);if(f(r))return new i(.5*Math.cos(r.re)*(Math.exp(-r.im)+Math.exp(r.im)),.5*Math.sin(r.re)*(Math.exp(-r.im)-Math.exp(r.im)));if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cos is no angle");return Math.cos(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return Math.cos(r);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("cos",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.cosh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cosh",arguments.length,1);if(s(r))return(Math.exp(r)+Math.exp(-r))/2;if(f(r)){var n=Math.exp(r.re),m=Math.exp(-r.re);return new i(Math.cos(r.im)*(n+m)/2,Math.sin(r.im)*(n-m)/2)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cosh is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("cosh",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.cot=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cot",arguments.length,1);if(s(r))return 1/Math.tan(r);if(f(r)){var n=Math.exp(-4*r.im)-2*Math.exp(-2*r.im)*Math.cos(2*r.re)+1;return new i(2*Math.exp(-2*r.im)*Math.sin(2*r.re)/n,(Math.exp(-4*r.im)-1)/n)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return 1/Math.tan(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(+r);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("cot",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.coth=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("coth",arguments.length,1);if(s(r)){var n=Math.exp(2*r);return(n+1)/(n-1)}if(f(r)){var m=Math.exp(2*r.re),h=m*Math.cos(2*r.im),g=m*Math.sin(2*r.im),d=(h-1)*(h-1)+g*g;return new i(((h+1)*(h-1)+g*g)/d,-2*g/d)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function coth is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("coth",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.csc=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("csc",arguments.length,1);if(s(r))return 1/Math.sin(r);if(f(r)){var n=.25*(Math.exp(-2*r.im)+Math.exp(2*r.im))-.5*Math.cos(2*r.re);return new i(.5*Math.sin(r.re)*(Math.exp(-r.im)+Math.exp(r.im))/n,.5*Math.cos(r.re)*(Math.exp(-r.im)-Math.exp(r.im))/n)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csc is no angle");return 1/Math.sin(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(+r);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("csc",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number,u=r.number.isNumber,f=r["boolean"].isBoolean,c=i.isComplex,l=o.isUnit,p=a.isCollection;e.csch=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("csch",arguments.length,1);if(u(r))return 0==r?Number.NaN:Math.abs(2/(Math.exp(r)-Math.exp(-r)))*s.sign(r);if(c(r)){var n=Math.exp(r.re),h=Math.exp(-r.re),g=Math.cos(r.im)*(n-h),d=Math.sin(r.im)*(n+h),x=g*g+d*d;return new i(2*g/x,-2*d/x)}if(l(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csch is no angle");return m(r.value)}if(p(r))return a.deepMap(r,m);if(f(r)||null===r)return m(r?1:0);if(r instanceof t)return m(r.toNumber());throw new e.error.UnsupportedTypeError("csch",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.sec=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sec",arguments.length,1);if(s(r))return 1/Math.cos(r);if(f(r)){var n=.25*(Math.exp(-2*r.im)+Math.exp(2*r.im))+.5*Math.cos(2*r.re);return new i(.5*Math.cos(r.re)*(Math.exp(-r.im)+Math.exp(r.im))/n,.5*Math.sin(r.re)*(Math.exp(r.im)-Math.exp(-r.im))/n)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sec is no angle");return 1/Math.cos(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(+r);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("sec",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.sech=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sech",arguments.length,1);if(s(r))return 2/(Math.exp(r)+Math.exp(-r));if(f(r)){var n=Math.exp(r.re),m=Math.exp(-r.re),h=Math.cos(r.im)*(n+m),g=Math.sin(r.im)*(n-m),d=h*h+g*g;return new i(2*h/d,-2*g/d)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sech is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("sech",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.sin=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sin",arguments.length,1);if(s(r))return Math.sin(r);if(f(r))return new i(.5*Math.sin(r.re)*(Math.exp(-r.im)+Math.exp(r.im)),.5*Math.cos(r.re)*(Math.exp(r.im)-Math.exp(-r.im)));if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sin is no angle");return Math.sin(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return Math.sin(r);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("sin",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.sinh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sinh",arguments.length,1);if(s(r))return(Math.exp(r)-Math.exp(-r))/2;if(f(r)){var n=Math.cos(r.im),m=Math.sin(r.im),h=Math.exp(r.re),g=Math.exp(-r.re);return new i(n*(h-g)/2,m*(h+g)/2)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sinh is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("sinh",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.tan=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("tan",arguments.length,1);if(s(r))return Math.tan(r);if(f(r)){var n=Math.exp(-4*r.im)+2*Math.exp(-2*r.im)*Math.cos(2*r.re)+1;return new i(2*Math.exp(-2*r.im)*Math.sin(2*r.re)/n,(1-Math.exp(-4*r.im))/n)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tan is no angle");return Math.tan(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return Math.tan(r);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("tan",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.tanh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("tanh",arguments.length,1);if(s(r)){var n=Math.exp(2*r);return(n-1)/(n+1)}if(f(r)){var m=Math.exp(2*r.re),h=m*Math.cos(2*r.im),g=m*Math.sin(2*r.im),d=(h+1)*(h+1)+g*g;return new i(((h-1)*(h+1)+g*g)/d,2*g/d)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tanh is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("tanh",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=n(10),i=n(13),o=r.string.isString,a=t.isUnit,s=i.isCollection;e.to=function u(r,n){if(2!=arguments.length)throw new e.error.ArgumentsError("to",arguments.length,2);if(a(r)&&(a(n)||o(n)))return r.to(n);if(s(r)||s(n))return i.deepMap2(r,n,u);throw new e.error.UnsupportedTypeError("to",e["typeof"](r),e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=r.object;e.clone=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("clone",arguments.length,1);return t.clone(r)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=r.string;e.format=function(r,n){var i=arguments.length;if(1!==i&&2!==i)throw new e.error.ArgumentsError("format",i,1,2);return t.format(r,n)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n,t){(t.override||void 0===e[r])&&(e[r]=t.wrap&&"function"==typeof n?function(){for(var r=[],t=0,i=arguments.length;i>t;t++){var o=arguments[t];r[t]=o&&o.valueOf()}return n.apply(e,r)}:n,e.chaining.Selector.createProxy(r,n))}function t(e){return"function"==typeof e||s(e)||u(e)||f(e)||c(e)}var i=n(142),o=n(6),a=n(10),s=i.number.isNumber,u=i.string.isString,f=o.isComplex,c=a.isUnit;e["import"]=function l(i,o){var a=arguments.length;if(1!=a&&2!=a)throw new e.error.ArgumentsError("import",a,1,2);var s,f={override:o&&o.override||!1,wrap:o&&o.wrap||!1};if(u(i)){var c=n(177)(i);l(c,o)}else{if("object"!=typeof i)throw new TypeError("Object or module name expected");for(s in i)if(i.hasOwnProperty(s)){var p=i[s];t(p)?r(s,p,f):l(p,o)}}}}},function(e,r,n){"use strict";e.exports=function(e){function r(e,r){var n=[],t=function(i,o){return Array.isArray(i)?i.map(function(e,r){return n[o]=r,t(e,o+1)}):r(i,n,e)};return t(e,0)}var t=n(9).isMatrix;e.map=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("map",arguments.length,2);if(Array.isArray(n))return r(n,i);if(t(n))return n.map(i);throw new e.error.UnsupportedTypeError("map",e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(142),t=r.string.isString;e.print=function(r,n,i){var o=arguments.length;if(2!=o&&3!=o)throw new e.error.ArgumentsError("print",o,2,3);if(!t(r))throw new TypeError("String expected as first parameter in function format");if(!(n instanceof Object))throw new TypeError("Object expected as second parameter in function format");return r.replace(/\$([\w\.]+)/g,function(r,o){for(var a=o.split("."),s=n[a.shift()];a.length&&void 0!==s;){var u=a.shift();s=u?s[u]:s+"."}return void 0!==s?t(s)?s:e.format(s,i):r})}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(9);e.sort=function(n,t){var i=null;if(1===arguments.length)i=e.compare;else{if(2!==arguments.length)throw new e.error.ArgumentsError("sort",arguments.length,1,2);if("function"==typeof t)i=t;else if("asc"===t)i=e.compare;else{if("desc"!==t)throw new e.error.UnsupportedTypeError("sort",e["typeof"](n),e["typeof"](t));i=function(r,n){return-e.compare(r,n)}}}if(n instanceof r){var o=n.size();if(o.length>1)throw new Error("Only one dimensional matrices supported");return new r(n.toArray().sort(i))}if(Array.isArray(n))return n.sort(i);throw new e.error.UnsupportedTypeError("sort",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(178),t=n(6),i=n(9),o=n(10),a=n(8),s=n(7),u=n(11);e["typeof"]=function(n){if(1!=arguments.length)throw new e.error.ArgumentsError("typeof",arguments.length,1);var f=r.type(n);if("object"===f){if(n instanceof t)return"complex";if(n instanceof i)return"matrix";if(n instanceof o)return"unit";if(n instanceof a)return"index";if(n instanceof s)return"range";if(n instanceof u)return"help";if(n instanceof e.type.BigNumber)return"bignumber";if(n instanceof e.chaining.Selector)return"selector"}return f}}},function(e,r,n){"use strict";e.exports=function(e){function r(e,r){var n=[],t=function(i,o){Array.isArray(i)?i.forEach(function(e,r){n[o]=r,t(e,o+1)}):r(i,n,e)};t(e,0)}var t=n(9).isMatrix;e.forEach=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("forEach",arguments.length,2);if(Array.isArray(n))return r(n,i);if(t(n))return n.forEach(i);throw new e.error.UnsupportedTypeError("forEach",e["typeof"](n))}}},function(e,r,n){"use strict";{var t=n(141),i=n(4).isNumber;n(4).digits}r.isBigNumber=function(e){return e instanceof t},r.format=function(e,n){if("function"==typeof n)return n(e);if(!e.isFinite())return e.isNaN()?"NaN":e.gt(0)?"Infinity":"-Infinity";var t="auto",o=void 0;switch(void 0!==n&&(n.notation&&(t=n.notation),i(n)?o=n:n.precision&&(o=n.precision)),t){case"fixed":return r.toFixed(e,o);case"exponential":return r.toExponential(e,o);case"auto":var a=.001,s=1e5;n&&n.exponential&&(void 0!==n.exponential.lower&&(a=n.exponential.lower),void 0!==n.exponential.upper&&(s=n.exponential.upper));{({toExpNeg:e.constructor.toExpNeg,toExpPos:e.constructor.toExpPos})}if(e.constructor.config({toExpNeg:Math.round(Math.log(a)/Math.LN10),toExpPos:Math.round(Math.log(s)/Math.LN10)}),e.isZero())return"0";var u,f=e.abs();return u=f.gte(a)&&f.lt(s)?e.toSignificantDigits(o).toFixed():r.toExponential(e,o),u.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],r=arguments[4];return"."!==e?e+r:r});default:throw new Error('Unknown notation "'+t+'". Choose "auto", "exponential", or "fixed".')}},r.toExponential=function(e,r){return void 0!==r?e.toExponential(r-1):e.toExponential()},r.toFixed=function(e,r){return e.toFixed(r||0)}},function(e,r,n){"use strict";function t(e){for(var r=[];m(e);)r.push(e.length),e=e[0];return r}function i(e,r,n){var t,o=e.length;if(o!=r[n])throw new l(o,r[n]);if(nt;t++){var s=e[t];if(!m(s))throw new l(r.length-1,r.length,"<");i(e[t],r,a)}}else for(t=0;o>t;t++)if(m(e[t]))throw new l(r.length+1,r.length,">") -}function o(e,n,t,i){var a,s,u=e.length,f=n[t],l=Math.min(u,f);if(e.length=f,ta;a++)s=e[a],m(s)||(s=[s],e[a]=s),o(s,n,p,i);for(a=l;f>a;a++)s=[],e[a]=s,o(s,n,p,i)}else{for(a=0;l>a;a++)for(;m(e[a]);)e[a]=e[a][0];if(i!==r.UNINITIALIZED)for(a=l;f>a;a++)e[a]=c.clone(i)}}function a(e,r,n){var t,i;if(r>n){var o=n+1;for(t=0,i=e.length;i>t;t++)e[t]=a(e[t],r,o)}else for(;m(e);)e=e[0];return e}function s(e,r,n){var t,i;if(m(e)){var o=n+1;for(t=0,i=e.length;i>t;t++)e[t]=s(e[t],r,o)}else for(var a=n;r>a;a++)e=[e];return e}var u=n(4),f=n(158),c=n(3),l=(n(178),n(138)),p=n(139),m=Array.isArray;r.size=function(e){var n=t(e);return r.validate(e,n),n},r.validate=function(e,r){var n=0==r.length;if(n){if(m(e))throw new l(e.length,0)}else i(e,r,0)},r.validateIndex=function(e,r){if(!u.isNumber(e)||!u.isInteger(e))throw new TypeError("Index must be an integer (value: "+e+")");if(0>e)throw new p(e);if(void 0!==r&&e>=r)throw new p(e,r)},r.UNINITIALIZED={},r.resize=function(e,r,n){if(!m(e)||!m(r))throw new TypeError("Array expected");if(0===r.length)throw new Error("Resizing to scalar is not supported");r.forEach(function(e){if(!u.isNumber(e)||!u.isInteger(e)||0>e)throw new TypeError("Invalid size, must contain positive integers (size: "+f.format(r)+")")});var t=void 0!==n?n:0;return o(e,r,0,t),e},r.squeeze=function(e,n){for(var t=n||r.size(e);m(e)&&1===e.length;)e=e[0],t.shift();for(var i=t.length;1===t[i-1];)i--;return ia;a++)e=[e],o.unshift(1);for(e=s(e,n,0);o.lengthi;i++)t=t.concat.apply(t,r[i]);r=t}return r},r.argsToArray=function(e){for(var r=[],n=0,t=e.length;t>n;n++)r[n]=e[n];return r},r.isArray=m},function(e){e.exports="0.27.1-SNAPSHOT"},function(e){"use strict";function r(e,n,t,i){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.fn=e,this.count=n,this.min=t,this.max=i,this.message="Wrong number of arguments in function "+e+" ("+n+" provided, "+t+(void 0!=i?"-"+i:"")+" expected)",this.stack=(new Error).stack}r.prototype=new Error,r.prototype.constructor=Error,r.prototype.name="ArgumentsError",e.exports=r},function(e){"use strict";function r(e,n,t){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.actual=e,this.expected=n,this.relation=t,this.message="Dimension mismatch ("+(Array.isArray(e)?"["+e.join(", ")+"]":e)+" "+(this.relation||"!=")+" "+(Array.isArray(n)?"["+n.join(", ")+"]":n)+")",this.stack=(new Error).stack}r.prototype=new RangeError,r.prototype.constructor=RangeError,r.prototype.name="DimensionError",e.exports=r},function(e){"use strict";function r(e,n,t){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.index=e,arguments.length<3?(this.min=0,this.max=n):(this.min=n,this.max=t),this.message=void 0!==this.min&&this.index=this.max?"Index out of range ("+this.index+" > "+(this.max-1)+")":"Index out of range ("+this.index+")",this.stack=(new Error).stack}r.prototype=new RangeError,r.prototype.constructor=RangeError,r.prototype.name="IndexError",e.exports=r},function(e){"use strict";function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.fn=e,this.types=Array.prototype.splice.call(arguments,1),this.message=e?0==this.types.length?"Unsupported type of argument in function "+e:"Function "+e+"("+this.types.join(", ")+") not supported":"Unsupported type of argument",this.stack=(new Error).stack}r.prototype=new TypeError,r.prototype.constructor=TypeError,r.prototype.name="UnsupportedTypeError",e.exports=r},function(e,r,n){var t;!function(i){"use strict";function o(e){for(var r,n,t=1,i=e.length,o=e[0]+"";i>t;t++){for(r=e[t]+"",n=A-r.length;n--;)r="0"+r;o+=r}for(i=o.length;"0"==o.charAt(--i););return o.slice(0,i+1||1)}function a(e,r,n,t){var i,o,a,s,u;for(o=1,a=e[0];a>=10;a/=10,o++);return a=r-o,0>a?(a+=A,i=0):(i=Math.ceil((a+1)/A),a%=A),o=N(10,A-a),u=e[i]%o|0,null==t?3>a?(0==a?u=u/100|0:1==a&&(u=u/10|0),s=4>n&&99999==u||n>3&&49999==u||5e4==u||0==u):s=(4>n&&u+1==o||n>3&&u+1==o/2)&&(e[i+1]/o/100|0)==N(10,a-2)-1||(u==o/2||0==u)&&0==(e[i+1]/o/100|0):4>a?(0==a?u=u/1e3|0:1==a?u=u/100|0:2==a&&(u=u/10|0),s=(t||4>n)&&9999==u||!t&&n>3&&4999==u):s=((t||4>n)&&u+1==o||!t&&n>3&&u+1==o/2)&&(e[i+1]/o/1e3|0)==N(10,a-3)-1,s}function s(e,r,n){var t=e.constructor;return null==r||((y=0>r||r>8)||0!==r&&(t.errors?parseInt:parseFloat)(r)!=r)&&!p(t,"rounding mode",r,n,0)?t.rounding:0|r}function u(e,r,n,t){var i=e.constructor;return!(y=(t||0)>r||r>=U+1)&&(0===r||(i.errors?parseInt:parseFloat)(r)==r)||p(i,"argument",r,n,0)}function f(e,r){var n,t,i,s,u,f,c,l=0,p=0,m=0,h=e.constructor,d=h.ONE,x=h.rounding,y=h.precision;if(!e.c||!e.c[0]||e.e>17)return new h(e.c?e.c[0]?e.s<0?0:1/0:d:e.s?e.s<0?0:e:0/0);for(null==r?(v=!1,u=y):u=r,c=new h(.03125);e.e>-2;)e=e.times(c),m+=5;for(t=Math.log(N(2,m))/Math.LN10*2+5|0,u+=t,n=s=f=new h(d),h.precision=u;;){if(s=g(s.times(e),u,1),n=n.times(++p),c=f.plus(z(s,n,u,1)),o(c.c).slice(0,u)===o(f.c).slice(0,u)){for(i=m;i--;)f=g(f.times(f),u,1);if(null!=r)return h.precision=y,f;if(!(3>l&&a(f.c,u-t,x,l)))return g(f,h.precision=y,x,v=!0);h.precision=u+=10,n=s=c=new h(d),p=0,l++}f=c}}function c(e,r,n,t){var i,a,s=e.constructor,u=(e=new s(e)).e;if(null==r?n=0:(g(e,++r,n),n=t?r:r+e.e-u),u=e.e,i=o(e.c),1==t||2==t&&(u>=r||u<=s.toExpNeg)){for(;i.length1&&(i=i.charAt(0)+"."+i.slice(1)),i+=(0>u?"e":"e+")+u}else{if(t=i.length,0>u){for(a=n-t;++u;i="0"+i);i="0."+i}else if(++u>t){for(a=n-u,u-=t;u--;i+="0");a>0&&(i+=".")}else a=n-t,t>u?i=i.slice(0,u)+"."+i.slice(u):a>0&&(i+=".");if(a>0)for(;a--;i+="0");}return e.s<0&&e.c[0]?"-"+i:i}function l(e){var r=e.length-1,n=r*A+1;if(r=e[r]){for(;r%10==0;r/=10,n--);for(r=e[0];r>=10;r/=10,n++);}return n}function p(e,r,n,t,i){if(e.errors){var o=new Error((t||["new Decimal","cmp","div","eq","gt","gte","lt","lte","minus","mod","plus","times","toFraction","pow","random","log","sqrt","toNearest","divToInt"][b?0>b?-b:b:0>1/b?1:0])+"() "+(["number type has more than 15 significant digits","LN10 out of digits"][r]||r+([y?" out of range":" not an integer"," not a boolean or binary digit"][i]||""))+": "+n);throw o.name="Decimal Error",y=b=0,o}}function m(e,r,n){var t=new e(e.ONE);for(v=!1;1&n&&(t=t.times(r)),n>>=1,n;)r=r.times(r);return v=!0,t}function h(e,r){var n,t,i,s,u,f,c,l,m,d,x,y=1,w=10,b=e,E=b.c,N=b.constructor,M=N.ONE,T=N.rounding,A=N.precision;if(b.s<0||!E||!E[0]||!b.e&&1==E[0]&&1==E.length)return new N(E&&!E[0]?-1/0:1!=b.s?0/0:E?0:b);if(null==r?(v=!1,c=A):c=r,N.precision=c+=w,n=o(E),t=n.charAt(0),!(Math.abs(s=b.e)<15e14))return b=new N(t+"."+n.slice(1)),c+2>B.length&&p(N,1,c+2,"ln"),b=h(b,c-w).plus(new N(B.slice(0,c+2)).times(s+"")),N.precision=A,null==r?g(b,A,T,v=!0):b;for(;7>t&&1!=t||1==t&&n.charAt(1)>3;)b=b.times(e),n=o(b.c),t=n.charAt(0),y++;for(s=b.e,t>1?(b=new N("0."+n),s++):b=new N(t+"."+n.slice(1)),d=b,l=u=b=z(b.minus(M),b.plus(M),c,1),x=g(b.times(b),c,1),i=3;;){if(u=g(u.times(x),c,1),m=l.plus(z(u,new N(i),c,1)),o(m.c).slice(0,c)===o(l.c).slice(0,c)){if(l=l.times(2),0!==s&&(c+2>B.length&&p(N,1,c+2,"ln"),l=l.plus(new N(B.slice(0,c+2)).times(s+""))),l=z(l,new N(y),c,1),null!=r)return N.precision=A,l;if(!a(l.c,c-w,T,f))return g(l,N.precision=A,T,v=!0);N.precision=c+=w,m=u=b=z(d.minus(M),d.plus(M),c,1),x=g(b.times(b),c,1),i=f=1}l=m,i+=2}}function g(e,r,n,t){var i,o,a,s,u,f,c,l,p=e.constructor;e:if(r!=o){if(!(c=e.c))return e;for(i=1,s=c[0];s>=10;s/=10,i++);if(o=r-i,0>o)o+=A,a=r,u=c[l=0],f=u/N(10,i-a-1)%10|0;else if(l=Math.ceil((o+1)/A),l>=c.length){if(!t)break e;for(;c.length<=l;c.push(0));u=f=0,i=1,o%=A,a=o-A+1}else{for(u=s=c[l],i=1;s>=10;s/=10,i++);o%=A,a=o-A+i,f=0>a?0:E(u/N(10,i-a-1)%10)}if(t=t||0>r||null!=c[l+1]||(0>a?u:u%N(10,i-a-1)),t=4>n?(f||t)&&(0==n||n==(e.s<0?3:2)):f>5||5==f&&(4==n||t||6==n&&(o>0?a>0?u/N(10,i-a):0:c[l-1])%10&1||n==(e.s<0?8:7)),1>r||!c[0])return c.length=0,t?(r-=e.e+1,c[0]=N(10,r%A),e.e=-r||0):c[0]=e.e=0,e;if(0==o?(c.length=l,s=1,l--):(c.length=l+1,s=N(10,A-o),c[l]=a>0?(u/N(10,i-a)%N(10,a)|0)*s:0),t)for(;;){if(0==l){for(o=1,a=c[0];a>=10;a/=10,o++);for(a=c[0]+=s,s=1;a>=10;a/=10,s++);o!=s&&(e.e++,c[0]==T&&(c[0]=1));break}if(c[l]+=s,c[l]!=T)break;c[l--]=0,s=1}for(o=c.length;0===c[--o];c.pop());}return v&&(e.e>p.maxE?e.c=e.e=null:e.ea,!i||!o)return u==f?0:!i^n?1:-1;if(u!=f)return u>f^n?1:-1;for(a=-1,s=(u=i.length)<(f=o.length)?u:f;++ao[a]^n?1:-1;return u==f?0:u>f^n?1:-1},O.decimalPlaces=O.dp=function(){var e,r,n=null;if(e=this.c){if(n=((r=e.length-1)-E(this.e/A))*A,r=e[r])for(;r%10==0;r/=10,n--);0>n&&(n=0)}return n},O.dividedBy=O.div=function(e,r){return b=2,z(this,new this.constructor(e,r))},O.dividedToIntegerBy=O.divToInt=function(e,r){var n=this,t=n.constructor;return b=18,g(z(n,new t(e,r),0,1,1),t.precision,t.rounding)},O.equals=O.eq=function(e,r){return b=3,0===this.cmp(e,r)},O.exponential=O.exp=function(){return f(this)},O.floor=function(){return g(new this.constructor(this),this.e+1,3)},O.greaterThan=O.gt=function(e,r){return b=4,this.cmp(e,r)>0},O.greaterThanOrEqualTo=O.gte=function(e,r){return b=5,r=this.cmp(e,r),1==r||0===r},O.isFinite=function(){return!!this.c},O.isInteger=O.isInt=function(){return!!this.c&&E(this.e/A)>this.c.length-2},O.isNaN=function(){return!this.s},O.isNegative=O.isNeg=function(){return this.s<0},O.isZero=function(){return!!this.c&&0==this.c[0]},O.lessThan=O.lt=function(e,r){return b=6,this.cmp(e,r)<0},O.lessThanOrEqualTo=O.lte=function(e,r){return b=7,r=this.cmp(e,r),-1==r||0===r},O.logarithm=O.log=function(e,r){var n,t,i,s,u,f,c,l,m,d=this,x=d.constructor,y=x.precision,w=x.rounding,E=5;if(null==e)e=new x(10),n=!0;else{if(b=15,e=new x(e,r),t=e.c,e.s<0||!t||!t[0]||!e.e&&1==t[0]&&1==t.length)return new x(0/0);n=e.eq(10)}if(t=d.c,d.s<0||!t||!t[0]||!d.e&&1==t[0]&&1==t.length)return new x(t&&!t[0]?-1/0:1!=d.s?0/0:t?0:1/0);if(u=n&&(s=t[0],t.length>1||1!=s&&10!=s&&100!=s&&1e3!=s&&1e4!=s&&1e5!=s&&1e6!=s),v=!1,c=y+E,l=c+10,f=h(d,c),n?(l>B.length&&p(x,1,l,"log"),i=new x(B.slice(0,l))):i=h(e,c),m=z(f,i,c,1),a(m.c,s=y,w))do if(c+=10,f=h(d,c),n?(l=c+10,l>B.length&&p(x,1,l,"log"),i=new x(B.slice(0,l))):i=h(e,c),m=z(f,i,c,1),!u){+o(m.c).slice(s+1,s+15)+1==1e14&&(m=g(m,y+1,0));break}while(a(m.c,s+=10,w));return v=!0,g(m,y,w)},O.minus=function(e,r){var n,t,i,o,a=this,s=a.constructor,u=a.s;if(b=8,e=new s(e,r),r=e.s,!u||!r)return new s(0/0);if(u!=r)return e.s=-r,a.plus(e);var f=a.c,c=e.c,l=E(e.e/A),p=E(a.e/A),m=s.precision,h=s.rounding;if(!p||!l){if(!f||!c)return f?(e.s=-r,e):new s(c?a:0/0);if(!f[0]||!c[0])return a=c[0]?(e.s=-r,e):new s(f[0]?a:3==h?-0:0),v?g(a,m,h):a}if(f=f.slice(),t=f.length,u=p-l){for((o=0>u)?(u=-u,n=f,t=c.length):(l=p,n=c),(p=Math.ceil(m/A))>t&&(t=p),u>(t+=2)&&(u=t,n.length=1),n.reverse(),r=u;r--;n.push(0));n.reverse()}else for((o=t<(i=c.length))&&(i=t),u=r=0;i>r;r++)if(f[r]!=c[r]){o=f[r]0)for(;r--;f[i++]=0);for(p=T-1,r=c.length;r>u;){if(f[--r]=10;r/=10,u++);return e.e=u+l*A-1,v?g(e,m,h):e},O.modulo=O.mod=function(e,r){var n,t,i=this,o=i.constructor,a=o.modulo;return b=9,e=new o(e,r),r=e.s,n=!i.c||!r||e.c&&!e.c[0],n||!e.c||i.c&&!i.c[0]?n?new o(0/0):g(new o(i),o.precision,o.rounding):(v=!1,9==a?(e.s=1,t=z(i,e,0,3,1),e.s=r,t.s*=r):t=z(i,e,0,a,1),t=t.times(e),v=!0,i.minus(t))},O.naturalLogarithm=O.ln=function(){return h(this)},O.negated=O.neg=function(){var e=new this.constructor(this);return e.s=-e.s||null,g(e)},O.plus=function(e,r){var n,t=this,i=t.constructor,o=t.s;if(b=10,e=new i(e,r),r=e.s,!o||!r)return new i(0/0);if(o!=r)return e.s=-r,t.minus(e);var a=t.c,s=e.c,u=E(e.e/A),f=E(t.e/A),c=i.precision,l=i.rounding;if(!f||!u){if(!a||!s)return new i(o/0);if(!a[0]||!s[0])return t=s[0]?e:new i(a[0]?t:0*o),v?g(t,c,l):t}if(a=a.slice(),o=f-u){for(0>o?(o=-o,n=a,r=s.length):(u=f,n=s,r=a.length),(f=Math.ceil(c/A))>r&&(r=f),o>++r&&(o=r,n.length=1),n.reverse();o--;n.push(0));n.reverse()}for(a.length-s.length<0&&(n=s,s=a,a=n),o=s.length,r=0,f=T;o;a[o]%=f)r=(a[--o]=a[o]+s[o]+r)/f|0;for(r&&(a.unshift(r),++u),o=a.length;0==a[--o];a.pop());for(e.c=a,o=1,r=a[0];r>=10;r/=10,o++);return e.e=o+u*A-1,v?g(e,c,l):e},O.precision=O.sd=function(e){var r=null,n=this;return e!=r&&e!==!!e&&1!==e&&0!==e&&p(n.constructor,"argument",e,"precision",1),n.c&&(r=l(n.c),e&&n.e+1>r&&(r=n.e+1)),r},O.round=function(){var e=this,r=e.constructor;return g(new r(e),e.e+1,r.rounding)},O.squareRoot=O.sqrt=function(){var e,r,n,t,i,a,s=this,u=s.c,f=s.s,c=s.e,l=s.constructor,p=new l(.5);if(1!==f||!u||!u[0])return new l(!f||0>f&&(!u||u[0])?0/0:u?s:1/0);for(v=!1,f=Math.sqrt(+s),0==f||f==1/0?(r=o(u),(r.length+c)%2==0&&(r+="0"),f=Math.sqrt(r),c=E((c+1)/2)-(0>c||c%2),f==1/0?r="1e"+c:(r=f.toExponential(),r=r.slice(0,r.indexOf("e")+1)+c),t=new l(r)):t=new l(f.toString()),n=(c=l.precision)+3;;)if(a=t,t=p.times(a.plus(z(s,a,n+2,1))),o(a.c).slice(0,n)===(r=o(t.c)).slice(0,n)){if(r=r.slice(n-3,n+1),"9999"!=r&&(i||"4999"!=r)){(!+r||!+r.slice(1)&&"5"==r.charAt(0))&&(g(t,c+1,1),e=!t.times(t).eq(s));break}if(!i&&(g(a,c+1,0),a.times(a).eq(s))){t=a;break}n+=4,i=1}return v=!0,g(t,c,l.rounding,e)},O.times=function(e,r){var n,t,i=this,o=i.constructor,a=i.c,s=(b=11,e=new o(e,r),e.c),u=E(i.e/A),f=E(e.e/A),c=i.s;if(r=e.s,e.s=c==r?1:-1,!((u||a&&a[0])&&(f||s&&s[0])))return new o(!c||!r||a&&!a[0]&&!s||s&&!s[0]&&!a?0/0:a&&s?0*e.s:e.s/0);for(t=u+f,c=a.length,r=s.length,r>c&&(n=a,a=s,s=n,f=c,c=r,r=f),f=c+r,n=[];f--;n.push(0));for(u=r-1;u>-1;u--){for(r=0,f=c+u;f>u;r=r/T|0)r=n[f]+s[u]*a[f-u-1]+r,n[f--]=r%T|0;r&&(n[f]=(n[f]+r)%T)}for(r&&++t,n[0]||n.shift(),f=n.length;!n[--f];n.pop());for(e.c=n,c=1,r=n[0];r>=10;r/=10,c++);return e.e=c+t*A-1,v?g(e,o.precision,o.rounding):e},O.toDecimalPlaces=O.toDP=function(e,r){var n=this;return n=new n.constructor(n),null!=e&&u(n,e,"toDP")?g(n,(0|e)+n.e+1,s(n,r,"toDP")):n},O.toExponential=function(e,r){var n=this;return n.c?c(n,null!=e&&u(n,e,"toExponential")?0|e:null,null!=e&&s(n,r,"toExponential"),1):n.toString()},O.toFixed=function(e,r){var n,t=this,i=t.constructor,o=i.toExpNeg,a=i.toExpPos;return null!=e&&(e=u(t,e,n="toFixed")?t.e+(0|e):null,r=s(t,r,n)),i.toExpNeg=-(i.toExpPos=1/0),null!=e&&t.c?(n=c(t,e,r),t.s<0&&t.c&&(t.c[0]?n.indexOf("-")<0&&(n="-"+n):n=n.replace("-",""))):n=t.toString(),i.toExpNeg=o,i.toExpPos=a,n},O.toFormat=function(e,r,n){var t=this.toFixed(r).split(".");return t[0].replace(/\B(?=(\d{3})+$)/g,null==e?",":e+"")+(t[1]?"."+(n?t[1].replace(/\d{5}\B/g,"$&"+n):t[1]):"")},O.toFraction=function(e){var r,n,t,i,a,s,u,f,c=this,m=c.constructor,h=r=new m(m.ONE),g=s=new m(0),d=c.c,x=new m(g);if(!d)return c.toString();for(t=x.e=l(d)-c.e-1,x.c[0]=N(10,(u=t%A)<0?A+u:u),(null==e||(!(b=12,a=new m(e)).s||(y=a.cmp(h)<0||!a.c)||m.errors&&E(a.e/A)0)&&(e=t>0?x:h),v=!1,a=new m(o(d)),u=m.precision,m.precision=t=d.length*A*2;f=z(a,x,0,1,1),n=r.plus(f.times(g)),1!=n.cmp(e);)r=g,g=n,h=s.plus(f.times(n=h)),s=n,x=a.minus(f.times(n=x)),a=n;return n=z(e.minus(r),g,0,1,1),s=s.plus(n.times(h)),r=r.plus(n.times(g)),s.s=h.s=c.s,i=z(h,g,t,1).minus(c).abs().cmp(z(s,r,t,1).minus(c).abs())<1?[h+"",g+""]:[s+"",r+""],v=!0,m.precision=u,i},O.toNearest=function(e,r){var n=this,t=n.constructor;return n=new t(n),null==e?(e=new t(t.ONE),r=t.rounding):(b=17,e=new t(e),r=s(n,r,"toNearest")),e.c?n.c&&(e.c[0]?(v=!1,n=z(n,e,0,4>r?[4,5,7,8][r]:r,1).times(e),v=!0,g(n)):n.c=[n.e=0]):n.s&&(e.s&&(e.s=n.s),n=e),n},O.toNumber=function(){var e=this;return+e||(e.s?0*e.s:0/0)},O.toPower=O.pow=function(e,r){var n,t,i,s,u=this,c=u.constructor,l=u.s,p=(b=13,+(e=new c(e,r))),d=0>p?-p:p,x=c.precision,y=c.rounding;if(!u.c||!e.c||(i=!u.c[0])||!e.c[0])return new c(N(i?0*l:+u,p));if(u=new c(u),n=u.c.length,!u.e&&u.c[0]==u.s&&1==n)return u;if(r=e.c.length-1,e.e||e.c[0]!=e.s||r)if(t=E(e.e/A),i=t>=r,!i&&0>l)s=new c(0/0);else{if(i&&q>n*A*d){if(s=m(c,u,d),e.s<0)return c.ONE.div(s)}else{if(l=0>l&&1&e.c[Math.max(t,r)]?-1:1,r=N(+u,p),t=0!=r&&isFinite(r)?new c(r+"").e:E(p*(Math.log("0."+o(u.c))/Math.LN10+u.e+1)),t>c.maxE+1||t0?l/0:0);v=!1,c.rounding=u.s=1,d=Math.min(12,(t+"").length),s=f(e.times(h(u,x+d)),x),s=g(s,x+5,1),a(s.c,x,y)&&(t=x+10,s=g(f(e.times(h(u,t+d)),t),t+5,1),+o(s.c).slice(x+1,x+15)+1==1e14&&(s=g(s,x+1,0))),s.s=l,v=!0,c.rounding=y}s=g(s,x,y)}else s=g(u,x,y);return s},O.toPrecision=function(e,r){var n=this;return null!=e&&u(n,e,"toPrecision",1)&&n.c?c(n,0|--e,s(n,r,"toPrecision"),2):n.toString()},O.toSignificantDigits=O.toSD=function(e,r){var n=this,t=n.constructor;return n=new t(n),null!=e&&u(n,e,"toSD",1)?g(n,0|e,s(n,r,"toSD")):g(n,t.precision,t.rounding)},O.toString=function(e){var r,n,t,i=this,a=i.constructor,s=i.e;if(null===s)n=i.s?"Infinity":"NaN";else{if(e===r&&(s<=a.toExpNeg||s>=a.toExpPos))return c(i,null,a.rounding,1);if(n=o(i.c),0>s){for(;++s;n="0"+n);n="0."+n}else if(t=n.length,s>0)if(++s>t)for(s-=t;s--;n+="0");else t>s&&(n=n.slice(0,s)+"."+n.slice(s));else if(r=n.charAt(0),t>1)n=r+"."+n.slice(1);else if("0"==r)return r;if(null!=e)if((y=!(e>=2&&65>e))||e!=(0|e)&&a.errors)p(a,"base",e,"toString",0);else if(n=d(a,n,0|e,10,i.s),"0"==n)return n}return i.s<0?"-"+n:n},O.truncated=O.trunc=function(){return g(new this.constructor(this),this.e+1,1)},O.valueOf=O.toJSON=function(){return this.toString()},d=function(){function e(e,r,n){for(var t,i,o=[0],a=0,s=e.length;s>a;){for(i=o.length;i--;o[i]*=r);for(o[t=0]+=S.indexOf(e.charAt(a++));tn-1&&(null==o[t+1]&&(o[t+1]=0),o[t+1]+=o[t]/n|0,o[t]%=n)}return o.reverse()}return function(r,n,t,i,o){var a,s,u,f,c,l,p=n.indexOf("."),h=r.precision,g=r.rounding;for(37>i&&(n=n.toLowerCase()),p>=0&&(n=n.replace(".",""),l=new r(i),f=m(r,l,n.length-p),l.c=e(f.toFixed(),10,t),l.e=l.c.length),c=e(n,i,t),a=s=c.length;0==c[--s];c.pop());if(!c[0])return"0";if(0>p?a--:(f.c=c,f.e=a,f.s=o,f=z(f,l,h,g,0,t),c=f.c,u=f.r,a=f.e),p=c[h],s=t/2,u=u||null!=c[h+1],4>g?(null!=p||u)&&(0==g||g==(f.s<0?3:2)):p>s||p==s&&(4==g||u||6==g&&1&c[h-1]||g==(f.s<0?8:7)))for(c.length=h,--t;++c[--h]>t;)c[h]=0,h||(++a,c.unshift(1));else c.length=h;for(s=c.length;!c[--s];);for(p=0,n="";s>=p;n+=S.charAt(c[p++]));if(0>a){for(;++a;n="0"+n);n="0."+n}else if(p=n.length,++a>p)for(a-=p;a--;n+="0");else p>a&&(n=n.slice(0,a)+"."+n.slice(a));return n}}();var z=function(){function e(e,r,n){var t,i=0,o=e.length;for(e=e.slice();o--;)t=e[o]*r+i,e[o]=t%n|0,i=t/n|0;return i&&e.unshift(i),e}function r(e,r,n,t){var i,o;if(n!=t)o=n>t?1:-1;else for(i=o=0;n>i;i++)if(e[i]!=r[i]){o=e[i]>r[i]?1:-1;break}return o}function n(e,r,n,t){for(var i=0;n--;)e[n]-=i,i=e[n]1;e.shift());}return function(t,i,o,a,s,u){var f,c,l,p,m,h,d,x,y,w,v,b,N,M,S,O,C,U,q,B=t.constructor,z=t.s==i.s?1:-1,I=t.c,_=i.c;if(!(I&&I[0]&&_&&_[0]))return new B(t.s&&i.s&&(I?!_||I[0]!=_[0]:_)?I&&0==I[0]||!_?0*z:z/0:0/0);for(u?(p=1,c=t.e-i.e):(u=T,p=A,c=E(t.e/p)-E(i.e/p)),U=_.length,O=I.length,y=new B(z),w=y.c=[],l=0;_[l]==(I[l]||0);l++);if(_[l]>(I[l]||0)&&c--,null==o?(z=o=B.precision,a=B.rounding):z=s?o+(t.e-i.e)+1:o,0>z)w.push(1),m=!0;else{if(z=z/p+2|0,l=0,1==U){for(h=0,_=_[0],z++;(O>l||h)&&z--;l++)M=h*u+(I[l]||0),w[l]=M/_|0,h=M%_|0;m=h||O>l}else{for(h=u/(_[0]+1)|0,h>1&&(_=e(_,h,u),I=e(I,h,u),U=_.length,O=I.length),S=U,v=I.slice(0,U),b=v.length;U>b;v[b++]=0);q=_.slice(),q.unshift(0),C=_[0],_[1]>=u/2&&C++;do h=0,f=r(_,v,U,b),0>f?(N=v[0],U!=b&&(N=N*u+(v[1]||0)),h=N/C|0,h>1?(h>=u&&(h=u-1),d=e(_,h,u),x=d.length,b=v.length,f=r(d,v,x,b),1==f&&(h--,n(d,x>U?q:_,x,u))):(0==h&&(f=h=1),d=_.slice()),x=d.length,b>x&&d.unshift(0),n(v,d,b,u),-1==f&&(b=v.length,f=r(_,v,U,b),1>f&&(h++,n(v,b>U?q:_,b,u))),b=v.length):0===f&&(h++,v=[0]),w[l++]=h,f&&v[0]?v[b++]=I[S]||0:(v=[I[S]],b=1);while((S++=10;z/=10,l++);y.e=l+c*p-1,g(y,s?o+y.e+1:o,a,m)}return y}}();x=function(){function e(e){var r,n,t,i=this,o="config",a=i.errors?parseInt:parseFloat;return e==n||"object"!=typeof e&&!p(i,"object expected",e,o)?i:((t=e[r="precision"])!=n&&((y=1>t||t>U)||a(t)!=t?p(i,r,t,o,0):i[r]=0|t),(t=e[r="rounding"])!=n&&((y=0>t||t>8)||a(t)!=t?p(i,r,t,o,0):i[r]=0|t),(t=e[r="toExpNeg"])!=n&&((y=-C>t||t>0)||a(t)!=t?p(i,r,t,o,0):i[r]=E(t)),(t=e[r="toExpPos"])!=n&&((y=0>t||t>C)||a(t)!=t?p(i,r,t,o,0):i[r]=E(t)),(t=e[r="minE"])!=n&&((y=-C>t||t>0)||a(t)!=t?p(i,r,t,o,0):i[r]=E(t)),(t=e[r="maxE"])!=n&&((y=0>t||t>C)||a(t)!=t?p(i,r,t,o,0):i[r]=E(t)),(t=e[r="errors"])!=n&&(t===!!t||1===t||0===t?(y=b=0,i[r]=!!t):p(i,r,t,o,1)),(t=e[r="crypto"])!=n&&(t===!!t||1===t||0===t?i[r]=!(!t||!w||"object"!=typeof w):p(i,r,t,o,1)),(t=e[r="modulo"])!=n&&((y=0>t||t>9)||a(t)!=t?p(i,r,t,o,0):i[r]=0|t),i)}function r(e){return new this(e).exp()}function n(e){return new this(e).ln()}function t(e,r){return new this(e).log(r)}function i(e,r,n){var t,i,o=0;for("[object Array]"==M.call(r[0])&&(r=r[0]),t=new e(r[0]);++oi;)t=r[i],t>=429e7?r[i]=w.getRandomValues(new Uint32Array(1))[0]:o[i++]=t%1e7;else if(w&&w.randomBytes){for(r=w.randomBytes(n*=4);n>i;)t=r[i]+(r[i+1]<<8)+(r[i+2]<<16)+((127&r[i+3])<<24),t>=214e7?w.randomBytes(4).copy(r,i):(o.push(t%1e7),i+=4);i=n/4}else p(a,"crypto unavailable",w,"random");if(!i)for(;n>i;)o[i++]=1e7*Math.random()|0;for(n=o[--i],e%=A,n&&e&&(t=N(10,A-e),o[i]=(n/t|0)*t);0===o[i];i--)o.pop();if(0>i)o=[n=0];else{for(n=-1;0===o[0];)o.shift(),n-=A;for(i=1,t=o[0];t>=10;)t/=10,i++;A>i&&(n-=A-i)}return s.e=n,s.c=o,s}function c(e){return new this(e).sqrt()}function l(i){function u(e,r){var n=this;if(!(n instanceof u))return p(u,"Decimal called without new",e),new u(e,r);if(e instanceof u){if(null==r)return b=0,n.constructor=e.constructor,n.s=e.s,n.e=e.e,void(n.c=(e=e.c)?e.slice():e);if(10==r)return g(new u(e),u.precision,u.rounding);e+=""}return m(n.constructor=u,n,e,r)}return u.precision=20,u.rounding=4,u.modulo=1,u.toExpNeg=-7,u.toExpPos=21,u.minE=-C,u.maxE=C,u.errors=!0,u.crypto=!1,u.prototype=O,u.ONE=new u(1),u.ROUND_UP=0,u.ROUND_DOWN=1,u.ROUND_CEIL=2,u.ROUND_FLOOR=3,u.ROUND_HALF_UP=4,u.ROUND_HALF_DOWN=5,u.ROUND_HALF_EVEN=6,u.ROUND_HALF_CEIL=7,u.ROUND_HALF_FLOOR=8,u.EUCLID=9,u.config=e,u.constructor=l,u.exp=r,u.ln=n,u.log=t,u.max=o,u.min=a,u.pow=s,u.sqrt=c,u.random=f,null!=i&&u.config(i),u}var m=function(){var e=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,r=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")};return function(n,t,i,o){var a,s,u,f,c,l;if("string"!=typeof i&&(i=(f="number"==typeof i||"[object Number]"==M.call(i))&&0===i&&0>1/i?"-0":i+""),c=i,o==s&&e.test(i))t.s="-"==i.charAt(0)?(i=i.slice(1),-1):1;else{if(10==o)return g(new n(i),n.precision,n.rounding);if(i=r.call(i).replace(/^\+(?!-)/,""),t.s="-"==i.charAt(0)?(i=i.replace(/^-(?!-)/,""),-1):1,o!=s?o!=(0|o)&&n.errors||(y=!(o>=2&&65>o))?(p(n,"base",o,0,0),l=e.test(i)):(a="["+S.slice(0,o=0|o)+"]+",i=i.replace(/\.$/,"").replace(/^\./,"0."),(l=new RegExp("^"+a+"(?:\\."+a+")?$",37>o?"i":"").test(i))?(f&&(i.replace(/^0\.0*|\./,"").length>15&&p(n,0,c),f=!f),i=d(n,i,10,o,t.s)):"Infinity"!=i&&"NaN"!=i&&(p(n,"not a base "+o+" number",c),i="NaN")):l=e.test(i),!l)return t.c=t.e=null,"Infinity"!=i&&("NaN"!=i&&p(n,"not a number",c),t.s=null),b=0,t}for((s=i.indexOf("."))>-1&&(i=i.replace(".","")),(u=i.search(/e/i))>0?(0>s&&(s=u),s+=+i.slice(u+1),i=i.substring(0,u)):0>s&&(s=i.length),u=0;"0"==i.charAt(u);u++);for(o=i.length;"0"==i.charAt(--o););if(i=i.slice(u,o+1)){if(o=i.length,f&&o>15&&p(n,0,c),t.e=s=s-u-1,t.c=[],u=(s+1)%A,0>s&&(u+=A),o>u){for(u&&t.c.push(+i.slice(0,u)),o-=A;o>u;)t.c.push(+i.slice(u,u+=A));i=i.slice(u),u=A-i.length}else u-=o;for(;u--;i+="0");t.c.push(+i),v&&(t.e>n.maxE?t.c=t.e=null:t.et;t++)r=r.concat(n[t].find(e));return r},t.prototype.toString=function(){return o.format(this.nodes)},t.prototype.toTex=function(e){e=e||"bmatrix";var r="\\begin{"+e+"}";return this.nodes.forEach(function(e){r+=e.nodes?e.nodes.map(function(e){return e.toTex()}).join("&"):e.toTex(),r+="\\\\"}),r+="\\end{"+e+"}"},e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!u(e))throw new TypeError('String expected for parameter "name"');if(!(r instanceof i))throw new TypeError('Node expected for parameter "expr"');if(e in a)throw new Error('Illegal symbol name, "'+e+'" is a reserved keyword');this.name=e,this.expr=r}var i=n(155),o=n(143),a=n(280),s=n(281),u=n(158).isString;t.prototype=new i,t.prototype.type="AssignmentNode",t.prototype._compile=function(e){return'scope["'+this.name+'"] = '+this.expr._compile(e)},t.prototype.find=function(e){var r=[];return this.match(e)&&r.push(this),r=r.concat(this.expr.find(e))},t.prototype.toString=function(){return this.name+" = "+this.expr.toString()},t.prototype.toTex=function(){var e;return this.expr instanceof o&&(e=["\\mathbf{","}"]),s.addBraces(s.toSymbol(this.name),e)+"="+s.addBraces(this.expr.toTex())},e.exports=t},function(e,r,n){"use strict";function t(){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");this.params=[]}var i=n(155),o=n(12),a=n(157).isBoolean;t.prototype=new i,t.prototype.type="BlockNode",t.prototype.add=function(e,r){if(void 0===r&&(r=!0),!(e instanceof i))throw new TypeError('Node expected for parameter "expr"');if(!a(r))throw new TypeError('Boolean expected for parameter "visible"');var n=this.params.length;this.params[n]={node:e,visible:r}},t.prototype._compile=function(e){e.ResultSet=o;var r=this.params.map(function(r){var n=r.node._compile(e);return r.visible?"results.push("+n+");":n+";"});return"(function () {var results = [];"+r.join("")+"return new ResultSet(results);})()"},t.prototype.find=function(e){var r=[];this.match(e)&&r.push(this);for(var n=this.params,t=0,i=n.length;i>t;t++)r=r.concat(n[t].node.find(e));return r},t.prototype.toString=function(){return this.params.map(function(e){return e.node.toString()+(e.visible?"":";")}).join("\n")},t.prototype.toTex=function(){return this.params.map(function(e){return e.node.toTex()+(e.visible?"":";")}).join("\n")},e.exports=t},function(e,r,n){"use strict";function t(e,r,n){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof i))throw new TypeError("Parameter condition must be a Node");if(!(r instanceof i))throw new TypeError("Parameter trueExpr must be a Node");if(!(n instanceof i))throw new TypeError("Parameter falseExpr must be a Node");this.condition=e,this.trueExpr=r,this.falseExpr=n}var i=n(155),o=n(281),a=n(141),s=n(6),u=n(10),f=n(142),c=f.string.isString,l=f.number.isNumber,p=f["boolean"].isBoolean;t.prototype=new i,t.prototype.type="ConditionalNode",t.prototype._compile=function(e){return e.testCondition=function(r){if(l(r)||p(r)||c(r))return r?!0:!1;if(r instanceof a)return r.isZero()?!1:!0;if(r instanceof s)return r.re||r.im?!0:!1;if(r instanceof u)return r.value?!0:!1;if(null===r||void 0===r)return!1;throw new TypeError('Unsupported type of condition "'+e.math["typeof"](r)+'"')},"testCondition("+this.condition._compile(e)+") ? ( "+this.trueExpr._compile(e)+") : ( "+this.falseExpr._compile(e)+")"},t.prototype.find=function(e){var r=[];return this.match(e)&&r.push(this),r=r.concat(this.condition.find(e),this.trueExpr.find(e),this.falseExpr.find(e))},t.prototype.toString=function(){return"("+this.condition.toString()+") ? ("+this.trueExpr.toString()+") : ("+this.falseExpr.toString()+")"},t.prototype.toTex=function(){var e=o.addBraces(this.trueExpr.toTex())+", &\\quad"+o.addBraces("\\text{if}\\;"+this.condition.toTex())+"\\\\"+(o.addBraces(this.falseExpr.toTex())+", &\\quad"+o.addBraces("\\text{otherwise}"));return o.addBraces(e,["\\left\\{\\begin{array}{l l}","\\end{array}\\right."])},e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(r){if(!a(r))throw new TypeError('String expected for parameter "valueType"');if(!a(e))throw new TypeError('String expected for parameter "value"');this.value=e,this.valueType=r}else this.value=e+"",this.valueType=o(e);if(!s[this.valueType])throw new TypeError('Unsupported type of value "'+this.valueType+'"')}var i=n(155),o=(n(141),n(178).type),a=n(158).isString,s={number:!0,string:!0,"boolean":!0,undefined:!0,"null":!0};t.prototype=new i,t.prototype.type="ConstantNode",t.prototype._compile=function(e){switch(this.valueType){case"number":return"bignumber"===e.math.config().number?'math.bignumber("'+this.value+'")':this.value.replace(/^(0*)[0-9]/,function(e,r){return e.substring(r.length)});case"string":return'"'+this.value+'"';case"boolean":return this.value; -case"undefined":return this.value;case"null":return this.value;default:throw new TypeError('Unsupported type of constant "'+this.valueType+'"')}},t.prototype.toString=function(){switch(this.valueType){case"string":return'"'+this.value+'"';default:return this.value}},t.prototype.toTex=function(){var e,r=this.value;switch(this.valueType){case"string":return"\\text{"+r+"}";case"number":return e=r.toLowerCase().indexOf("e"),-1!==e?r.substring(0,e)+" \\cdot 10^{"+r.substring(e+1)+"}":r;default:return r}},e.exports=t},function(e,r,n){"use strict";function t(e,r,n){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!s(e))throw new TypeError('String expected for parameter "name"');if(!u(r)||!r.every(s))throw new TypeError('Array containing strings expected for parameter "args"');if(!(n instanceof i))throw new TypeError('Node expected for parameter "expr"');if(e in o)throw new Error('Illegal function name, "'+e+'" is a reserved keyword');this.name=e,this.args=r,this.expr=n}var i=n(155),o=n(280),a=n(281),s=n(158).isString,u=Array.isArray;t.prototype=new i,t.prototype.type="FunctionAssignmentNode",t.prototype._compile=function(e){return'scope["'+this.name+'"] = (function (scope) { scope = Object.create(scope); var fn = function '+this.name+"("+this.args.join(",")+") { if (arguments.length != "+this.args.length+') { throw new SyntaxError("Wrong number of arguments in function '+this.name+' (" + arguments.length + " provided, '+this.args.length+' expected)"); }'+this.args.map(function(e,r){return'scope["'+e+'"] = arguments['+r+"];"}).join("")+" return "+this.expr._compile(e)+' }; fn.syntax = "'+this.name+"("+this.args.join(", ")+')"; return fn; })(scope);'},t.prototype.find=function(e){var r=[];return this.match(e)&&r.push(this),r=r.concat(this.expr.find(e))},t.prototype.toString=function(){return"function "+this.name+"("+this.args.join(", ")+") = "+this.expr.toString()},t.prototype.toTex=function(){return this.name+a.addBraces(this.args.map(a.toSymbol).join(", "),!0)+"="+a.addBraces(this.expr.toTex())},e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof i))throw new TypeError('Node expected for parameter "object"');if(!u(r)||!r.every(s))throw new TypeError('Array containing Nodes expected for parameter "ranges"');this.object=e,this.ranges=r}var i=n(155),o=n(152),a=n(153),s=i.isNode,u=Array.isArray;t.prototype=new i,t.prototype.type="IndexNode",t.prototype._compile=function(e){return this.compileSubset(e)},t.prototype.compileSubset=function(e,r){var n={type:a,properties:{name:"end"}},t=!1,i=this.ranges.map(function(e){var r=e.find(n).length>0;return t=r?r:t,r}),s=this.ranges.map(function(r,n){var t=i[n];return r instanceof o?t?'(function (scope) { scope = Object.create(scope); scope["end"] = size['+n+"]; return [ "+r.start._compile(e)+", "+r.end._compile(e)+", "+(r.step?r.step._compile(e):"1")+" ];})(scope)":"(function () { return [ "+r.start._compile(e)+", "+r.end._compile(e)+", "+(r.step?r.step._compile(e):"1")+" ];})()":t?'(function (scope) { scope = Object.create(scope); scope["end"] = size['+n+"]; return "+r._compile(e)+";})(scope)":r._compile(e)});return t?"(function () { var obj = "+this.object._compile(e)+"; var size = math.size(obj).valueOf(); return math.subset( obj, math.index("+s.join(", ")+") "+(r?", "+r:"")+" );})()":"math.subset("+this.object._compile(e)+",math.index("+s.join(", ")+")"+(r?", "+r:"")+")"},t.prototype.find=function(e){var r=[];this.match(e)&&r.push(this),r=r.concat(this.object.find(e));for(var n=this.ranges,t=0,i=n.length;i>t;t++)r=r.concat(n[t].find(e));return r},t.prototype.objectName=function(){return this.object.name},t.prototype.toString=function(){return this.object.toString()+"["+this.ranges.join(", ")+"]"},t.prototype.toTex=function(){return this.object.toTex()+"["+this.ranges.join(", ")+"]"},e.exports=t},function(e,r,n){"use strict";function t(e,r,n){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");this.op=e,this.fn=r,this.params=n}var i=n(155),o=n(147),a=n(153),s=n(151),u=n(281);t.prototype=new i,t.prototype.type="OperatorNode",t.prototype._compile=function(e){if(!(this.fn in e.math))throw new Error("Function "+this.fn+' missing in provided namespace "math"');var r=this.params.map(function(r){return r._compile(e)});return"math."+this.fn+"("+r.join(", ")+")"},t.prototype.find=function(e){var r=[];this.match(e)&&r.push(this);var n=this.params;if(n)for(var t=0,i=n.length;i>t;t++)r=r.concat(n[t].find(e));return r},t.prototype.toString=function(){var e=this.params;switch(e.length){case 1:return"-"==this.op?"-"+e[0].toString():e[0].toString()+this.op;case 2:var r=e[0].toString();e[0]instanceof t&&(r="("+r+")");var n=e[1].toString();return e[1]instanceof t&&(n="("+n+")"),r+" "+this.op+" "+n;default:return this.op+"("+this.params.join(", ")+")"}},t.prototype.toTex=function(){var e=this.params,r=u.toOperator(this.op),n=e[0],i=e[1];switch(e.length){case 1:return"-"===this.op||"+"===this.op?this.op+n.toTex():n.toTex()+this.op;case 2:var f=n.toTex(),c=!1,l=i.toTex(),p=!1,m="",h="";switch(this.op){case"/":m=r,r="";break;case"*":n instanceof t&&("+"===n.op||"-"===n.op)&&(c=!0),i instanceof t&&("+"===i.op||"-"===i.op?p=!0:"*"===i.op&&(p=!0)),r=(n instanceof o||n instanceof t)&&(i instanceof o||i instanceof t)?" \\cdot ":" \\, ";break;case"^":n instanceof t||n instanceof s?c=!0:n instanceof a&&(c=null);break;case"to":l=u.toUnit(l,!0)}return f=u.addBraces(f,c),l=u.addBraces(l,p),m+f+r+l+h;default:return r+"("+this.params.map(u.toSymbol).join(", ")+")"}},e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof i))throw new TypeError('SymbolNode expected for parameter "symbol"');if(!s(r)||!r.every(a))throw new TypeError('Array containing Nodes expected for parameter "params"');this.symbol=e,this.params=r}var i=n(155),o=n(281),a=i.isNode,s=Array.isArray;t.prototype=new i,t.prototype.type="FunctionNode",t.prototype._compile=function(e){var r=e.math[this.symbol.name],n="function"==typeof r&&1==r.rawArgs,t=this.params.map(function(r){return r._compile(e)});if(n){var i,o=this.symbol.name;do i="p"+Math.round(1e4*Math.random());while(i in e);return e[i]=this.params,'("'+o+'" in scope ? scope["'+o+'"]('+t.join(", ")+') : math["'+o+'"]('+i+", math, scope))"}return this.symbol._compile(e)+"("+t.join(", ")+")"},t.prototype.find=function(e){var r=[];this.match(e)&&r.push(this),r=r.concat(this.symbol.find(e));for(var n=this.params,t=0,i=n.length;i>t;t++)r=r.concat(n[t].find(e));return r},t.prototype.toString=function(){return this.symbol.toString()+"("+this.params.join(", ")+")"},t.prototype.toTex=function(){return o.toParams(this)},e.exports=t},function(e,r,n){"use strict";function t(e){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!Array.isArray(e)||2!=e.length&&3!=e.length||!e.every(o))throw new TypeError('Expected an Array containing 2 or 3 Nodes as parameter "params"');this.start=e[0],this.end=e[1],this.step=e[2]}var i=n(155),o=i.isNode;t.prototype=new i,t.prototype.type="RangeNode",t.prototype._compile=function(e){return"math.range("+this.start._compile(e)+", "+this.end._compile(e)+(this.step?", "+this.step._compile(e):"")+")"},t.prototype.find=function(e){var r=[];return this.match(e)&&r.push(this),r=r.concat(this.start.find(e)),this.step&&(r=r.concat(this.step.find(e))),r=r.concat(this.end.find(e))},t.prototype.toString=function(){var e=this.start.toString();return this.step&&(e+=":"+this.step.toString()),e+=":"+this.end.toString()},t.prototype.toTex=function(){var e=this.start.toTex();return this.step&&(e+=":"+this.step.toTex()),e+=":"+this.end.toTex()},e.exports=t},function(e,r,n){"use strict";function t(e){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!u(e))throw new TypeError('String expected for parameter "name"');this.name=e}function i(e){throw new Error("Undefined symbol "+e)}var o=n(155),a=n(10),s=n(281),u=n(158).isString;t.prototype=new o,t.prototype.type="SymbolNode",t.prototype._compile=function(e){return e.undef=i,e.Unit=a,this.name in e.math?'("'+this.name+'" in scope ? scope["'+this.name+'"] : math["'+this.name+'"])':'("'+this.name+'" in scope ? scope["'+this.name+'"] : '+(a.isValuelessUnit(this.name)?'new Unit(null, "'+this.name+'")':'undef("'+this.name+'")')+")"},t.prototype.toString=function(){return this.name},t.prototype.toTex=function(){return s.toSymbol(this.name)},e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof o))throw new TypeError('Expected IndexNode for parameter "index"');if(!(r instanceof i))throw new TypeError('Expected Node for parameter "expr"');this.index=e,this.expr=r}var i=n(155),o=n(149);t.prototype=new i,t.prototype.type="UpdateNode",t.prototype._compile=function(e){return'scope["'+this.index.objectName()+'"] = '+this.index.compileSubset(e,this.expr._compile(e))},t.prototype.find=function(e){var r=[];return this.match(e)&&r.push(this),r=r.concat(this.index.find(e)),r=r.concat(this.expr.find(e))},t.prototype.toString=function(){return this.index.toString()+" = "+this.expr.toString()},t.prototype.toTex=function(){return this.index.toTex()+" = "+this.expr.toTex()},e.exports=t},function(e,r,n){"use strict";function t(){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator")}function i(e){for(var r in e)if(e.hasOwnProperty(r)&&r in a)throw new Error('Scope contains an illegal symbol, "'+r+'" is a reserved keyword')}function o(e){var r=Object.create(e);for(var n in e)if(e.hasOwnProperty(n)){var t=e[n],i=t&&t.transform;i&&(r[n]=i)}return r}var a=n(280);t.prototype.eval=function(){throw new Error("Node.eval is deprecated. Use Node.compile(math).eval([scope]) instead.")},t.prototype.type="Node",t.prototype.compile=function(e){if(!(e instanceof Object))throw new TypeError("Object expected for parameter math");var r={math:o(e),_validateScope:i},n=this._compile(r),t=Object.keys(r).map(function(e){return" var "+e+' = defs["'+e+'"];'}),a=t.join(" ")+'return { "eval": function (scope) { if (scope) _validateScope(scope); scope = scope || {}; return '+n+"; }};",s=new Function("defs",a);return s(r)},t.prototype._compile=function(){throw new Error("Cannot compile a Node interface")},t.prototype.find=function(e){return this.match(e)?[this]:[]},t.prototype.match=function(e){var r=!0;if(e){!e.type||this instanceof e.type||(r=!1);var n=e.properties;if(r&&n)for(var t in n)if(n.hasOwnProperty(t)&&this[t]!==n[t]){r=!1;break}}return r},t.prototype.toString=function(){return""},t.prototype.toTex=function(){return""},t.isNode=function(e){return e instanceof t},e.exports=t},function(e,r,n){var t=(n(138),n(139));r.transform=function(e){return e instanceof t?new t(e.index+1,e.min+1,e.max+1):e}},function(e,r){"use strict";r.isBoolean=function(e){return e instanceof Boolean||"boolean"==typeof e}},function(e,r,n){"use strict";function t(e,n){if(Array.isArray(e)){for(var i="[",o=e.length,a=0;o>a;a++)0!=a&&(i+=", "),i+=t(e[a],n);return i+="]"}return r.format(e,n)}var i=n(4),o=n(134),a=n(141);r.isString=function(e){return e instanceof String||"string"==typeof e},r.endsWith=function(e,r){var n=e.length-r.length,t=e.length;return e.substring(n,t)===r},r.format=function(e,n){return i.isNumber(e)?i.format(e,n):e instanceof a?o.format(e,n):Array.isArray(e)?t(e,n):r.isString(e)?'"'+e+'"':"function"==typeof e?e.syntax?e.syntax+"":"function":e instanceof Object?"function"==typeof e.format?e.format(n):e.toString():String(e)}},function(e){e.exports={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]}},function(e){e.exports={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]}},function(e){e.exports={name:"i",category:"Constants",syntax:["i"],description:"Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.",examples:["i","i * i","sqrt(-1)"],seealso:[]}},function(e){e.exports={name:"Infinity",category:"Constants",syntax:["Infinity"],description:"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.",examples:["Infinity","1 / 0"],seealso:[]}},function(e){e.exports={name:"LN2",category:"Constants",syntax:["LN2"],description:"Returns the natural logarithm of 2, approximately equal to 0.693",examples:["LN2","log(2)"],seealso:[]}},function(e){e.exports={name:"LN10",category:"Constants",syntax:["LN10"],description:"Returns the natural logarithm of 10, approximately equal to 2.302",examples:["LN10","log(10)"],seealso:[]}},function(e){e.exports={name:"LOG2E",category:"Constants",syntax:["LOG2E"],description:"Returns the base-2 logarithm of E, approximately equal to 1.442",examples:["LOG2E","log(e, 2)"],seealso:[]}},function(e){e.exports={name:"LOG10E",category:"Constants",syntax:["LOG10E"],description:"Returns the base-10 logarithm of E, approximately equal to 0.434",examples:["LOG10E","log(e, 10)"],seealso:[]}},function(e){e.exports={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]}},function(e){e.exports={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]}},function(e){e.exports={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]}},function(e){e.exports={name:"phi",category:"Constants",syntax:["phi"],description:"Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...",examples:["tau"],seealso:[]}},function(e){e.exports={name:"SQRT1_2",category:"Constants",syntax:["SQRT1_2"],description:"Returns the square root of 1/2, approximately equal to 0.707",examples:["SQRT1_2","sqrt(1/2)"],seealso:[]}},function(e){e.exports={name:"SQRT2",category:"Constants",syntax:["SQRT2"],description:"Returns the square root of 2, approximately equal to 1.414",examples:["SQRT2","sqrt(2)"],seealso:[]}},function(e){e.exports={name:"tau",category:"Constants",syntax:["tau"],description:"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.",examples:["tau","2 * pi"],seealso:["pi"]}},function(e){e.exports={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]}},function(e){e.exports={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]}},function(e,r,n){"use strict";e.exports=function(e){function r(r){if(!s.hasOwnProperty(r))throw new Error("Unknown distribution "+r);var n=Array.prototype.slice.call(arguments,1),o=s[r].apply(this,n);return function(r){var n={random:function(r,n,i){var s,f,c;if(arguments.length>3)throw new e.error.ArgumentsError("random",arguments.length,0,3);if(1===arguments.length?a(r)?s=r:c=r:2===arguments.length?a(r)?(s=r,c=n):(f=r,c=n):(s=r,f=n,c=i),void 0===c&&(c=1),void 0===f&&(f=0),void 0!==s){var l=u(s.valueOf(),f,c,o);return s instanceof t?new t(l):l}return o(f,c)},randomInt:function(r,n,i){var o,f,c;if(arguments.length>3||arguments.length<1)throw new e.error.ArgumentsError("randomInt",arguments.length,1,3);if(1===arguments.length?a(r)?o=r:c=r:2===arguments.length?a(r)?(o=r,c=n):(f=r,c=n):(o=r,f=n,c=i),void 0===f&&(f=0),void 0!==o){var l=u(o.valueOf(),f,c,s);return o instanceof t?new t(l):l}return s(f,c)},pickRandom:function(r){if(1!==arguments.length)throw new e.error.ArgumentsError("pickRandom",arguments.length,1);if(r instanceof t)r=r.valueOf();else if(!Array.isArray(r))throw new e.error.UnsupportedTypeError("pickRandom",e["typeof"](r));if(i.size(r).length>1)throw new Error("Only one dimensional vectors supported");return r[Math.floor(Math.random()*r.length)]}},o=function(e,n){return e+r()*(n-e)},s=function(e,n){return Math.floor(e+r()*(n-e))},u=function(e,r,n,t){var i,o,a=[];if(e=e.slice(0),e.length>1)for(o=0,i=e.shift();i>o;o++)a.push(u(e,r,n,t));else for(o=0,i=e.shift();i>o;o++)a.push(t(r,n));return a};return n}(o)}var t=n(9),i=n(135),o=n(13),a=o.isCollection,s={uniform:function(){return Math.random},normal:function(){return function(){for(var e,r,n=-1;0>n||n>1;)e=Math.random(),r=Math.random(),n=1/6*Math.pow(-2*Math.log(e),.5)*Math.cos(2*Math.PI*r)+.5;return n}}};return r}},function(e,r,n){function t(e){return n(i(e))}function i(e){return o[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var o={"./clone":126,"./clone.js":126,"./forEach":133,"./forEach.js":133,"./format":127,"./format.js":127,"./import":128,"./import.js":128,"./map":129,"./map.js":129,"./print":130,"./print.js":130,"./sort":131,"./sort.js":131,"./typeof":132,"./typeof.js":132};t.keys=function(){return Object.keys(o)},t.resolve=i,e.exports=t},function(e,r){"use strict";r.type=function(e){var r=typeof e;if("object"===r){if(null===e)return"null";if(e instanceof Boolean)return"boolean";if(e instanceof Number)return"number";if(e instanceof String)return"string";if(Array.isArray(e))return"array";if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return r}},function(e){e.exports={name:"abs",category:"Arithmetic",syntax:["abs(x)"],description:"Compute the absolute value.",examples:["abs(3.5)","abs(-4.2)"],seealso:["sign"]}},function(e){e.exports={name:"add",category:"Operators",syntax:["x + y","add(x, y)"],description:"Add two values.",examples:["a = 2.1 + 3.6","a - 3.6","3 + 2i",'"hello" + " world"',"3 cm + 2 inch"],seealso:["subtract"]}},function(e){e.exports={name:"ceil",category:"Arithmetic",syntax:["ceil(x)"],description:"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.",examples:["ceil(3.2)","ceil(3.8)","ceil(-4.2)"],seealso:["floor","fix","round"]}},function(e){e.exports={name:"cube",category:"Arithmetic",syntax:["cube(x)"],description:"Compute the cube of a value. The cube of x is x * x * x.",examples:["cube(2)","2^3","2 * 2 * 2"],seealso:["multiply","square","pow"]}},function(e){e.exports={name:"divide",category:"Operators",syntax:["x / y","divide(x, y)"],description:"Divide two values.",examples:["a = 2 / 3","a * 3","4.5 / 2","3 + 4 / 2","(3 + 4) / 2","18 km / 4.5"],seealso:["multiply"]}},function(e){e.exports={name:"dotDivide",category:"Operators",syntax:["x ./ y","dotDivide(x, y)"],description:"Divide two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a ./ b"],seealso:["multiply","dotMultiply","divide"]}},function(e){e.exports={name:"dotMultiply",category:"Operators",syntax:["x .* y","dotMultiply(x, y)"],description:"Multiply two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a .* b"],seealso:["multiply","divide","dotDivide"]}},function(e){e.exports={name:"dotpow",category:"Operators",syntax:["x .^ y","dotpow(x, y)"],description:"Calculates the power of x to y element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","a .^ 2"],seealso:["pow"]}},function(e){e.exports={name:"exp",category:"Arithmetic",syntax:["exp(x)"],description:"Calculate the exponent of a value.",examples:["exp(1.3)","e ^ 1.3","log(exp(1.3))","x = 2.4","(exp(i*x) == cos(x) + i*sin(x)) # Euler's formula"],seealso:["pow","log"]}},function(e){e.exports={name:"fix",category:"Arithmetic",syntax:["fix(x)"],description:"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.",examples:["fix(3.2)","fix(3.8)","fix(-4.2)","fix(-4.8)"],seealso:["ceil","floor","round"]}},function(e){e.exports={name:"floor",category:"Arithmetic",syntax:["floor(x)"],description:"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.",examples:["floor(3.2)","floor(3.8)","floor(-4.2)"],seealso:["ceil","fix","round"]}},function(e){e.exports={name:"gcd",category:"Arithmetic",syntax:["gcd(a, b)","gcd(a, b, c, ...)"],description:"Compute the greatest common divisor.",examples:["gcd(8, 12)","gcd(-4, 6)","gcd(25, 15, -10)"],seealso:["lcm","xgcd"]}},function(e){e.exports={name:"lcm",category:"Arithmetic",syntax:["lcm(x, y)"],description:"Compute the least common multiple.",examples:["lcm(4, 6)","lcm(6, 21)","lcm(6, 21, 5)"],seealso:["gcd"]}},function(e){e.exports={name:"log",category:"Arithmetic",syntax:["log(x)","log(x, base)"],description:"Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).",examples:["log(3.5)","a = log(2.4)","exp(a)","10 ^ 4","log(10000, 10)","log(10000) / log(10)","b = log(1024, 2)","2 ^ b"],seealso:["exp","log10"]}},function(e){e.exports={name:"log10",category:"Arithmetic",syntax:["log10(x)"],description:"Compute the 10-base logarithm of a value.",examples:["log10(0.00001)","log10(10000)","10 ^ 4","log(10000) / log(10)","log(10000, 10)"],seealso:["exp","log"]}},function(e){e.exports={name:"mod",category:"Operators",syntax:["x % y","x mod y","mod(x, y)"],description:"Calculates the modulus, the remainder of an integer division.",examples:["7 % 3","11 % 2","10 mod 4","function isOdd(x) = x % 2","isOdd(2)","isOdd(3)"],seealso:["divide"]}},function(e){e.exports={name:"multiply",category:"Operators",syntax:["x * y","multiply(x, y)"],description:"multiply two values.",examples:["a = 2.1 * 3.4","a / 3.4","2 * 3 + 4","2 * (3 + 4)","3 * 2.1 km"],seealso:["divide"]}},function(e){e.exports={name:"norm",category:"Arithmetic",syntax:["norm(x)","norm(x, p)"],description:"Calculate the norm of a number, vector or matrix.",examples:["abs(-3.5)","norm(-3.5)","norm(3 - 4i))","norm([1, 2, -3], Infinity)","norm([1, 2, -3], -Infinity)","norm([3, 4], 2)","norm([[1, 2], [3, 4]], 1)","norm([[1, 2], [3, 4]], 'inf')","norm([[1, 2], [3, 4]], 'fro')"]}},function(e){e.exports={name:"pow",category:"Operators",syntax:["x ^ y","pow(x, y)"],description:"Calculates the power of x to y, x^y.",examples:["2^3 = 8","2*2*2","1 + e ^ (pi * i)"],seealso:["multiply"]}},function(e){e.exports={name:"round",category:"Arithmetic",syntax:["round(x)","round(x, n)"],description:"round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.",examples:["round(3.2)","round(3.8)","round(-4.2)","round(-4.8)","round(pi, 3)","round(123.45678, 2)"],seealso:["ceil","floor","fix"]}},function(e){e.exports={name:"sign",category:"Arithmetic",syntax:["sign(x)"],description:"Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]}},function(e){e.exports={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","multiply"]}},function(e){e.exports={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]}},function(e){e.exports={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]}},function(e){e.exports={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]}},function(e){e.exports={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]}},function(e){e.exports={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]}},function(e){e.exports={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq"]}},function(e){e.exports={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["[1,3,4] == [1,3,4]","[1,3,4] == [1,3]"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]}},function(e){e.exports={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e){e.exports={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e){e.exports={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 > 1+1","2 >= 1+1","a = 3.2","b = 6-2.8","(a > b)"],seealso:["equal","unequal","smallerEq","smaller","largerEq","compare"]}},function(e){e.exports={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]}},function(e){e.exports={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 1+1","2 <= 1+1","a = 3.2","b = 6-2.8","(a < b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]}},function(e){e.exports={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e){e.exports={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]}},function(e){e.exports={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]}},function(e){e.exports={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]}},function(e){e.exports={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]}},function(e){e.exports={name:"bignumber",category:"Type",syntax:["bignumber(x)"],description:"Create a big number from a number or string.",examples:["0.1 + 0.2","bignumber(0.1) + bignumber(0.2)",'bignumber("7.2")','bignumber("7.2e500")',"bignumber([0.1, 0.2, 0.3])"],seealso:["boolean","complex","index","matrix","string","unit"]}},function(e){e.exports={name:"boolean",category:"Type",syntax:["x","boolean(x)"],description:"Convert a string or number into a boolean.",examples:["boolean(0)","boolean(1)","boolean(3)",'boolean("true")','boolean("false")',"boolean([1, 0, 1, 1])"],seealso:["bignumber","complex","index","matrix","number","string","unit"]}},function(e){e.exports={name:"complex",category:"Type",syntax:["complex()","complex(re, im)","complex(string)"],description:"Create a complex number.",examples:["complex()","complex(2, 3)",'complex("7 - 2i")'],seealso:["bignumber","boolean","index","matrix","number","string","unit"]}},function(e){e.exports={name:"index",category:"Type",syntax:["[start]","[start:end]","[start:step:end]","[start1, start 2, ...]","[start1:end1, start2:end2, ...]","[start1:step1:end1, start2:step2:end2, ...]"],description:"Create an index to get or replace a subset of a matrix",examples:["[]","[1, 2, 3]","A = [1, 2, 3; 4, 5, 6]","A[1, :]","A[1, 2] = 50","A[0:2, 0:2] = ones(2, 2)"],seealso:["bignumber","boolean","complex","matrix,","number","range","string","unit"]}},function(e){e.exports={name:"matrix",category:"Type",syntax:["[]","[a1, b1, ...; a2, b2, ...]","matrix()","matrix([...])"],description:"Create a matrix.",examples:["[]","[1, 2, 3]","[1, 2, 3; 4, 5, 6]","matrix()","matrix([3, 4])"],seealso:["bignumber","boolean","complex","index","number","string","unit"]}},function(e){e.exports={name:"number",category:"Type",syntax:["x","number(x)"],description:"Create a number or convert a string or boolean into a number.",examples:["2","2e3","4.05","number(2)",'number("7.2")',"number(true)","number([true, false, true, true])"],seealso:["bignumber","boolean","complex","index","matrix","string","unit"]}},function(e){e.exports={name:"string",category:"Type",syntax:['"text"',"string(x)"],description:"Create a string or convert a value to a string",examples:['"Hello World!"',"string(4.2)","string(3 + 2i)"],seealso:["bignumber","boolean","complex","index","matrix","number","unit"]}},function(e){e.exports={name:"unit",category:"Type",syntax:["value unit","unit(value, unit)","unit(string)"],description:"Create a unit.",examples:["5.5 mm","3 inch",'unit(7.1, "kilogram")','unit("23 deg")'],seealso:["bignumber","boolean","complex","index","matrix","number","string"]}},function(e){e.exports={name:"eval",category:"Expression",syntax:["eval(expression)","eval([expr1, expr2, expr3, ...])"],description:"Evaluate an expression or an array with expressions.",examples:['eval("2 + 3")','eval("sqrt(" + 4 + ")")'],seealso:[]}},function(e){e.exports={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]}},function(e){e.exports={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]} -},function(e){e.exports={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"eye",category:"Matrix",syntax:["eye(n)","eye(m, n)","eye([m, n])","eye"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["eye(3)","eye(3, 5)","a = [1, 2, 3; 4, 5, 6]","eye(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]}},function(e){e.exports={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","eye","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])","ones"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","eye","inv","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","eye","inv","ones","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze"]}},function(e){e.exports={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","det","diag","eye","inv","ones","range","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","eye","inv","ones","range","size","subset","transpose","zeros"]}},function(e){e.exports={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of a matrix or string. Indexes are one-based. Both the ranges lower-bound and upper-bound are included.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","transpose","zeros"]}},function(e){e.exports={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","zeros"]}},function(e){e.exports={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])","zeros"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","transpose"]}},function(e){e.exports={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["permutations","factorial"]}},function(e){e.exports={name:"factorial",category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5*4*3*2*1","3!"],seealso:["combinations","permutations"]}},function(e){e.exports={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","factorial"]}},function(e){e.exports={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])"],seealso:["distribution","random","randomInt"]}},function(e){e.exports={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["distribution","pickRandom","randomInt"]}},function(e){e.exports={name:"randInt",category:"Probability",syntax:["randInt()","randInt(max)","randInt(min, max)","randInt(size)","randInt(size, max)","randInt(size, min, max)"],description:"Return a random integer number",examples:["randInt()","randInt(10, 20)","randInt([2, 3], 10)"],seealso:["distribution","pickRandom","random"]}},function(e){e.exports={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dim)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3], 0)","max([2, 5; 4, 3], 1)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","var"]}},function(e){e.exports={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dim)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3], 0)","mean([2, 5; 4, 3], 1)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","var"]}},function(e){e.exports={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","var"]}},function(e){e.exports={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dim)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3], 0)","min([2, 5; 4, 3], 1)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","var"]}},function(e){e.exports={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","var"]}},function(e){e.exports={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","sum","var"]}},function(e){e.exports={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","var"]}},function(e){e.exports={name:"var",category:"Statistics",syntax:["var(a, b, c, ...)","var(A)","var(A, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["var(2, 4, 6)","var([2, 4, 6, 8])",'var([2, 4, 6, 8], "uncorrected")','var([2, 4, 6, 8], "biased")',"var([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]}},function(e){e.exports={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]}},function(e){e.exports={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(2.3))"],seealso:["sin","acos","atan"]}},function(e){e.exports={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(2.3))"],seealso:["tan","acos","asin"]}},function(e){e.exports={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]}},function(e){e.exports={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]}},function(e){e.exports={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]}},function(e){e.exports={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]}},function(e){e.exports={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]}},function(e){e.exports={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]}},function(e){e.exports={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]}},function(e){e.exports={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]}},function(e){e.exports={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]}},function(e){e.exports={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]}},function(e){e.exports={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]}},function(e){e.exports={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]}},function(e){e.exports={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]}},function(e){e.exports={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]}},function(e){e.exports={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]}},function(e){e.exports={name:"map",category:"Utils",syntax:["map(x, callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.",examples:["map([1, 2, 3], function(val) { return value * value })"],seealso:[]}},function(e){e.exports={name:"forEach",category:"Utils",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["forEach([1, 2, 3], function(val) { console.log(val) })"],seealso:["unit"]}},function(e){e.exports={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]}},function(e){e.exports={name:"import",category:"Utils",syntax:["import(string)"],description:"Import functions from a file.",examples:['import("numbers")','import("./mylib.js")'],seealso:[]}},function(e){e.exports={name:"sort",category:"Utils",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc" or "desc", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"])'],seealso:[]}},function(e){e.exports={name:"typeof",category:"Utils",syntax:["typeof(x)"],description:"Get the type of a variable.",examples:["typeof(3.5)","typeof(2 - 4i)","typeof(45 deg)",'typeof("hello world")'],seealso:[]}},function(e){"use strict";e.exports={end:!0}},function(e,r,n){"use strict";function t(){for(var e,r=Array.prototype.slice.call(arguments),n=0,t=r.length;t>n;n++){e=r[n];for(var i in e)e.hasOwnProperty(i)&&(x[i]=e[i])}}function i(e,r){return"undefined"!=typeof e[r]}function o(e){return function(r){return i(e,r)}}function a(e){return function(n){if("boolean"==typeof e[n])n=e[n]===!0?"\\"+n:"\\mathrm{"+n+"}";else if("string"==typeof e[n])n=e[n];else if("string"==typeof n){var t=n.indexOf("_");-1!==t&&(n=r.toSymbol(n.substring(0,t))+"_{"+r.toSymbol(n.substring(t+1))+"}")}return n}}var s=n(143),u=n(150),f={Alpha:"A",alpha:!0,Beta:"B",beta:!0,Gamma:!0,gamma:!0,Delta:!0,delta:!0,Epsilon:"E",epsilon:!0,varepsilon:!0,Zeta:"Z",zeta:!0,Eta:"H",eta:!0,Theta:!0,theta:!0,vartheta:!0,Iota:"I",iota:!0,Kappa:"K",kappa:!0,varkappa:!0,Lambda:!0,lambda:!0,Mu:"M",mu:!0,Nu:"N",nu:!0,Xi:!0,xi:!0,Omicron:"O",omicron:!0,Pi:!0,pi:!0,varpi:!0,Rho:"P",rho:!0,varrho:!0,Sigma:!0,sigma:!0,varsigma:!0,Tau:"T",tau:!0,Upsilon:!0,upsilon:!0,Phi:!0,phi:!0,varphi:!0,Chi:"X",chi:!0,Psi:!0,psi:!0,Omega:!0,omega:!0},c={dots:!0,ldots:!0,cdots:!0,vdots:!0,ddots:!0,idots:!0},l={"true":"\\mathrm{True}","false":"\\mathrm{False}"},p={inf:"\\infty",Inf:"\\infty",infinity:"\\infty",Infinity:"\\infty",oo:"\\infty",lim:!0,undefined:"\\mathbf{?}"},m={acos:"\\cos^{-1}",arccos:"\\cos^{-1}",cos:!0,csc:!0,csch:!1,exp:!0,ker:!0,limsup:!0,min:!0,sinh:!0,asin:"\\sin^{-1}",arcsin:"\\sin^{-1}",cosh:!0,deg:!0,gcd:!0,lg:!0,ln:!0,Pr:!0,sup:!0,atan:"\\tan^{-1}",atan2:"\\tan2^{-1}",arctan:"\\tan^{-1}",cot:!0,det:!0,hom:!0,log:!0,log10:"\\log_{10}",sec:!0,sech:!1,tan:!0,arg:!0,coth:!0,dim:!0,inf:!0,max:!0,sin:!0,tanh:!0,fix:!1,lcm:!1,sign:!1,xgcd:!1,unaryMinus:!1,unaryPlus:!1,complex:!1,conj:!1,im:!1,re:!1,diag:!1,resize:!1,size:!1,squeeze:!1,subset:!1,index:!1,ones:!1,zeros:!1,range:!1,random:!1,mean:"\\mu",median:!1,prod:!1,std:"\\sigma","var":"\\sigma^2"},h={sqrt:!0,inv:!0,"int":"\\int",Int:"\\int",integrate:"\\int",eigenvalues:"\\lambda",liminf:!0,lim:!0,exp:"e^",sum:!0,eye:"\\mathbf{I}"},g={"<=":"\\leq",">=":"\\geq","!=":"\\neq","in":!0,"*":"\\cdot","/":"\\frac",mod:"\\bmod",to:"\\rightarrow"},d={deg:"^{\\circ}"},x={};t(m,h,f,c,l,p),r.isSymbol=o(x),r.toSymbol=a(x),r.isFunction=o(m),r.toFunction=a(m),r.isCurlyFunction=o(h),r.toCurlyFunction=a(h),r.isOperator=o(g),r.toOperator=a(g),r.isUnit=o(d),r.toUnit=function(){var e=a(d);return function(n,t){return r.isUnit(n)?e(n):(t?"":"\\,")+"\\mathrm{"+n+"}"}}(),r.addBraces=function(e,r,n){if(null===r)return e;var t=["",""];switch(n=n||"normal","undefined"==typeof r||r===!1?t=["{","}"]:r===!0?(t=["(",")"],n="lr"):t=Array.isArray(r)&&2===r.length?r:[r,r],n){case"normal":case!1:return t[0]+e+t[1];case"lr":return"\\left"+t[0]+"{"+e+"}\\right"+t[1];case"be":return"\\begin{"+t[0]+"}"+e+"\\end{"+t[1]+"}"}return t[0]+e+t[1]},r.toParams=function(e){var n=e.symbol,t=e.params,i=n.toTex(),o=null,a=null,f=!1,c=!1,l="",p="",m=null;switch(n.name){case"add":m="+";break;case"subtract":m="-";break;case"larger":m=">";break;case"largerEq":m=">=";break;case"smaller":m="<";break;case"smallerEq":m="<=";break;case"unequal":m="!=";break;case"equal":m="=";break;case"mod":m="mod";break;case"multiply":m="*";break;case"pow":m="^";break;case"concat":m="||";break;case"factorial":m="!";break;case"permutations":if(1!==t.length){var h=t[0].toTex(),g=t[1].toTex();return"\\frac{"+h+"!}{\\left("+h+" - "+g+"\\right)!}"}m="!";break;case"combinations":m="\\choose";break;case"abs":a="|",f="lr";break;case"norm":if(a="\\|",f="lr",2===t.length){var d=t[1].toTex();"\\text{inf}"===d?d="\\infty":"\\text{-inf}"===d?d="{- \\infty}":"\\text{fro}"===d&&(d="F"),p="_{"+d+"}",t=[t[0]]}break;case"ceil":a=["\\lceil","\\rceil"],f="lr";break;case"floor":a=["\\lfloor","\\rfloor"],f="lr";break;case"round":a=["\\lfloor","\\rceil"],f="lr",2===t.length&&(p="_"+r.addBraces(t[1].toTex()),t=[t[0]]);break;case"inv":p="^{-1}";break;case"transpose":p="^{T}",a=!1;break;case"log":var x="e";2===t.length&&(x=t[1].toTex(),i="\\log_{"+x+"}",t=[t[0]]),"e"===x&&(i="\\ln"),c=!0;break;case"square":p="^{2}";break;case"cube":p="^{3}";break;case"eye":c=!0,a=!1,i+="_";break;case"det":if(e.params[0]instanceof s)return e.params[0].toTex("vmatrix");a="vmatrix",f="be";break;default:c=!0}return null!==m?(a="+"===m||"-"===m,o=new u(m,n.name,t).toTex()):m=", ",null!==a||r.isCurlyFunction(n.name)||(a=!0),o=o||t.map(function(e){return"{"+e.toTex()+"}"}).join(m),l+(c?i:"")+r.addBraces(o,a,f)+p}}])}); +!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):"object"==typeof exports?exports.math=r():e.math=r()}(this,function(){return function(e){function r(t){if(n[t])return n[t].exports;var i=n[t]={exports:{},id:t,loaded:!1};return e[t].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}var n={};return r.m=e,r.c=n,r.p="",r(0)}([function(e,r,n){e.exports=n(1)},function(e,r,n){"use strict";function t(e){if("function"!=typeof Object.create)throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var r={},a={matrix:"matrix",number:"number",precision:64,epsilon:1e-14};r.config=function(e){if(e){if(i.deepExtend(a,e),e.precision&&r.type.BigNumber.config({precision:e.precision}),n(2)(r,a),e.number&&e.number.defaultType)throw new Error("setting `number.defaultType` is deprecated. Use `number` instead.");if(e.number&&e.number.precision)throw new Error("setting `number.precision` is deprecated. Use `precision` instead.");if(e.matrix&&e.matrix.defaultType)throw new Error("setting `matrix.defaultType` is deprecated. Use `matrix` instead.");if(e.matrix&&e.matrix["default"])throw new Error("setting `matrix.default` is deprecated. Use `matrix` instead.");if(e.decimals)throw new Error("setting `decimals` is deprecated. Use `precision` instead.")}return i.clone(a)},r.create=t;var s=n(139).constructor();if("function"!=typeof s.prototype.clone&&(s.prototype.clone=function(){return new s(this)}),"function"==typeof s.convert)throw new Error("Cannot add function convert to BigNumber: function already exists");return s.convert=function(e){return o(e)>15?e:new s(e)},r.error=n(5),r.type={},r.type.Complex=n(6),r.type.Range=n(7),r.type.Index=n(8),r.type.Matrix=n(9),r.type.Unit=n(10),r.type.Help=n(11),r.type.ResultSet=n(12),r.type.BigNumber=s,r.collection=n(13),r.expression={},r.expression.node=n(16),r.expression.parse=n(14),r.expression.Parser=n(15),r.expression.docs=n(17),n(29)(r,a),n(30)(r,a),n(31)(r,a),n(32)(r,a),n(33)(r,a),n(34)(r,a),n(35)(r,a),n(36)(r,a),n(37)(r,a),n(38)(r,a),n(39)(r,a),n(40)(r,a),n(41)(r,a),n(42)(r,a),n(43)(r,a),n(44)(r,a),n(45)(r,a),n(46)(r,a),n(47)(r,a),n(48)(r,a),n(49)(r,a),n(50)(r,a),n(51)(r,a),n(52)(r,a),n(53)(r,a),n(54)(r,a),n(55)(r,a),n(56)(r,a),n(57)(r,a),n(58)(r,a),n(59)(r,a),n(60)(r,a),n(61)(r,a),n(62)(r,a),n(63)(r,a),n(64)(r,a),n(65)(r,a),n(66)(r,a),n(67)(r,a),n(68)(r,a),n(69)(r,a),n(70)(r,a),n(71)(r,a),n(72)(r,a),n(73)(r,a),n(74)(r,a),n(75)(r,a),n(76)(r,a),n(77)(r,a),n(78)(r,a),n(79)(r,a),n(80)(r,a),n(81)(r,a),n(82)(r,a),n(83)(r,a),n(84)(r,a),n(85)(r,a),n(86)(r,a),n(87)(r,a),n(88)(r,a),n(89)(r,a),n(90)(r,a),n(91)(r,a),n(92)(r,a),n(93)(r,a),n(94)(r,a),n(95)(r,a),n(96)(r,a),n(97)(r,a),n(98)(r,a),n(99)(r,a),n(100)(r,a),n(101)(r,a),n(102)(r,a),n(103)(r,a),n(104)(r,a),n(105)(r,a),n(106)(r,a),n(107)(r,a),n(108)(r,a),n(109)(r,a),n(110)(r,a),n(111)(r,a),n(112)(r,a),n(113)(r,a),n(114)(r,a),n(115)(r,a),n(116)(r,a),n(117)(r,a),n(118)(r,a),n(119)(r,a),n(120)(r,a),n(121)(r,a),n(122)(r,a),n(123)(r,a),n(124)(r,a),n(125)(r,a),n(126)(r,a),n(127)(r,a),n(128)(r,a),n(129)(r,a),n(130)(r,a),n(131)(r,a),n(132)(r,a),n(133)(r,a),n(134)(r,a),n(135)(r,a),r.ifElse=function(){throw new Error("Function ifElse is deprecated. Use the conditional operator instead.")},n(2)(r,a),n(18)(r,a),n(19)(r,a),n(20)(r,a),n(21)(r,a),n(22)(r,a),n(23)(r,a),n(24)(r,a),n(25)(r,a),n(26)(r,a),n(27)(r,a),r.chaining={},r.chaining.Selector=n(28)(r,a),r.config(a),r.config(e),r}var i=n(3),o=n(4).digits,a=t();"undefined"!=typeof window&&(window.mathjs=a),e.exports=a},function(e,r,n){"use strict";e.exports=function(e,r){function t(){return new f(1).exp()}function i(){return new f(1).plus(new f(5).sqrt()).div(2)}function o(e){for(var r=e,n=0/0,t=e.times(e),i=e,o=-1,a=3;!r.equals(n);a+=2)i=i.times(t),n=r,r=o>0?r.plus(i.div(a)):r.minus(i.div(a)),o=-o;return r}function a(){var e=f.constructor({precision:f.precision+4}),r=new e(4).times(o(new e(1).div(5))).minus(o(new e(1).div(239)));return new f(4).times(r)}function s(){f.config({precision:r.precision+2});var e=a();return f.config({precision:r.precision}),new f(2).times(e)}var u=(n(136),n(6)),f=e.type.BigNumber,c="bignumber"===r.number;e.pi=c?a():Math.PI,e.tau=c?s():2*Math.PI,e.e=c?t():Math.E,e.phi=c?i():1.618033988749895,e.i=new u(0,1),e.Infinity=1/0,e.NaN=0/0,e["true"]=!0,e["false"]=!1,e["null"]=null,e.uninitialized=n(137).UNINITIALIZED,e.E=e.e,e.LN2=c?new f(2).ln():Math.LN2,e.LN10=c?new f(10).ln():Math.LN10,e.LOG2E=c?new f(1).div(new f(2).ln()):Math.LOG2E,e.LOG10E=c?new f(1).div(new f(10).ln()):Math.LOG10E,e.PI=e.pi,e.SQRT1_2=c?new f(.5).sqrt():Math.SQRT1_2,e.SQRT2=c?new f(2).sqrt():Math.SQRT2,e.version=n(138)}},function(e,r){"use strict";r.clone=function n(e){var r=typeof e;if("number"===r||"string"===r||"boolean"===r||null===e||void 0===e)return e;if("function"==typeof e.clone)return e.clone();if(Array.isArray(e))return e.map(function(e){return n(e)});if(e instanceof Number)return new Number(e.valueOf());if(e instanceof String)return new String(e.valueOf());if(e instanceof Boolean)return new Boolean(e.valueOf());if(e instanceof Date)return new Date(e.valueOf());if(e instanceof RegExp)throw new TypeError("Cannot clone "+e);var t={};for(var i in e)e.hasOwnProperty(i)&&(t[i]=n(e[i]));return t},r.extend=function(e,r){for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n]);return e},r.deepExtend=function t(e,r){if(Array.isArray(r))throw new TypeError("Arrays are not supported by deepExtend");for(var n in r)if(r.hasOwnProperty(n))if(r[n]&&r[n].constructor===Object)void 0===e[n]&&(e[n]={}),e[n].constructor===Object?t(e[n],r[n]):e[n]=r[n];else{if(Array.isArray(r[n]))throw new TypeError("Arrays are not supported by deepExtend");e[n]=r[n]}return e},r.deepEqual=function(e,n){var t,i,o;if(Array.isArray(e)){if(!Array.isArray(n))return!1;if(e.length!=n.length)return!1;for(i=0,o=e.length;o>i;i++)if(!r.deepEqual(e[i],n[i]))return!1;return!0}if(e instanceof Object){if(Array.isArray(n)||!(n instanceof Object))return!1;for(t in e)if(!r.deepEqual(e[t],n[t]))return!1;for(t in n)if(!r.deepEqual(e[t],n[t]))return!1;return!0}return typeof e==typeof n&&e==n}},function(e,r){"use strict";r.isNumber=function(e){return e instanceof Number||"number"==typeof e},r.isInteger=function(e){return e==Math.round(e)},r.sign=function(e){return e>0?1:0>e?-1:0},r.format=function(e,n){if("function"==typeof n)return n(e);if(1/0===e)return"Infinity";if(e===-1/0)return"-Infinity";if(isNaN(e))return"NaN";var t="auto",i=void 0;switch(n&&(n.notation&&(t=n.notation),r.isNumber(n)?i=n:n.precision&&(i=n.precision)),t){case"fixed":return r.toFixed(e,i);case"exponential":return r.toExponential(e,i);case"auto":var o=.001,a=1e5;if(n&&n.exponential&&(void 0!==n.exponential.lower&&(o=n.exponential.lower),void 0!==n.exponential.upper&&(a=n.exponential.upper)),0===e)return"0";var s,u=Math.abs(e);if(u>=o&&a>u){var f=i?e.toPrecision(Math.min(i,21)):e.toPrecision();s=parseFloat(f)+""}else s=r.toExponential(e,i);return s.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],r=arguments[4];return"."!==e?e+r:r});default:throw new Error('Unknown notation "'+t+'". Choose "auto", "exponential", or "fixed".')}},r.toExponential=function(e,r){return void 0!==r?e.toExponential(Math.min(r-1,20)):e.toExponential()},r.toFixed=function(e,r){return e.toFixed(Math.min(r,20))},r.digits=function(e){return e.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length},r.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16,r.nearlyEqual=function(e,n,t){if(null==t)return e==n;if(e==n)return!0;if(isNaN(e)||isNaN(n))return!1;if(isFinite(e)&&isFinite(n)){var i=Math.abs(e-n);return i="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){y++,w=x.charAt(y)}function u(e){y=e,w=x.charAt(y)}function f(){var e,r="";if(e=y,"+"==w?s():"-"==w&&(r+=w,s()),!o(w))return u(e),null;if("."==w){if(r+=w,s(),!a(w))return u(e),null}else{for(;a(w);)r+=w,s();"."==w&&(r+=w,s())}for(;a(w);)r+=w,s();if("E"==w||"e"==w){if(r+=w,s(),("+"==w||"-"==w)&&(r+=w,s()),!a(w))return u(e),null;for(;a(w);)r+=w,s()}return r}function c(){var e=x.charAt(y+1);if("I"==w||"i"==w)return s(),"1";if(!("+"!=w&&"-"!=w||"I"!=e&&"i"!=e)){var r="+"==w?"1":"-1";return s(),s(),r}return null}var l=n(144),p=n(10),m=l.number,h=l.number.isNumber,g=p.isUnit,d=l.string.isString;t.isComplex=function(e){return e instanceof t};var x,y,w;t.parse=function(e){if(x=e,y=-1,w="",!d(x))return null;s(),i();var r=f();if(r){if("I"==w||"i"==w)return s(),i(),w?null:new t(0,Number(r));i();var n=w;if("+"!=n&&"-"!=n)return i(),w?null:new t(Number(r),0);s(),i();var o=f();if(o){if("I"!=w&&"i"!=w)return null;s()}else if(o=c(),!o)return null;return"-"==n&&(o="-"==o[0]?"+"+o.substring(1):"-"+o),s(),i(),w?null:new t(Number(r),Number(o))}return(r=c())?(i(),w?null:new t(0,Number(r))):null},t.fromPolar=function(){switch(arguments.length){case 1:var e=arguments[0];if("object"==typeof e)return t.fromPolar(e.r,e.phi);throw new TypeError("Input has to be an object with r and phi keys.");case 2:var r=arguments[0],n=arguments[1];if(h(r)){if(g(n)&&n.hasBase(p.BASE_UNITS.ANGLE)&&(n=n.toNumber("rad")),h(n))return new t(r*Math.cos(n),r*Math.sin(n));throw new TypeError("Phi is not a number nor an angle unit.")}throw new TypeError("Radius r is not a number.");default:throw new SyntaxError("Wrong number of arguments in function fromPolar")}},t.prototype.toPolar=function(){return{r:Math.sqrt(this.re*this.re+this.im*this.im),phi:Math.atan2(this.im,this.re)}},t.prototype.clone=function(){return new t(this.re,this.im)},t.prototype.equals=function(e){return this.re===e.re&&this.im===e.im},t.prototype.format=function(e){var r="",n=m.format(this.re,e),t=m.format(this.im,e);return r=0==this.im?n:0==this.re?1==this.im?"i":-1==this.im?"-i":t+"i":this.im>0?1==this.im?n+" + i":n+" + "+t+"i":-1==this.im?n+" - i":n+" - "+t.substring(1)+"i"},t.prototype.toString=function(){return this.format()},t.prototype.valueOf=t.prototype.toString,e.exports=t},function(e,r,n){"use strict";function t(e,r,n){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(null!=e&&!o.isNumber(e))throw new TypeError("Parameter start must be a number");if(null!=r&&!o.isNumber(r))throw new TypeError("Parameter end must be a number");if(null!=n&&!o.isNumber(n))throw new TypeError("Parameter step must be a number");this.start=null!=e?parseFloat(e):0,this.end=null!=r?parseFloat(r):0,this.step=null!=n?parseFloat(n):1}{var i=n(144),o=i.number,a=i.string;i.array}t.parse=function(e){if(!a.isString(e))return null;var r=e.split(":"),n=r.map(function(e){return parseFloat(e)}),i=n.some(function(e){return isNaN(e)});if(i)return null;switch(n.length){case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[2],n[1]);default:return null}},t.prototype.clone=function(){return new t(this.start,this.end,this.step)},t.isRange=function(e){return e instanceof t},t.prototype.size=function(){var e=0,r=this.start,n=this.step,t=this.end,i=t-r;return o.sign(n)==o.sign(i)?e=Math.ceil(i/n):0==i&&(e=0),isNaN(e)&&(e=0),[e]},t.prototype.min=function(){var e=this.size()[0];return e>0?this.step>0?this.start:this.start+(e-1)*this.step:void 0},t.prototype.max=function(){var e=this.size()[0];return e>0?this.step>0?this.start+(e-1)*this.step:this.start:void 0},t.prototype.forEach=function(e){var r=this.start,n=this.step,t=this.end,i=0;if(n>0)for(;t>r;)e(r,i,this),r+=n,i++;else if(0>n)for(;r>t;)e(r,i,this),r+=n,i++},t.prototype.map=function(e){var r=[];return this.forEach(function(n,t,i){r[t]=e(n,t,i)}),r},t.prototype.toArray=function(){var e=[];return this.forEach(function(r,n){e[n]=r}),e},t.prototype.valueOf=function(){return this.toArray()},t.prototype.format=function(e){var r=o.format(this.start,e);return 1!=this.step&&(r+=":"+o.format(this.step,e)),r+=":"+o.format(this.end,e)},t.prototype.toString=function(){return this.format()},e.exports=t},function(e,r,n){"use strict";function t(){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");this._ranges=[],this._isScalar=!0;for(var e=0,r=arguments.length;r>e;e++){var n=arguments[e];if(n instanceof a)this._ranges.push(n),this._isScalar=!1;else if(c(n))this._ranges.push(i(n)),this._isScalar=!1;else if(u(n))this._ranges.push(i([n,n+1]));else{var o=n.valueOf();if(!c(o))throw new TypeError("Ranges must be an Array, Number, or Range");this._ranges.push(i(o)),this._isScalar=!1}}}function i(e){for(var r=e.length,n=0;r>n;n++)if(!u(e[n])||!f(e[n]))throw new TypeError("Index parameters must be integer numbers");switch(e.length){case 2:return new a(e[0],e[1]);case 3:return new a(e[0],e[1],e[2]);default:throw new SyntaxError("Wrong number of arguments in Index (2 or 3 expected)")}}var o=n(144),a=n(7),s=o.number,u=s.isNumber,f=s.isInteger,c=Array.isArray;t.prototype.clone=function(){var e=new t;return e._ranges=o.object.clone(this._ranges),e._isScalar=this._isScalar,e},t.isIndex=function(e){return e instanceof t},t.create=function(e){var r=new t;return t.apply(r,e),r},t.prototype.size=function(){for(var e=[],r=0,n=this._ranges.length;n>r;r++){var t=this._ranges[r];e[r]=t.size()[0]}return e},t.prototype.max=function(){for(var e=[],r=0,n=this._ranges.length;n>r;r++){var t=this._ranges[r];e[r]=t.max()}return e},t.prototype.min=function(){for(var e=[],r=0,n=this._ranges.length;n>r;r++){var t=this._ranges[r];e[r]=t.min()}return e},t.prototype.forEach=function(e){for(var r=0,n=this._ranges.length;n>r;r++)e(this._ranges[r],r,this)},t.prototype.range=function(e){return this._ranges[e]||null},t.prototype.isScalar=function(){return this._isScalar},t.prototype.toArray=function(){for(var e=[],r=0,n=this._ranges.length;n>r;r++){var t=this._ranges[r],i=[],o=t.start,a=t.end,s=t.step;if(s>0)for(;a>o;)i.push(o),o+=s;else if(0>s)for(;o>a;)i.push(o),o+=s;e.push(i)}return e},t.prototype.valueOf=t.prototype.toArray,t.prototype.toString=function(){for(var e=[],r=0,n=this._ranges.length;n>r;r++){var t=this._ranges[r],i=s.format(t.start);1!=t.step&&(i+=":"+s.format(t.step)),i+=":"+s.format(t.end),e.push(i)}return"["+e.join(", ")+"]"},e.exports=t},function(e,r,n){"use strict";function t(e){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof t)this._data=e.clone()._data;else if(d(e))this._data=f(e);else{if(null!=e)throw new TypeError("Unsupported type of data ("+c.types.type(e)+")");this._data=[]}this._size=h.size(this._data)}function i(e,r){if(!(r instanceof p))throw new TypeError("Invalid index");var n=r.isScalar();if(n)return e.get(r.min());var i=r.size();if(i.length!=e._size.length)throw new l(i.length,e._size.length);for(var a=r.min(),s=r.max(),u=0,f=e._size.length;f>u;u++)x(a[u],e._size[u]),x(s[u],e._size[u]);return new t(o(e._data,r,i.length,0))}function o(e,r,n,t){var i=t==n-1,a=r.range(t);return a.map(i?function(r){return e[r]}:function(i){var a=e[i];return o(a,r,n,t+1)})}function a(e,r,n,i){if(!(r instanceof p))throw new TypeError("Invalid index");var o,a=r.size(),f=r.isScalar();if(n instanceof t?(o=n.size(),n=n.valueOf()):o=h.size(n),f){if(0!=o.length)throw new TypeError("Scalar expected");e.set(r.min(),n,i)}else{if(a.length");var d=r.max().map(function(e){return e+1});u(e,d,i);var x=a.length,y=0;s(e._data,r,n,x,y)}return e}function s(e,r,n,t,i){var o=i==t-1,a=r.range(i);a.forEach(o?function(r,t){x(r),e[r]=n[t]}:function(o,a){x(o),s(e[o],r,n[a],t,i+1)})}function u(e,r,n){for(var t=g.clone(e._size),i=!1;t.lengtho;o++)r[o]>t[o]&&(t[o]=r[o],i=!0);i&&e.resize(t,n)}function f(e){for(var r=0,n=e.length;n>r;r++){var i=e[r];d(i)?e[r]=f(i):i instanceof t&&(e[r]=f(i._data))}return e}var c=n(144),l=n(141),p=n(8),m=(c.number,c.string),h=c.array,g=c.object,d=Array.isArray,x=h.validateIndex;t.isMatrix=function(e){return e instanceof t},t.prototype.subset=function(e,r,n){switch(arguments.length){case 1:return i(this,e);case 2:case 3:return a(this,e,r,n);default:throw new SyntaxError("Wrong number of arguments")}},t.prototype.get=function(e){if(!d(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new l(e.length,this._size.length);for(var r=this._data,n=0,t=e.length;t>n;n++){var i=e[n];x(i,r.length),r=r[i]}return g.clone(r)},t.prototype.set=function(e,r,n){var t,i;if(!d(e))throw new Error("Array expected");if(e.lengtht;t++){var s=e[t];x(s,a.length),a=a[s]}return s=e[e.length-1],x(s,a.length),a[s]=r,this},t.prototype.resize=function(e,r){return this._size=g.clone(e),this._data=h.resize(this._data,this._size,r),this},t.prototype.clone=function(){var e=new t;return e._data=g.clone(this._data),e._size=g.clone(this._size),e},t.prototype.size=function(){return this._size},t.prototype.map=function(e){var r=this,n=new t,i=[],o=function(n,t){return d(n)?n.map(function(e,r){return i[t]=r,o(e,t+1)}):e(n,i,r)};return n._data=o(this._data,0),n._size=g.clone(this._size),n},t.prototype.forEach=function(e){var r=this,n=[],t=function(i,o){d(i)?i.forEach(function(e,r){n[o]=r,t(e,o+1)}):e(i,n,r)};t(this._data,0)},t.prototype.toArray=function(){return g.clone(this._data)},t.prototype.valueOf=function(){return this._data},t.prototype.format=function(e){return m.format(this._data,e)},t.prototype.toString=function(){return m.format(this._data)},e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new Error("Constructor must be called with the new operator");if(void 0!=e&&!y(e))throw new TypeError("First parameter in Unit constructor must be a number");if(void 0!=r&&(!w(r)||""==r))throw new TypeError("Second parameter in Unit constructor must be a string");if(void 0!=r){var n=l(r);if(!n)throw new SyntaxError('Unknown unit "'+r+'"');this.unit=n.unit,this.prefix=n.prefix}else this.unit=M,this.prefix=b;this.value=void 0!=e?this._normalize(e):null,this.fixPrefix=!1}function i(){for(;" "==h||" "==h;)s()}function o(e){return e>="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){m++,h=p.charAt(m)}function u(e){m=e,h=p.charAt(m)}function f(){var e,r="";if(e=m,"+"==h?s():"-"==h&&(r+=h,s()),!o(h))return u(e),null;if("."==h){if(r+=h,s(),!a(h))return u(e),null}else{for(;a(h);)r+=h,s();"."==h&&(r+=h,s())}for(;a(h);)r+=h,s();if("E"==h||"e"==h){if(r+=h,s(),("+"==h||"-"==h)&&(r+=h,s()),!a(h))return u(e),null;for(;a(h);)r+=h,s()}return r}function c(){var e="";for(i();h&&" "!=h&&" "!=h;)e+=h,s();return e||null}function l(e){for(var r in A)if(A.hasOwnProperty(r)&&x.endsWith(e,r)){var n=A[r],t=e.length-r.length,i=e.substring(0,t),o=n.prefixes[i];if(void 0!==o)return{unit:n,prefix:o}}return null}var p,m,h,g=n(144),d=g.number,x=g.string,y=g.number.isNumber,w=g.string.isString;t.parse=function(e){if(p=e,m=-1,h="",!w(p))return null;s(),i();var r,n=f();if(n){if(r=c(),s(),i(),h)return null;if(n&&r)try{return new t(Number(n),r)}catch(o){}}else{if(r=c(),s(),i(),h)return null;if(r)try{return new t(null,r)}catch(o){}}return null},t.isUnit=function(e){return e instanceof t},t.prototype.clone=function(){var e=new t;for(var r in this)this.hasOwnProperty(r)&&(e[r]=this[r]);return e},t.prototype._normalize=function(e){return(e+this.unit.offset)*this.unit.value*this.prefix.value},t.prototype._unnormalize=function(e,r){return void 0==r?e/this.unit.value/this.prefix.value-this.unit.offset:e/this.unit.value/r-this.unit.offset},t.isValuelessUnit=function(e){return null!=l(e)},t.prototype.hasBase=function(e){return this.unit.base===e},t.prototype.equalBase=function(e){return this.unit.base===e.unit.base},t.prototype.equals=function(e){return this.equalBase(e)&&this.value==e.value},t.prototype.to=function(e){var r;if(w(e)){if(r=new t(null,e),!this.equalBase(r))throw new Error("Units do not match");return r.value=this.value,r.fixPrefix=!0,r}if(e instanceof t){if(!this.equalBase(e))throw new Error("Units do not match");if(null!==e.value)throw new Error("Cannot convert to a unit with a value");return r=e.clone(),r.value=this.value,r.fixPrefix=!0,r}throw new Error("String or Unit expected as parameter")},t.prototype.toNumber=function(e){var r=this.to(e);return r._unnormalize(r.value,r.prefix.value)},t.prototype.toString=function(){return this.format()},t.prototype.valueOf=t.prototype.toString,t.prototype.format=function(e){var r,n;if(null===this.value||this.fixPrefix)r=this._unnormalize(this.value),n=null!==this.value?d.format(r,e)+" ":"",n+=this.prefix.name+this.unit.name;else{var t=this._bestPrefix();r=this._unnormalize(this.value,t.value),n=d.format(r,e)+" ",n+=t.name+this.unit.name}return n},t.prototype._bestPrefix=function(){var e=Math.abs(this.value/this.unit.value),r=b,n=Math.abs(Math.log(e/r.value)/Math.LN10-1.2),t=this.unit.prefixes;for(var i in t)if(t.hasOwnProperty(i)){var o=t[i];if(o.scientific){var a=Math.abs(Math.log(e/o.value)/Math.LN10-1.2);n>a&&(r=o,n=a)}}return r};var v={NONE:{"":{name:"",value:1,scientific:!0}},SHORT:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:10,scientific:!1},h:{name:"h",value:100,scientific:!1},k:{name:"k",value:1e3,scientific:!0},M:{name:"M",value:1e6,scientific:!0},G:{name:"G",value:1e9,scientific:!0},T:{name:"T",value:1e12,scientific:!0},P:{name:"P",value:1e15,scientific:!0},E:{name:"E",value:1e18,scientific:!0},Z:{name:"Z",value:1e21,scientific:!0},Y:{name:"Y",value:1e24,scientific:!0},d:{name:"d",value:.1,scientific:!1},c:{name:"c",value:.01,scientific:!1},m:{name:"m",value:.001,scientific:!0},u:{name:"u",value:1e-6,scientific:!0},n:{name:"n",value:1e-9,scientific:!0},p:{name:"p",value:1e-12,scientific:!0},f:{name:"f",value:1e-15,scientific:!0},a:{name:"a",value:1e-18,scientific:!0},z:{name:"z",value:1e-21,scientific:!0},y:{name:"y",value:1e-24,scientific:!0}},LONG:{"":{name:"",value:1,scientific:!0},deca:{name:"deca",value:10,scientific:!1},hecto:{name:"hecto",value:100,scientific:!1},kilo:{name:"kilo",value:1e3,scientific:!0},mega:{name:"mega",value:1e6,scientific:!0},giga:{name:"giga",value:1e9,scientific:!0},tera:{name:"tera",value:1e12,scientific:!0},peta:{name:"peta",value:1e15,scientific:!0},exa:{name:"exa",value:1e18,scientific:!0},zetta:{name:"zetta",value:1e21,scientific:!0},yotta:{name:"yotta",value:1e24,scientific:!0},deci:{name:"deci",value:.1,scientific:!1},centi:{name:"centi",value:.01,scientific:!1},milli:{name:"milli",value:.001,scientific:!0},micro:{name:"micro",value:1e-6,scientific:!0},nano:{name:"nano",value:1e-9,scientific:!0},pico:{name:"pico",value:1e-12,scientific:!0},femto:{name:"femto",value:1e-15,scientific:!0},atto:{name:"atto",value:1e-18,scientific:!0},zepto:{name:"zepto",value:1e-21,scientific:!0},yocto:{name:"yocto",value:1e-24,scientific:!0}},SQUARED:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:100,scientific:!1},h:{name:"h",value:1e4,scientific:!1},k:{name:"k",value:1e6,scientific:!0},M:{name:"M",value:1e12,scientific:!0},G:{name:"G",value:1e18,scientific:!0},T:{name:"T",value:1e24,scientific:!0},P:{name:"P",value:1e30,scientific:!0},E:{name:"E",value:1e36,scientific:!0},Z:{name:"Z",value:1e42,scientific:!0},Y:{name:"Y",value:1e48,scientific:!0},d:{name:"d",value:.01,scientific:!1},c:{name:"c",value:1e-4,scientific:!1},m:{name:"m",value:1e-6,scientific:!0},u:{name:"u",value:1e-12,scientific:!0},n:{name:"n",value:1e-18,scientific:!0},p:{name:"p",value:1e-24,scientific:!0},f:{name:"f",value:1e-30,scientific:!0},a:{name:"a",value:1e-36,scientific:!0},z:{name:"z",value:1e-42,scientific:!0},y:{name:"y",value:1e-42,scientific:!0}},CUBIC:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:1e3,scientific:!1},h:{name:"h",value:1e6,scientific:!1},k:{name:"k",value:1e9,scientific:!0},M:{name:"M",value:1e18,scientific:!0},G:{name:"G",value:1e27,scientific:!0},T:{name:"T",value:1e36,scientific:!0},P:{name:"P",value:1e45,scientific:!0},E:{name:"E",value:1e54,scientific:!0},Z:{name:"Z",value:1e63,scientific:!0},Y:{name:"Y",value:1e72,scientific:!0},d:{name:"d",value:.001,scientific:!1},c:{name:"c",value:1e-6,scientific:!1},m:{name:"m",value:1e-9,scientific:!0},u:{name:"u",value:1e-18,scientific:!0},n:{name:"n",value:1e-27,scientific:!0},p:{name:"p",value:1e-36,scientific:!0},f:{name:"f",value:1e-45,scientific:!0},a:{name:"a",value:1e-54,scientific:!0},z:{name:"z",value:1e-63,scientific:!0},y:{name:"y",value:1e-72,scientific:!0}},BINARY_SHORT:{"":{name:"",value:1,scientific:!0},k:{name:"k",value:1024,scientific:!0},M:{name:"M",value:Math.pow(1024,2),scientific:!0},G:{name:"G",value:Math.pow(1024,3),scientific:!0},T:{name:"T",value:Math.pow(1024,4),scientific:!0},P:{name:"P",value:Math.pow(1024,5),scientific:!0},E:{name:"E",value:Math.pow(1024,6),scientific:!0},Z:{name:"Z",value:Math.pow(1024,7),scientific:!0},Y:{name:"Y",value:Math.pow(1024,8),scientific:!0},Ki:{name:"Ki",value:1024,scientific:!0},Mi:{name:"Mi",value:Math.pow(1024,2),scientific:!0},Gi:{name:"Gi",value:Math.pow(1024,3),scientific:!0},Ti:{name:"Ti",value:Math.pow(1024,4),scientific:!0},Pi:{name:"Pi",value:Math.pow(1024,5),scientific:!0},Ei:{name:"Ei",value:Math.pow(1024,6),scientific:!0},Zi:{name:"Zi",value:Math.pow(1024,7),scientific:!0},Yi:{name:"Yi",value:Math.pow(1024,8),scientific:!0}},BINARY_LONG:{"":{name:"",value:1,scientific:!0},kilo:{name:"kilo",value:1024,scientific:!0},mega:{name:"mega",value:Math.pow(1024,2),scientific:!0},giga:{name:"giga",value:Math.pow(1024,3),scientific:!0},tera:{name:"tera",value:Math.pow(1024,4),scientific:!0},peta:{name:"peta",value:Math.pow(1024,5),scientific:!0},exa:{name:"exa",value:Math.pow(1024,6),scientific:!0},zetta:{name:"zetta",value:Math.pow(1024,7),scientific:!0},yotta:{name:"yotta",value:Math.pow(1024,8),scientific:!0},kibi:{name:"kibi",value:1024,scientific:!0},mebi:{name:"mebi",value:Math.pow(1024,2),scientific:!0},gibi:{name:"gibi",value:Math.pow(1024,3),scientific:!0},tebi:{name:"tebi",value:Math.pow(1024,4),scientific:!0},pebi:{name:"pebi",value:Math.pow(1024,5),scientific:!0},exi:{name:"exi",value:Math.pow(1024,6),scientific:!0},zebi:{name:"zebi",value:Math.pow(1024,7),scientific:!0},yobi:{name:"yobi",value:Math.pow(1024,8),scientific:!0}}},b={name:"",value:1,scientific:!0},E={NONE:{},LENGTH:{},MASS:{},TIME:{},CURRENT:{},TEMPERATURE:{},LUMINOUS_INTENSITY:{},AMOUNT_OF_SUBSTANCE:{},FORCE:{},SURFACE:{},VOLUME:{},ANGLE:{},BIT:{}},N={},M={name:"",base:N,value:1,offset:0},A={meter:{name:"meter",base:E.LENGTH,prefixes:v.LONG,value:1,offset:0},inch:{name:"inch",base:E.LENGTH,prefixes:v.NONE,value:.0254,offset:0},foot:{name:"foot",base:E.LENGTH,prefixes:v.NONE,value:.3048,offset:0},yard:{name:"yard",base:E.LENGTH,prefixes:v.NONE,value:.9144,offset:0},mile:{name:"mile",base:E.LENGTH,prefixes:v.NONE,value:1609.344,offset:0},link:{name:"link",base:E.LENGTH,prefixes:v.NONE,value:.201168,offset:0},rod:{name:"rod",base:E.LENGTH,prefixes:v.NONE,value:5.02921,offset:0},chain:{name:"chain",base:E.LENGTH,prefixes:v.NONE,value:20.1168,offset:0},angstrom:{name:"angstrom",base:E.LENGTH,prefixes:v.NONE,value:1e-10,offset:0},m:{name:"m",base:E.LENGTH,prefixes:v.SHORT,value:1,offset:0},"in":{name:"in",base:E.LENGTH,prefixes:v.NONE,value:.0254,offset:0},ft:{name:"ft",base:E.LENGTH,prefixes:v.NONE,value:.3048,offset:0},yd:{name:"yd",base:E.LENGTH,prefixes:v.NONE,value:.9144,offset:0},mi:{name:"mi",base:E.LENGTH,prefixes:v.NONE,value:1609.344,offset:0},li:{name:"li",base:E.LENGTH,prefixes:v.NONE,value:.201168,offset:0},rd:{name:"rd",base:E.LENGTH,prefixes:v.NONE,value:5.02921,offset:0},ch:{name:"ch",base:E.LENGTH,prefixes:v.NONE,value:20.1168,offset:0},mil:{name:"mil",base:E.LENGTH,prefixes:v.NONE,value:254e-7,offset:0},m2:{name:"m2",base:E.SURFACE,prefixes:v.SQUARED,value:1,offset:0},sqin:{name:"sqin",base:E.SURFACE,prefixes:v.NONE,value:64516e-8,offset:0},sqft:{name:"sqft",base:E.SURFACE,prefixes:v.NONE,value:.09290304,offset:0},sqyd:{name:"sqyd",base:E.SURFACE,prefixes:v.NONE,value:.83612736,offset:0},sqmi:{name:"sqmi",base:E.SURFACE,prefixes:v.NONE,value:2589988.110336,offset:0},sqrd:{name:"sqrd",base:E.SURFACE,prefixes:v.NONE,value:25.29295,offset:0},sqch:{name:"sqch",base:E.SURFACE,prefixes:v.NONE,value:404.6873,offset:0},sqmil:{name:"sqmil",base:E.SURFACE,prefixes:v.NONE,value:6.4516e-10,offset:0},m3:{name:"m3",base:E.VOLUME,prefixes:v.CUBIC,value:1,offset:0},L:{name:"L",base:E.VOLUME,prefixes:v.SHORT,value:.001,offset:0},l:{name:"l",base:E.VOLUME,prefixes:v.SHORT,value:.001,offset:0},litre:{name:"litre",base:E.VOLUME,prefixes:v.LONG,value:.001,offset:0},cuin:{name:"cuin",base:E.VOLUME,prefixes:v.NONE,value:16387064e-12,offset:0},cuft:{name:"cuft",base:E.VOLUME,prefixes:v.NONE,value:.028316846592,offset:0},cuyd:{name:"cuyd",base:E.VOLUME,prefixes:v.NONE,value:.764554857984,offset:0},teaspoon:{name:"teaspoon",base:E.VOLUME,prefixes:v.NONE,value:5e-6,offset:0},tablespoon:{name:"tablespoon",base:E.VOLUME,prefixes:v.NONE,value:15e-6,offset:0},drop:{name:"drop",base:E.VOLUME,prefixes:v.NONE,value:5e-8,offset:0},gtt:{name:"gtt",base:E.VOLUME,prefixes:v.NONE,value:5e-8,offset:0},minim:{name:"minim",base:E.VOLUME,prefixes:v.NONE,value:6.161152e-8,offset:0},fluiddram:{name:"fluiddram",base:E.VOLUME,prefixes:v.NONE,value:36966911e-13,offset:0},fluidounce:{name:"fluidounce",base:E.VOLUME,prefixes:v.NONE,value:2957353e-11,offset:0},gill:{name:"gill",base:E.VOLUME,prefixes:v.NONE,value:.0001182941,offset:0},cc:{name:"cc",base:E.VOLUME,prefixes:v.NONE,value:1e-6,offset:0},cup:{name:"cup",base:E.VOLUME,prefixes:v.NONE,value:.0002365882,offset:0},pint:{name:"pint",base:E.VOLUME,prefixes:v.NONE,value:.0004731765,offset:0},quart:{name:"quart",base:E.VOLUME,prefixes:v.NONE,value:.0009463529,offset:0},gallon:{name:"gallon",base:E.VOLUME,prefixes:v.NONE,value:.003785412,offset:0},beerbarrel:{name:"beerbarrel",base:E.VOLUME,prefixes:v.NONE,value:.1173478,offset:0},oilbarrel:{name:"oilbarrel",base:E.VOLUME,prefixes:v.NONE,value:.1589873,offset:0},hogshead:{name:"hogshead",base:E.VOLUME,prefixes:v.NONE,value:.238481,offset:0},fldr:{name:"fldr",base:E.VOLUME,prefixes:v.NONE,value:36966911e-13,offset:0},floz:{name:"floz",base:E.VOLUME,prefixes:v.NONE,value:2957353e-11,offset:0},gi:{name:"gi",base:E.VOLUME,prefixes:v.NONE,value:.0001182941,offset:0},cp:{name:"cp",base:E.VOLUME,prefixes:v.NONE,value:.0002365882,offset:0},pt:{name:"pt",base:E.VOLUME,prefixes:v.NONE,value:.0004731765,offset:0},qt:{name:"qt",base:E.VOLUME,prefixes:v.NONE,value:.0009463529,offset:0},gal:{name:"gal",base:E.VOLUME,prefixes:v.NONE,value:.003785412,offset:0},bbl:{name:"bbl",base:E.VOLUME,prefixes:v.NONE,value:.1173478,offset:0},obl:{name:"obl",base:E.VOLUME,prefixes:v.NONE,value:.1589873,offset:0},g:{name:"g",base:E.MASS,prefixes:v.SHORT,value:.001,offset:0},gram:{name:"gram",base:E.MASS,prefixes:v.LONG,value:.001,offset:0},ton:{name:"ton",base:E.MASS,prefixes:v.SHORT,value:907.18474,offset:0},tonne:{name:"tonne",base:E.MASS,prefixes:v.SHORT,value:1e3,offset:0},grain:{name:"grain",base:E.MASS,prefixes:v.NONE,value:6479891e-11,offset:0},dram:{name:"dram",base:E.MASS,prefixes:v.NONE,value:.0017718451953125,offset:0},ounce:{name:"ounce",base:E.MASS,prefixes:v.NONE,value:.028349523125,offset:0},poundmass:{name:"poundmass",base:E.MASS,prefixes:v.NONE,value:.45359237,offset:0},hundredweight:{name:"hundredweight",base:E.MASS,prefixes:v.NONE,value:45.359237,offset:0},stick:{name:"stick",base:E.MASS,prefixes:v.NONE,value:.115,offset:0},gr:{name:"gr",base:E.MASS,prefixes:v.NONE,value:6479891e-11,offset:0},dr:{name:"dr",base:E.MASS,prefixes:v.NONE,value:.0017718451953125,offset:0},oz:{name:"oz",base:E.MASS,prefixes:v.NONE,value:.028349523125,offset:0},lbm:{name:"lbm",base:E.MASS,prefixes:v.NONE,value:.45359237,offset:0},cwt:{name:"cwt",base:E.MASS,prefixes:v.NONE,value:45.359237,offset:0},s:{name:"s",base:E.TIME,prefixes:v.SHORT,value:1,offset:0},min:{name:"min",base:E.TIME,prefixes:v.NONE,value:60,offset:0},h:{name:"h",base:E.TIME,prefixes:v.NONE,value:3600,offset:0},second:{name:"second",base:E.TIME,prefixes:v.LONG,value:1,offset:0},sec:{name:"sec",base:E.TIME,prefixes:v.LONG,value:1,offset:0},minute:{name:"minute",base:E.TIME,prefixes:v.NONE,value:60,offset:0},hour:{name:"hour",base:E.TIME,prefixes:v.NONE,value:3600,offset:0},day:{name:"day",base:E.TIME,prefixes:v.NONE,value:86400,offset:0},rad:{name:"rad",base:E.ANGLE,prefixes:v.NONE,value:1,offset:0},deg:{name:"deg",base:E.ANGLE,prefixes:v.NONE,value:.017453292519943295,offset:0},grad:{name:"grad",base:E.ANGLE,prefixes:v.NONE,value:.015707963267948967,offset:0},cycle:{name:"cycle",base:E.ANGLE,prefixes:v.NONE,value:6.283185307179586,offset:0},A:{name:"A",base:E.CURRENT,prefixes:v.SHORT,value:1,offset:0},ampere:{name:"ampere",base:E.CURRENT,prefixes:v.LONG,value:1,offset:0},K:{name:"K",base:E.TEMPERATURE,prefixes:v.NONE,value:1,offset:0},degC:{name:"degC",base:E.TEMPERATURE,prefixes:v.NONE,value:1,offset:273.15},degF:{name:"degF",base:E.TEMPERATURE,prefixes:v.NONE,value:1/1.8,offset:459.67},degR:{name:"degR",base:E.TEMPERATURE,prefixes:v.NONE,value:1/1.8,offset:0},kelvin:{name:"kelvin",base:E.TEMPERATURE,prefixes:v.NONE,value:1,offset:0},celsius:{name:"celsius",base:E.TEMPERATURE,prefixes:v.NONE,value:1,offset:273.15},fahrenheit:{name:"fahrenheit",base:E.TEMPERATURE,prefixes:v.NONE,value:1/1.8,offset:459.67},rankine:{name:"rankine",base:E.TEMPERATURE,prefixes:v.NONE,value:1/1.8,offset:0},mol:{name:"mol",base:E.AMOUNT_OF_SUBSTANCE,prefixes:v.NONE,value:1,offset:0},mole:{name:"mole",base:E.AMOUNT_OF_SUBSTANCE,prefixes:v.NONE,value:1,offset:0},cd:{name:"cd",base:E.LUMINOUS_INTENSITY,prefixes:v.NONE,value:1,offset:0},candela:{name:"candela",base:E.LUMINOUS_INTENSITY,prefixes:v.NONE,value:1,offset:0},N:{name:"N",base:E.FORCE,prefixes:v.SHORT,value:1,offset:0},newton:{name:"newton",base:E.FORCE,prefixes:v.LONG,value:1,offset:0},lbf:{name:"lbf",base:E.FORCE,prefixes:v.NONE,value:4.4482216152605,offset:0},poundforce:{name:"poundforce",base:E.FORCE,prefixes:v.NONE,value:4.4482216152605,offset:0},b:{name:"b",base:E.BIT,prefixes:v.BINARY_SHORT,value:1,offset:0},bits:{name:"bits",base:E.BIT,prefixes:v.BINARY_LONG,value:1,offset:0},B:{name:"B",base:E.BIT,prefixes:v.BINARY_SHORT,value:8,offset:0},bytes:{name:"bytes",base:E.BIT,prefixes:v.BINARY_LONG,value:8,offset:0}},T={meters:"meter",inches:"inch",feet:"foot",yards:"yard",miles:"mile",links:"link",rods:"rod",chains:"chain",angstroms:"angstrom",litres:"litre",teaspoons:"teaspoon",tablespoons:"tablespoon",minims:"minim",fluiddrams:"fluiddram",fluidounces:"fluidounce",gills:"gill",cups:"cup",pints:"pint",quarts:"quart",gallons:"gallon",beerbarrels:"beerbarrel",oilbarrels:"oilbarrel",hogsheads:"hogshead",gtts:"gtt",grams:"gram",tons:"ton",tonnes:"tonne",grains:"grain",drams:"dram",ounces:"ounce",poundmasses:"poundmass",hundredweights:"hundredweight",sticks:"stick",seconds:"second",minutes:"minute",hours:"hour",days:"day",radians:"rad",degrees:"deg",gradients:"grad",cycles:"cycle",amperes:"ampere",moles:"mole"}; +for(var S in T)if(T.hasOwnProperty(S)){var O=A[T[S]],C=Object.create(O);C.name=S,A[S]=C}A.lt=A.l,A.liter=A.litre,A.liters=A.litres,A.lb=A.lbm,A.lbs=A.lbm,t.PREFIXES=v,t.BASE_UNITS=E,t.UNITS=A,e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");this.math=e,this.doc=r}var i=n(144),o=i.object,a=i.string;t.isHelp=function(e){return e instanceof t},t.prototype.toString=function(){var e=this.doc||{},r="\n";if(e.name&&(r+="Name: "+e.name+"\n\n"),e.category&&(r+="Category: "+e.category+"\n\n"),e.description&&(r+="Description:\n "+e.description+"\n\n"),e.syntax&&(r+="Syntax:\n "+e.syntax.join("\n ")+"\n\n"),e.examples){var n=this.math.parser();r+="Examples:\n";for(var i=0;i=r){if(c(e[0])){for(u=i(e),a=[],o=0;on;n++){var a=[];for(r=0;t>r;r++)a.push(e[r][n]);o.push(a)}return o}{var o=n(144),a=n(142),s=n(141),u=n(9),f=o.array,c=o.array.isArray;o.string.isString}r.argsToArray=function(e){if(0==e.length)return[];if(1==e.length){var r=e[0];return r instanceof u&&(r=r.valueOf()),c(r)||(r=[r]),r}return o.array.argsToArray(e)},r.isCollection=function(e){return c(e)||e instanceof u},r.deepMap=function l(e,r){return e&&"function"==typeof e.map?e.map(function(e){return l(e,r)}):r(e)},r.deepMap2=function p(e,r,n){var t,i,o;if(c(e))if(c(r)){if(e.length!=r.length)throw new s(e.length,r.length);for(t=[],i=e.length,o=0;i>o;o++)t[o]=p(e[o],r[o],n)}else{if(r instanceof u)return t=p(e,r.valueOf(),n),new u(t);for(t=[],i=e.length,o=0;i>o;o++)t[o]=p(e[o],r,n)}else{if(e instanceof u)return r instanceof u?(t=p(e.valueOf(),r.valueOf(),n),new u(t)):(t=p(e.valueOf(),r,n),new u(t));if(c(r))for(t=[],i=r.length,o=0;i>o;o++)t[o]=p(e,r[o],n);else{if(r instanceof u)return t=p(e,r.valueOf(),n),new u(t);t=n(e,r)}}return t},r.reduce=function(e,r,n){var i=c(e)?f.size(e):e.size();if(0>r)throw new a(r);if(r>=i.length)throw new a(r,i.length);return e instanceof u?new u(t(e.valueOf(),r,n)):t(e,r,n)},r.deepForEach=function m(e,r){e instanceof u&&(e=e.valueOf());for(var n=0,t=e.length;t>n;n++){var i=e[n];c(i)?m(i,r):r(i)}}},function(e,r,n){"use strict";function t(e,r){if(1!=arguments.length&&2!=arguments.length)throw new F("parse",arguments.length,1,2);if(sr=r&&r.nodes?r.nodes:{},D(e))return ur=e,h();if(G(e)||e instanceof V)return H.deepMap(e,function(e){if(!D(e))throw new TypeError("String expected");return ur=e,h()});throw new TypeError("String or matrix expected")}function i(){fr=0,cr=ur.charAt(0),mr=0,hr=null}function o(){fr++,cr=ur.charAt(fr)}function a(){return ur.charAt(fr+1)}function s(){for(pr=ir.NULL,lr="";" "==cr||" "==cr||"\n"==cr&&mr;)o();if("#"==cr)for(;"\n"!=cr&&""!=cr;)o();if(""==cr)return void(pr=ir.DELIMITER);if("\n"==cr&&!mr)return pr=ir.DELIMITER,lr=cr,void o();var e=cr+a();if(2==e.length&&or[e])return pr=ir.DELIMITER,lr=e,o(),void o();if(or[cr])return pr=ir.DELIMITER,lr=cr,void o();if(!p(cr)){if(l(cr)){for(;l(cr)||m(cr);)lr+=cr,o();return void(pr=ar[lr]?ir.DELIMITER:ir.SYMBOL)}for(pr=ir.UNKNOWN;""!=cr;)lr+=cr,o();throw P('Syntax error in part "'+lr+'"')}if(pr=ir.NUMBER,"."==cr)lr+=cr,o(),m(cr)||(pr=ir.UNKNOWN);else{for(;m(cr);)lr+=cr,o();"."==cr&&(lr+=cr,o())}for(;m(cr);)lr+=cr,o();if("E"==cr||"e"==cr)for(lr+=cr,o(),("+"==cr||"-"==cr)&&(lr+=cr,o()),m(cr)||(pr=ir.UNKNOWN);m(cr);)lr+=cr,o()}function u(){do s();while("\n"==lr)}function f(){mr++}function c(){mr--}function l(e){return e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"==e}function p(e){return e>="0"&&"9">=e||"."==e}function m(e){return e>="0"&&"9">=e}function h(){i(),s();var e=g();if(""!=lr)throw pr==ir.DELIMITER?k("Unexpected operator "+lr):P('Unexpected part "'+lr+'"');return e}function g(){var e,r,n;if(""==lr)return new K("undefined","undefined");for("\n"!=lr&&";"!=lr&&(e=d());"\n"==lr||";"==lr;)r||(r=new W,e&&(n=";"!=lr,r.add(e,n))),s(),"\n"!=lr&&";"!=lr&&""!=lr&&(e=d(),n=";"!=lr,r.add(e,n));return r?r:e}function d(){if(pr==ir.SYMBOL&&"function"==lr)throw P('Deprecated keyword "function". Functions can now be assigned without it, like "f(x) = x^2".');return x()}function x(){var e,r,n,t,i=y();if("="==lr){if(i instanceof nr)return e=i.name,u(),n=x(),new Z(e,n);if(i instanceof J)return u(),n=x(),new tr(i,n);if(i instanceof er&&(t=!0,r=[],e=i.symbol.name,i.params.forEach(function(e,n){e instanceof nr?r[n]=e.name:t=!1}),t))return u(),n=x(),new $(e,r,n);throw P("Invalid left hand side of assignment operator =")}return i}function y(){for(var e=w();"?"==lr;){var r=hr;hr=mr,u();var n=e,t=w();if(":"!=lr)throw P("False part of conditional expression expected");hr=null,u();var i=y();e=new Q(n,t,i),hr=r}return e}function w(){var e,r,n,t,i;for(e=v(),r={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};lr in r;)n=lr,t=r[n],u(),i=[e,v()],e=new X(n,t,i);return e}function v(){var e,r,n,t,i;for(e=b(),r={to:"to","in":"to"};lr in r;)n=lr,t=r[n],u(),i=[e,b()],e=new X(n,t,i);return e}function b(){var e,r=[];if(e=":"==lr?new K("1","number"):E(),":"==lr&&hr!==mr){for(r.push(e);":"==lr;)u(),r.push(")"==lr||"]"==lr||","==lr||""==lr?new nr("end"):E());if(3==r.length){var n=r[2];r[2]=r[1],r[1]=n}e=new rr(r)}return e}function E(){var e,r,n,t,i;for(e=N(),r={"+":"add","-":"subtract"};lr in r;)n=lr,t=r[n],u(),i=[e,N()],e=new X(n,t,i);return e}function N(){var e,r,n,t,i;if(e=M(),r={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"},lr in r)for(;lr in r;)n=lr,t=r[n],u(),i=[e,M()],e=new X(n,t,i);return(pr==ir.SYMBOL||"in"==lr&&e instanceof K||pr==ir.NUMBER&&!(e instanceof K)||"("==lr||"["==lr)&&(e=new X("*","multiply",[e,N()])),e}function M(){var e,r,n;return"-"==lr||"+"==lr?(e=lr,r="+"==e?"unaryPlus":"unaryMinus",u(),n=[M()],new X(e,r,n)):A()}function A(){var e,r,n,t;return e=T(),("^"==lr||".^"==lr)&&(r=lr,n="^"==r?"pow":"dotPow",u(),t=[e,M()],e=new X(r,n,t)),e}function T(){var e,r,n,t,i;for(e=S(),r={"!":"factorial","'":"transpose"};lr in r;)n=lr,t=r[n],s(),i=[e],e=new X(n,t,i);return e}function S(){var e,r=[];if(pr==ir.SYMBOL&&sr[lr]){if(e=sr[lr],s(),"("==lr){if(r=[],f(),s(),")"!=lr)for(r.push(y());","==lr;)s(),r.push(y());if(")"!=lr)throw P("Parenthesis ) expected");c(),s()}return new e(r)}return O()}function O(){var e,r;return pr==ir.SYMBOL||pr==ir.DELIMITER&&lr in ar?(r=lr,s(),e=new nr(r),e=C(e),e=U(e)):q()}function C(e){var r;if("("==lr){if(r=[],f(),s(),")"!=lr)for(r.push(y());","==lr;)s(),r.push(y());if(")"!=lr)throw P("Parenthesis ) expected");return c(),s(),new er(e,r)}return e}function U(e){for(var r;"["==lr;){if(r=[],f(),s(),"]"!=lr)for(r.push(y());","==lr;)s(),r.push(y());if("]"!=lr)throw P("Parenthesis ] expected");c(),s(),e=new J(e,r)}return e}function q(){var e,r,n;if('"'==lr){for(r="",n="";""!=cr&&('"'!=cr||"\\"==n);)r+=cr,n=cr,o();if(s(),'"'!=lr)throw P('End of string " expected');return s(),e=new K(r,"string"),e=U(e)}return B()}function B(){var e,r,n,t;if("["==lr){if(f(),s(),"]"!=lr){var i=z();if(";"==lr){for(n=1,r=[i];";"==lr;)s(),r[n]=z(),n++;if("]"!=lr)throw P("End of matrix ] expected");c(),s(),t=r[0].nodes.length;for(var o=1;n>o;o++)if(r[o].nodes.length!=t)throw k("Column dimensions mismatch ("+r[o].nodes.length+" != "+t+")");e=new Y(r)}else{if("]"!=lr)throw P("End of matrix ] expected");c(),s(),e=i}}else c(),s(),e=new Y([]);return e}return I()}function z(){for(var e=[x()],r=1;","==lr;)s(),e[r]=x(),r++;return new Y(e)}function I(){var e;return pr==ir.NUMBER?(e=lr,s(),new K(e,"number")):_()}function _(){var e;if("("==lr){if(f(),s(),e=x(),")"!=lr)throw P("Parenthesis ) expected");return c(),s(),e}return R()}function R(){throw P(""==lr?"Unexpected end of expression":"Value expected")}function L(){return fr-lr.length+1}function P(e){var r=L(),n=new SyntaxError(e+" (char "+r+")");return n["char"]=r,n}function k(e){var r=L(),n=new Error(e+" (char "+r+")");return n["char"]=r,n}var j=n(144),F=n(140),D=j.string.isString,G=Array.isArray,V=(j.types.type,n(6),n(9)),H=(n(10),n(13)),Y=n(145),Z=n(146),W=n(147),Q=n(148),K=n(149),$=n(150),J=n(151),X=n(152),er=n(153),rr=n(154),nr=n(155),tr=n(156),ir={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},or={",":!0,"(":!0,")":!0,"[":!0,"]":!0,'"':!0,";":!0,"+":!0,"-":!0,"*":!0,".*":!0,"/":!0,"./":!0,"%":!0,"^":!0,".^":!0,"!":!0,"'":!0,"=":!0,":":!0,"?":!0,"==":!0,"!=":!0,"<":!0,">":!0,"<=":!0,">=":!0},ar={mod:!0,to:!0,"in":!0},sr={},ur="",fr=0,cr="",lr="",pr=ir.NULL,mr=0,hr=null;e.exports=t},function(e,r,n){"use strict";function t(e){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof Object))throw new TypeError("Object expected as parameter math");this.math=e,this.scope={}}var i=n(14);t.prototype.parse=function(){throw new Error("Parser.parse is deprecated. Use math.parse instead.")},t.prototype.compile=function(){throw new Error("Parser.compile is deprecated. Use math.compile instead.")},t.prototype.eval=function(e){return i(e).compile(this.math).eval(this.scope)},t.prototype.get=function(e){return this.scope[e]},t.prototype.set=function(e,r){return this.scope[e]=r},t.prototype.remove=function(e){delete this.scope[e]},t.prototype.clear=function(){for(var e in this.scope)this.scope.hasOwnProperty(e)&&delete this.scope[e]},e.exports=t},function(e,r,n){"use strict";r.ArrayNode=n(145),r.AssignmentNode=n(146),r.BlockNode=n(147),r.ConditionalNode=n(148),r.ConstantNode=n(149),r.IndexNode=n(151),r.FunctionAssignmentNode=n(150),r.FunctionNode=n(153),r.Node=n(157),r.OperatorNode=n(152),r.RangeNode=n(154),r.SymbolNode=n(155),r.UpdateNode=n(156)},function(e,r,n){r.e=n(161),r.E=n(161),r["false"]=n(162),r.i=n(163),r.Infinity=n(164),r.LN2=n(165),r.LN10=n(166),r.LOG2E=n(167),r.LOG10E=n(168),r.NaN=n(169),r["null"]=n(170),r.pi=n(171),r.PI=n(171),r.phi=n(172),r.SQRT1_2=n(173),r.SQRT2=n(174),r.tau=n(175),r["true"]=n(176),r.version=n(177),r.abs=n(181),r.add=n(182),r.ceil=n(183),r.cube=n(184),r.divide=n(185),r.dotDivide=n(186),r.dotMultiply=n(187),r.dotPow=n(188),r.exp=n(189),r.fix=n(190),r.floor=n(191),r.gcd=n(192),r.lcm=n(193),r.log=n(194),r.log10=n(195),r.mod=n(196),r.multiply=n(197),r.norm=n(198),r.pow=n(199),r.round=n(200),r.sign=n(201),r.sqrt=n(202),r.square=n(203),r.subtract=n(204),r.unaryMinus=n(205),r.unaryPlus=n(206),r.xgcd=n(207),r.compare=n(208),r.deepEqual=n(209),r.equal=n(210),r.larger=n(211),r.largerEq=n(212),r.smaller=n(213),r.smallerEq=n(214),r.unequal=n(215),r.arg=n(216),r.conj=n(217),r.re=n(218),r.im=n(219),r.bignumber=n(220),r["boolean"]=n(221),r.complex=n(222),r.index=n(223),r.matrix=n(224),r.number=n(225),r.string=n(226),r.unit=n(227),r.eval=n(228),r.help=n(229),r.concat=n(230),r.det=n(231),r.diag=n(232),r.eye=n(233),r.flatten=n(234),r.inv=n(235),r.ones=n(236),r.range=n(237),r.resize=n(238),r.size=n(239),r.squeeze=n(240),r.subset=n(241),r.transpose=n(242),r.zeros=n(243),r.combinations=n(244),r.factorial=n(245),r.permutations=n(246),r.pickRandom=n(247),r.random=n(248),r.randomInt=n(249),r.max=n(250),r.mean=n(251),r.median=n(252),r.min=n(253),r.prod=n(254),r.std=n(255),r.sum=n(256),r["var"]=n(257),r.acos=n(258),r.asin=n(259),r.atan=n(260),r.atan2=n(261),r.cos=n(262),r.cosh=n(263),r.cot=n(264),r.coth=n(265),r.csc=n(266),r.csch=n(267),r.sec=n(268),r.sech=n(269),r.sin=n(270),r.sinh=n(271),r.tan=n(272),r.tanh=n(273),r.to=n(274),r.clone=n(275),r.map=n(276),r.filter=n(277),r.forEach=n(278),r.format=n(279),r["import"]=n(280),r.sort=n(281),r["typeof"]=n(282)},function(e,r,n){"use strict";var t=n(139),i=n(158).transform,o=n(4).isNumber,a=n(137).argsToArray;e.exports=function(e){e.concat.transform=function(){var r=a(arguments),n=r.length-1,s=r[n];o(s)?r[n]=s-1:s instanceof t&&(r[n]=s.minus(1));try{return e.concat.apply(e,r)}catch(u){throw i(u)}}}},function(e,r,n){"use strict";var t=n(155),i=(n(159).isBoolean,n(137).argsToArray,n(140));e.exports=function(e){var r=e.filter;r.transform=function(e,n,o){if(2!==e.length)throw new i("filter",arguments.length,2);var a,s=e[0].compile(n).eval(o);if(e[1]instanceof t)a=e[1].compile(n).eval(o);else{var u=o||{},f=e[1].find({type:t}).filter(function(e){return!(e.name in n||e.name in u)})[0],c=Object.create(u),l=e[1].compile(n);if(!f)throw new Error("No undefined variable found in filter equation");var p=f.name;a=function(e){return c[p]=e,l.eval(c)}}return r(s,a)},e.filter.transform.rawArgs=!0}},function(e,r,n){"use strict";{var t=n(9);n(139),n(7),n(8),n(4).isNumber,Array.isArray}e.exports=function(e){e.forEach.transform=function(r,n){if(2!=arguments.length)throw new e.error.ArgumentsError("forEach",arguments.length,2);var i=r instanceof t?r.valueOf():r;if(!Array.isArray(i))throw new e.error.UnsupportedTypeError("forEach",e["typeof"](r));var o=[],a=function(e,t){return Array.isArray(e)?e.map(function(e,r){return o[t]=r+1,a(e,t+1)}):void n(e,o,r)};a(i,0)}}},function(e,r,n){"use strict";var t=n(139),i=n(7),o=n(8),a=n(9),s=n(4).isNumber,u=Array.isArray;e.exports=function(e){e.index.transform=function(){for(var e=[],r=0,n=arguments.length;n>r;r++){var f=arguments[r];if(f instanceof a&&(f=f.toArray()),f instanceof i)f.start--,f.end-=f.step.valueOf()>0?0:2;else if(u(f)){for(var c=0,l=f.length;l>c;c++)f[c]=f[c]instanceof t?f[c].toNumber():f[c];var p=f.length>2?f[2]:1;f[0]--,f[1]-=p>0?0:2}else s(f)?f--:f instanceof t&&(f=f.toNumber()-1);e[r]=f}var m=new o;return o.apply(m,e),m}}},function(e,r,n){"use strict";{var t=n(9);n(139),n(7),n(8),n(4).isNumber,Array.isArray}e.exports=function(e){e.map.transform=function(r,n){if(2!=arguments.length)throw new e.error.ArgumentsError("map",arguments.length,2);var i=r instanceof t,o=i?r.valueOf():r;if(Array.isArray(o)){var a=[],s=function(e,t){return Array.isArray(e)?e.map(function(e,r){return a[t]=r+1,s(e,t+1)}):n(e,a,r)},u=s(o,0);return i?new t(u):u}throw new e.error.UnsupportedTypeError("map",e["typeof"](r))}}},function(e,r,n){"use strict";var t=n(139),i=n(158).transform,o=n(4).isNumber,a=n(13).isCollection,s=n(137).argsToArray;e.exports=function(e){e.max.transform=function(){var r=s(arguments);if(2==r.length&&a(r[0])){var n=r[1];o(n)?r[1]=n-1:n instanceof t&&(r[1]=n.minus(1))}try{return e.max.apply(e,r)}catch(u){throw i(u)}}}},function(e,r,n){"use strict";var t=n(139),i=n(158).transform,o=n(4).isNumber,a=n(13).isCollection,s=n(137).argsToArray;e.exports=function(e){e.mean.transform=function(){var r=s(arguments);if(2==r.length&&a(r[0])){var n=r[1];o(n)?r[1]=n-1:n instanceof t&&(r[1]=n.minus(1))}try{return e.mean.apply(e,r)}catch(u){throw i(u)}}}},function(e,r,n){"use strict";var t=n(139),i=n(158).transform,o=n(4).isNumber,a=n(13).isCollection,s=n(137).argsToArray;e.exports=function(e){e.min.transform=function(){var r=s(arguments);if(2==r.length&&a(r[0])){var n=r[1];o(n)?r[1]=n-1:n instanceof t&&(r[1]=n.minus(1))}try{return e.min.apply(e,r)}catch(u){throw i(u)}}}},function(e,r,n){"use strict";var t=n(159).isBoolean,i=n(137).argsToArray;e.exports=function(e){e.range.transform=function(){var r=i(arguments),n=r.length-1,o=r[n];return t(o)||r.push(!0),e.range.apply(e,r)}}},function(e,r,n){"use strict";var t=n(158).transform,i=(n(159).isBoolean,n(137).argsToArray);e.exports=function(e){e.subset.transform=function(){try{return e.subset.apply(e,i(arguments))}catch(r){throw t(r)}}}},function(e,r,n){"use strict";e.exports=function(e){function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.value=e instanceof r?e.value:e}function t(e,n){var t=Array.prototype.slice;r.prototype[e]="function"==typeof n?function(){var e=[this.value].concat(t.call(arguments,0));return new r(n.apply(this,e))}:new r(n)}var i=n(160);r.prototype.done=function(){return this.value},r.prototype.valueOf=function(){return this.value},r.prototype.toString=function(){return i.format(this.value)},r.createProxy=t;for(var o in e)e.hasOwnProperty(o)&&t(o,e[o]);return r}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=n(14),i=n(13),o=r.string.isString,a=i.isCollection;e.compile=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("compile",arguments.length,1);if(o(r))return t(r).compile(e);if(a(r))return i.deepMap(r,function(r){return t(r).compile(e)});throw new TypeError("String, array, or matrix expected")}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=n(14),i=n(13),o=r.string.isString,a=i.isCollection;e.eval=function(r,n){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("eval",arguments.length,1,2);if(n=n||{},o(r))return t(r).compile(e).eval(n);if(a(r))return i.deepMap(r,function(r){return t(r).compile(e).eval(n)});throw new TypeError("String, array, or matrix expected")}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(11);e.help=function(n){if(1!=arguments.length)throw new SyntaxError("Wrong number of arguments in function help ("+arguments.length+" provided, 1 expected)");var t=null;if(n instanceof String||"string"==typeof n)t=n;else{var i;for(i in e)if(e.hasOwnProperty(i)&&n===e[i]){t=i;break}}var o=e.expression.docs[t];if(!t||!o)throw new Error('No documentation found on "'+t+'"');return new r(e,o)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(14);e.parse=function(){return r.apply(r,arguments)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=(n(9),n(13)),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.abs=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("abs",arguments.length,1);if(a(r))return Math.abs(r);if(u(r))return Math.sqrt(r.re*r.re+r.im*r.im);if(r instanceof t)return r.abs();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.abs(r);throw new e.error.UnsupportedTypeError("abs",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=(n(9),n(10)),a=n(13),s=r["boolean"].isBoolean,u=r.number.isNumber,f=r.string.isString,c=i.isComplex,l=o.isUnit,p=a.isCollection;e.add=function m(r,n){if(2!=arguments.length)throw new e.error.ArgumentsError("add",arguments.length,2);if(u(r)){if(u(n))return r+n;if(c(n))return new i(r+n.re,n.im)}if(c(r)){if(c(n))return new i(r.re+n.re,r.im+n.im);if(u(n))return new i(r.re+n,r.im)}if(l(r)&&l(n)){if(null==r.value)throw new Error("Parameter x contains a unit with undefined value");if(null==n.value)throw new Error("Parameter y contains a unit with undefined value");if(!r.equalBase(n))throw new Error("Units do not match");var o=r.clone();return o.value+=n.value,o.fixPrefix=!1,o}if(r instanceof t)return u(n)?n=t.convert(n):(s(n)||null===n)&&(n=new t(n?1:0)),n instanceof t?r.plus(n):m(r.toNumber(),n);if(n instanceof t)return u(r)?r=t.convert(r):(s(r)||null===r)&&(r=new t(r?1:0)),r instanceof t?r.plus(n):m(r,n.toNumber());if(p(r)||p(n))return a.deepMap2(r,n,m);if(f(r)||f(n))return r+n;if(s(r)||null===r)return m(+r,n);if(s(n)||null===n)return m(r,+n);throw new e.error.UnsupportedTypeError("add",e["typeof"](r),e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,f=i.isComplex;e.ceil=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("ceil",arguments.length,1);if(a(r))return Math.ceil(r);if(f(r))return new i(Math.ceil(r.re),Math.ceil(r.im));if(r instanceof t)return r.ceil();if(u(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.ceil(r);throw new e.error.UnsupportedTypeError("ceil",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.cube=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cube",arguments.length,1);if(a(r))return r*r*r;if(u(r))return e.multiply(e.multiply(r,r),r);if(r instanceof t)return r.times(r).times(r);if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("cube",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){function r(e,r){var n=r.re*r.re+r.im*r.im;return 0!=n?new o((e.re*r.re+e.im*r.im)/n,(e.im*r.re-e.re*r.im)/n):new o(0!=e.re?e.re/0:0,0!=e.im?e.im/0:0)}var t=n(144),i=e.type.BigNumber,o=n(6),a=(n(9),n(10)),s=n(13),u=t.number.isNumber,f=t["boolean"].isBoolean,c=o.isComplex,l=a.isUnit,p=s.isCollection;e.divide=function m(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("divide",arguments.length,2);if(u(n)){if(u(t))return n/t;if(c(t))return r(new o(n,0),t)}if(c(n)){if(c(t))return r(n,t);if(u(t))return r(n,new o(t,0))}if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.div(t):m(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.div(t):m(n,t.toNumber());if(l(n)&&u(t)){var a=n.clone();return a.value/=t,a}if(p(n))return p(t)?e.multiply(n,e.inv(t)):s.deepMap2(n,t,m);if(p(t))return e.multiply(n,e.inv(t));if(f(n)||null===n)return m(+n,t);if(f(t)||null===t)return m(n,+t);throw new e.error.UnsupportedTypeError("divide",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(13);e.dotDivide=function(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("dotDivide",arguments.length,2);return r.deepMap2(n,t,e.divide)},e.edivide=function(){throw new Error("Function edivide is renamed to dotDivide")}}},function(e,r,n){"use strict";e.exports=function(e){var r=(n(144),n(13));e.dotMultiply=function(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("dotMultiply",arguments.length,2);return r.deepMap2(n,t,e.multiply)},e.emultiply=function(){throw new Error("Function emultiply is renamed to dotMultiply")}}},function(e,r,n){"use strict";e.exports=function(e){var r=(n(144),n(13));e.dotPow=function(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("dotPow",arguments.length,2);return r.deepMap2(n,t,e.pow)},e.epow=function(){throw new Error("Function epow is renamed to dotPow")}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=(n(9),n(13)),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.exp=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("exp",arguments.length,1);if(a(r))return Math.exp(r);if(u(r)){var n=Math.exp(r.re);return new i(n*Math.cos(r.im),n*Math.sin(r.im))}if(r instanceof t)return r.exp();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.exp(r);throw new e.error.UnsupportedTypeError("exp",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.fix=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("fix",arguments.length,1);if(a(r))return r>0?Math.floor(r):Math.ceil(r);if(u(r))return new i(r.re>0?Math.floor(r.re):Math.ceil(r.re),r.im>0?Math.floor(r.im):Math.ceil(r.im));if(r instanceof t)return r.isNegative()?r.ceil():r.floor();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("fix",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.floor=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("floor",arguments.length,1);if(a(r))return Math.floor(r);if(u(r))return new i(Math.floor(r.re),Math.floor(r.im));if(r instanceof t)return r.floor();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("floor",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){function r(e,r){if(!e.isInt()||!r.isInt())throw new Error("Parameters in function gcd must be integer numbers");for(var n=new i(0);!r.isZero();){var t=e.mod(r);e=r,r=t}return e.lt(n)?e.neg():e}var t=n(144),i=e.type.BigNumber,o=n(13),a=t.number.isNumber,s=t["boolean"].isBoolean,u=t.number.isInteger,f=o.isCollection;e.gcd=function c(){var n,t=arguments[0],l=arguments[1];if(2==arguments.length){if(a(t)&&a(l)){if(!u(t)||!u(l))throw new Error("Parameters in function gcd must be integer numbers");for(;0!=l;)n=t%l,t=l,l=n;return 0>t?-t:t}if(f(t)||f(l))return o.deepMap2(t,l,c);if(t instanceof i)return a(l)?l=i.convert(l):(s(l)||null===l)&&(l=new i(l?1:0)),l instanceof i?r(t,l):c(t.toNumber(),l);if(l instanceof i)return a(t)?t=i.convert(t):(s(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?r(t,l):c(t.toNumber(),l);if(s(t)||null===t)return c(+t,l);if(s(l)||null===l)return c(t,+l);throw new e.error.UnsupportedTypeError("gcd",e["typeof"](t),e["typeof"](l))}if(arguments.length>2){for(var p=1;p2){for(var m=1;m=0?Math.log(r):c(new i(r,0));if(u(r))return new i(Math.log(Math.sqrt(r.re*r.re+r.im*r.im)),Math.atan2(r.im,r.re));if(r instanceof t)return r.isNegative()?c(r.toNumber()):r.ln();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("log",e["typeof"](r))}if(2==arguments.length)return e.divide(c(r),c(n));throw new e.error.ArgumentsError("log",arguments.length,1,2)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.log10=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("log10",arguments.length,1);if(a(r))return r>=0?Math.log(r)/Math.LN10:c(new i(r,0));if(r instanceof t)return r.isNegative()?c(r.toNumber()):r.log();if(u(r))return new i(Math.log(Math.sqrt(r.re*r.re+r.im*r.im))/Math.LN10,Math.atan2(r.im,r.re)/Math.LN10);if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("log10",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){function r(e,r){if(r>0)return e-r*Math.floor(e/r);if(0==r)return e;throw new Error("Cannot calculate mod for a negative divisor")}var t=n(144),i=e.type.BigNumber,o=n(13),a=t.number.isNumber,s=t["boolean"].isBoolean,u=o.isCollection;e.mod=function f(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("mod",arguments.length,2);if(a(n)&&a(t))return r(n,t);if(n instanceof i)return a(t)?t=i.convert(t):(s(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.isZero()?n:n.mod(t):f(n.toNumber(),t);if(t instanceof i)return a(n)?n=i.convert(n):(s(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.isZero()?n:n.mod(t):f(n,t.toNumber());if(u(n)||u(t))return o.deepMap2(n,t,f);if(s(n)||null===n)return f(+n,t);if(s(t)||null===t)return f(n,+t);throw new e.error.UnsupportedTypeError("mod",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){for(var t=[],i=r.length,o=n[0].length,a=r[0].length,s=0;i>s;s++){t[s]=[];for(var u=0;o>u;u++){for(var f=null,c=0;a>c;c++){var l=e.multiply(r[s][c],n[c][u]);f=null===f?l:e.add(f,l)}t[s][u]=f}}var p=1===i&&1===o;return p?t[0][0]:t}function t(r,n){for(var t=[],i=n.length,o=n[0].length,a=0;o>a;a++){for(var s=null,u=0;i>u;u++){var f=e.multiply(r[u],n[u][a]);s=0===u?f:e.add(s,f)}t[a]=s}return 1===t.length?t[0]:t}function i(r,n){for(var t=[],i=r.length,o=r[0].length,a=0;i>a;a++){for(var s=null,u=0;o>u;u++){var f=e.multiply(r[a][u],n[u]);s=0===u?f:e.add(s,f)}t[a]=s}return 1===t.length?t[0]:t}function o(r,n){var t=r.length;if(!t)throw new Error("Cannot multiply two empty vectors");for(var i=0,o=0;t>o;o++)i=e.add(i,e.multiply(r[o],n[o]));return i}function a(e,r){return 0==e.im?0==r.im?new f(e.re*r.re,0):0==r.re?new f(0,e.re*r.im):new f(e.re*r.re,e.re*r.im):0==e.re?0==r.im?new f(0,e.im*r.re):0==r.re?new f(-e.im*r.im,0):new f(-e.im*r.im,e.im*r.re):0==r.im?new f(e.re*r.re,e.im*r.re):0==r.re?new f(-e.im*r.im,e.re*r.im):new f(e.re*r.re-e.im*r.im,e.re*r.im+e.im*r.re)}var s=n(144),u=e.type.BigNumber,f=n(6),c=n(9),l=n(10),p=n(13),m=s.array,h=s.number.isNumber,g=s["boolean"].isBoolean,d=f.isComplex,x=Array.isArray,y=l.isUnit;e.multiply=function w(n,s){var l;if(2!=arguments.length)throw new e.error.ArgumentsError("multiply",arguments.length,2);if(h(n)){if(h(s))return n*s;if(d(s))return a(new f(n,0),s);if(y(s))return l=s.clone(),l.value=null===l.value?l._normalize(n):l.value*n,l}if(d(n)){if(h(s))return a(n,new f(s,0));if(d(s))return a(n,s)}if(n instanceof u)return h(s)?s=u.convert(s):(g(s)||null===s)&&(s=new u(s?1:0)),s instanceof u?n.times(s):w(n.toNumber(),s);if(s instanceof u)return h(n)?n=u.convert(n):(g(n)||null===n)&&(n=new u(n?1:0)),n instanceof u?n.times(s):w(n,s.toNumber());if(y(n)&&h(s))return l=n.clone(),l.value=null===l.value?l._normalize(s):l.value*s,l;if(x(n)){if(x(s)){var v=m.size(n),b=m.size(s);if(1==v.length){if(1==b.length){if(v[0]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Length of A must match length of B (A is "+v[0]+", B is "+b[0]+v[0]+" != "+b[0]+")");return o(n,s)}if(2==b.length){if(v[0]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Length of A must match rows of B (A is "+v[0]+", B is "+b[0]+"x"+b[1]+", "+v[0]+" != "+b[0]+")");return t(n,s)}throw new Error("Can only multiply a 1 or 2 dimensional matrix (B has "+b.length+" dimensions)")}if(2==v.length){if(1==b.length){if(v[1]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Columns of A must match length of B (A is "+v[0]+"x"+v[0]+", B is "+b[0]+", "+v[1]+" != "+b[0]+")");return i(n,s)}if(2==b.length){if(v[1]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Columns of A must match rows of B (A is "+v[0]+"x"+v[1]+", B is "+b[0]+"x"+b[1]+", "+v[1]+" != "+b[0]+")");return r(n,s)}throw new Error("Can only multiply a 1 or 2 dimensional matrix (B has "+b.length+" dimensions)") +}throw new Error("Can only multiply a 1 or 2 dimensional matrix (A has "+v.length+" dimensions)")}return s instanceof c?(l=w(n,s.valueOf()),x(l)?new c(l):l):p.deepMap2(n,s,w)}if(n instanceof c)return s instanceof c?(l=w(n.valueOf(),s.valueOf()),x(l)?new c(l):l):(l=w(n.valueOf(),s),x(l)?new c(l):l);if(x(s))return p.deepMap2(n,s,w);if(s instanceof c)return new c(p.deepMap2(n,s.valueOf(),w));if(g(n)||null===n)return w(+n,s);if(g(s)||null===s)return w(n,+s);throw new e.error.UnsupportedTypeError("multiply",e["typeof"](n),e["typeof"](s))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=n(137),i=e.type.BigNumber,o=n(6),a=n(9),s=(n(13),r.number.isNumber),u=r["boolean"].isBoolean,f=o.isComplex,c=Array.isArray;e.norm=function l(r,n){if(arguments.length<1||arguments.length>2)throw new e.error.ArgumentsError("abs",arguments.length,1,2);if(s(r))return Math.abs(r);if(f(r))return Math.sqrt(r.re*r.re+r.im*r.im);if(r instanceof i)return r.abs();if(u(r)||null===r)return Math.abs(r);if(c(r)){var o=t.size(r);if(null==n&&(n=2),1==o.length){if(n===Number.POSITIVE_INFINITY||"inf"===n){var p;return e.forEach(r,function(r){var n=e.abs(r);(!p||e.larger(n,p))&&(p=n)}),p}if(n===Number.NEGATIVE_INFINITY||"-inf"===n){var p;return e.forEach(r,function(r){var n=e.abs(r);(!p||e.smaller(n,p))&&(p=n)}),p}if("fro"===n)return l(r);if(s(n)&&!isNaN(n)){if(!e.equal(n,0)){var p=0;return e.forEach(r,function(r){p=e.add(e.pow(e.abs(r),n),p)}),e.pow(p,1/n)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}if(2==o.length){if(1==n){for(var m=[],h=0;h=0?Math.pow(n,t):r(new o(n,0),new o(t,0));if(p(t))return r(new o(n,0),t)}if(p(n)){if(u(t))return r(n,new o(t,0));if(p(t))return r(n,t)}if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.isInteger()&&!n.isNegative()?n.pow(t):m(n.toNumber(),t.toNumber()):m(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.isInteger()&&!n.isNegative()?n.pow(t):m(n.toNumber(),t.toNumber()):m(n,t.toNumber());if(c(n)){if(!u(t)||!l(t)||0>t)throw new TypeError("For A^b, b must be a positive integer (value is "+t+")");var h=s.size(n);if(2!=h.length)throw new Error("For A^b, A must be 2 dimensional (A has "+h.length+" dimensions)");if(h[0]!=h[1])throw new Error("For A^b, A must be square (size is "+h[0]+"x"+h[1]+")");for(var g=e.eye(h[0]).valueOf(),d=n;t>=1;)1==(1&t)&&(g=e.multiply(d,g)),t>>=1,d=e.multiply(d,d);return g}if(n instanceof a)return new a(m(n.valueOf(),t));if(f(n)||null===n)return m(+n,t);if(f(t)||null===t)return m(n,+t);throw new e.error.UnsupportedTypeError("pow",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){function r(e,r){var n=Math.pow(10,r);return Math.round(e*n)/n}var t=n(144),i=e.type.BigNumber,o=n(6),a=n(13),s=t.number.isNumber,u=t.number.isInteger,f=t["boolean"].isBoolean,c=o.isComplex,l=a.isCollection;e.round=function p(n,t){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("round",arguments.length,1,2);if(void 0==t){if(s(n))return Math.round(n);if(c(n))return new o(Math.round(n.re),Math.round(n.im));if(n instanceof i)return n.toDecimalPlaces(0);if(l(n))return a.deepMap(n,p);if(f(n)||null===n)return Math.round(n);throw new e.error.UnsupportedTypeError("round",e["typeof"](n))}if(!s(t)||!u(t)){if(!(t instanceof i)){if(f(t)||null===n)return p(n,+t);throw new TypeError("Number of decimals in function round must be an integer")}t=parseFloat(t.valueOf())}if(0>t||t>15)throw new Error("Number of decimals in function round must be in te range of 0-15");if(s(n))return r(n,t);if(c(n))return new o(r(n.re,t),r(n.im,t));if(n instanceof i)return n.toDecimalPlaces(t);if(l(n)||l(t))return a.deepMap2(n,t,p);if(f(n)||null===n)return p(+n,t);throw new e.error.UnsupportedTypeError("round",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number,s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isCollection;e.sign=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sign",arguments.length,1);if(s(r))return a.sign(r);if(f(r)){var n=Math.sqrt(r.re*r.re+r.im*r.im);return new i(r.re/n,r.im/n)}if(r instanceof t)return new t(r.cmp(0));if(c(r))return o.deepMap(r,l);if(u(r)||null===r)return a.sign(r);throw new e.error.UnsupportedTypeError("sign",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.sqrt=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sqrt",arguments.length,1);if(a(r))return r>=0?Math.sqrt(r):c(new i(r,0));if(u(r)){var n,l,p=Math.sqrt(r.re*r.re+r.im*r.im);return n=r.re>=0?.5*Math.sqrt(2*(p+r.re)):Math.abs(r.im)/Math.sqrt(2*(p-r.re)),l=r.re<=0?.5*Math.sqrt(2*(p-r.re)):Math.abs(r.im)/Math.sqrt(2*(p+r.re)),r.im>=0?new i(n,l):new i(n,-l)}if(r instanceof t)return r.isNegative()?c(r.toNumber()):r.sqrt();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("sqrt",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.square=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("square",arguments.length,1);if(a(r))return r*r;if(u(r))return e.multiply(r,r);if(r instanceof t)return r.times(r);if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return r*r;throw new e.error.UnsupportedTypeError("square",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=(n(9),n(10)),a=n(13),s=r["boolean"].isBoolean,u=r.number.isNumber,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.subtract=function p(r,n){if(2!=arguments.length)throw new e.error.ArgumentsError("subtract",arguments.length,2);if(u(r)){if(u(n))return r-n;if(f(n))return new i(r-n.re,-n.im)}else if(f(r)){if(u(n))return new i(r.re-n,r.im);if(f(n))return new i(r.re-n.re,r.im-n.im)}if(r instanceof t)return u(n)?n=t.convert(n):(s(n)||null===n)&&(n=new t(n?1:0)),n instanceof t?r.minus(n):p(r.toNumber(),n);if(n instanceof t)return u(r)?r=t.convert(r):(s(r)||null===r)&&(r=new t(r?1:0)),r instanceof t?r.minus(n):p(r,n.toNumber());if(c(r)&&c(n)){if(null==r.value)throw new Error("Parameter x contains a unit with undefined value");if(null==n.value)throw new Error("Parameter y contains a unit with undefined value");if(!r.equalBase(n))throw new Error("Units do not match");var o=r.clone();return o.value-=n.value,o.fixPrefix=!1,o}if(l(r)||l(n))return a.deepMap2(r,n,p);if(s(r)||null===r)return p(+r,n);if(s(n)||null===n)return p(r,+n);throw new e.error.UnsupportedTypeError("subtract",e["typeof"](r),e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(144),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t["boolean"].isBoolean,c=t.string.isString,l=o.isComplex,p=a.isUnit,m=s.isCollection;e.unaryMinus=function h(n){if(1!=arguments.length)throw new e.error.ArgumentsError("unaryMinus",arguments.length,1);if(u(n))return-n;if(l(n))return new o(-n.re,-n.im);if(n instanceof i)return n.neg();if(p(n)){var t=n.clone();return t.value=-n.value,t}if(m(n))return s.deepMap(n,h);if(f(n)||c(n)||null===n)return"bignumber"==r.number?new i(-n):-n;throw new e.error.UnsupportedTypeError("unaryMinus",e["typeof"](n))},e.unary=function(){throw new Error("Function unary is deprecated. Use unaryMinus instead.")}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(144),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t["boolean"].isBoolean,c=t.string.isString,l=o.isComplex,p=a.isUnit,m=s.isCollection;e.unaryPlus=function h(n){if(1!=arguments.length)throw new e.error.ArgumentsError("unaryPlus",arguments.length,1);if(u(n))return n;if(l(n))return n.clone();if(n instanceof i)return n;if(p(n))return n.clone();if(m(n))return s.deepMap(n,h);if(f(n)||c(n)||null===n)return"bignumber"==r.number?new i(+n):+n;throw new e.error.UnsupportedTypeError("unaryPlus",e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e,r){function t(e,n){for(var t,i,o,s=0,u=1,f=1,c=0;n;)i=Math.floor(e/n),o=e%n,t=s,s=u-i*s,u=t,t=f,f=c-i*f,c=t,e=n,n=o;var l;return l=0>e?[-e,-u,-c]:[e,e?u:0,c],"array"===r.matrix?l:new a(l)}function i(e,n){for(var t,i,o,u=new s(0),f=new s(0),c=new s(1),l=new s(1),p=new s(0);!n.isZero();)i=e.div(n).floor(),o=e.mod(n),t=f,f=c.minus(i.times(f)),c=t,t=l,l=p.minus(i.times(l)),p=t,e=n,n=o;var m;return m=e.lt(u)?[e.neg(),c.neg(),p.neg()]:[e,e.isZero()?0:c,p],"array"===r.matrix?m:new a(m)}var o=n(144),a=n(9),s=e.type.BigNumber,u=o.number.isNumber,f=o["boolean"].isBoolean,c=o.number.isInteger;e.xgcd=function l(r,n){if(2==arguments.length){if(u(r)&&u(n)){if(!c(r)||!c(n))throw new Error("Parameters in function xgcd must be integer numbers");return t(r,n)}if(r instanceof s)return u(n)?n=s.convert(n):(f(n)||null===n)&&(n=new s(n?1:0)),n instanceof s?i(r,n):l(r.toNumber(),n);if(n instanceof s)return u(r)?r=s.convert(r):(f(r)||null===r)&&(r=new s(r?1:0)),r instanceof s?i(r,n):l(r.toNumber(),n);if(f(r)||null===r)return l(+r,n);if(f(n)||null===n)return l(r,+n);throw new e.error.UnsupportedTypeError("xgcd",e["typeof"](r),e["typeof"](n))}throw new SyntaxError("Function xgcd expects two arguments")}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(144),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.compare=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("compare",arguments.length,2);if(u(n)&&u(t))return f(n,t,r.epsilon)?0:n>t?1:-1;if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?new i(n.cmp(t)):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?new i(n.cmp(t)):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.value>t.value?1:n.valuet?1:t>n?-1:0;if(c(n)||null===n)return g(+n,t);if(c(t)||null===t)return g(n,+t);if(p(n)||p(t))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("compare",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){function r(n,t){if(o(n)){if(o(t)){var i=n.length;if(i!==t.length)return!1;for(var a=0;i>a;a++)if(!r(n[a],t[a]))return!1;return!0}return!1}return o(t)?!1:e.equal(n,t)}var t=n(13),i=t.isCollection,o=Array.isArray;e.deepEqual=function(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("deepEqual",arguments.length,2);return i(n)||i(t)?r(n.valueOf(),t.valueOf()):e.equal(n,t)}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(144),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.equal=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("equal",arguments.length,2);if(u(n)){if(u(t))return f(n,t,r.epsilon);if(p(t))return f(n,t.re,r.epsilon)&&f(t.im,0,r.epsilon)}if(p(n)){if(u(t))return f(n.re,t,r.epsilon)&&f(n.im,0,r.epsilon);if(p(t))return f(n.re,t.re,r.epsilon)&&f(n.im,t.im,r.epsilon)}if(n instanceof i)return u(t)?t=i.convert(t):c(t)&&(t=new i(t?1:0)),t instanceof i?n.eq(t):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):c(n)&&(n=new i(n?1:0)),n instanceof i?n.eq(t):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.value==t.value}if(h(n)||h(t))return s.deepMap2(n,t,g);if(l(n)||l(t))return n==t;if(c(n))return g(+n,t);if(c(t))return g(n,+t);if(null===n)return null===t;if(null===t)return null===n;if(void 0===n)return void 0===t;if(void 0===t)return void 0===n;throw new e.error.UnsupportedTypeError("equal",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(144),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.larger=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("larger",arguments.length,2);if(u(n)&&u(t))return!f(n,t,r.epsilon)&&n>t;if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.gt(t):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.gt(t):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.value>t.value}if(h(n)||h(t))return s.deepMap2(n,t,g);if(l(n)||l(t))return n>t;if(c(n)||null===n)return g(+n,t);if(c(t)||null===t)return g(n,+t);if(p(n)||p(t))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("larger",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(144),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.largerEq=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("largerEq",arguments.length,2);if(u(n)&&u(t))return f(n,t,r.epsilon)||n>t;if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.gte(t):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.gte(t):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.value>=t.value}if(h(n)||h(t))return s.deepMap2(n,t,g);if(l(n)||l(t))return n>=t;if(c(n)||null===n)return g(+n,t);if(c(t)||null===t)return g(n,+t);if(p(n)||p(t))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("largerEq",e["typeof"](n),e["typeof"](t))},e.largereq=function(){throw new Error("Function largereq is renamed to largerEq")}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(144),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.smaller=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("smaller",arguments.length,2);if(u(n)&&u(t))return!f(n,t,r.epsilon)&&t>n;if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.lt(t):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.lt(t):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.valuen;if(c(n)||null===n)return g(+n,t);if(c(t)||null===t)return g(n,+t);if(p(n)||p(t))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("smaller",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(144),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.smallerEq=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("smallerEq",arguments.length,2);if(u(n)&&u(t))return f(n,t,r.epsilon)||t>n;if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.lte(t):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.lte(t):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.value<=t.value}if(h(n)||h(t))return s.deepMap2(n,t,g);if(l(n)||l(t))return t>=n;if(c(n)||null===n)return g(+n,t);if(c(t)||null===t)return g(n,+t);if(p(n)||p(t))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("smallerEq",e["typeof"](n),e["typeof"](t))},e.smallereq=function(){throw new Error("Function smallereq is renamed to smallerEq")}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(144),i=e.type.BigNumber,o=n(6),a=n(10),s=n(13),u=t.number.isNumber,f=t.number.nearlyEqual,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.unequal=function g(n,t){if(2!=arguments.length)throw new e.error.ArgumentsError("unequal",arguments.length,2);if(u(n)){if(u(t))return!f(n,t,r.epsilon);if(p(t))return!f(n,t.re,r.epsilon)||!f(t.im,0,r.epsilon)}if(p(n)){if(u(t))return!f(n.re,t,r.epsilon)||!f(n.im,0,r.epsilon);if(p(t))return!f(n.re,t.re,r.epsilon)||!f(n.im,t.im,r.epsilon)}if(n instanceof i)return u(t)?t=i.convert(t):c(t)&&(t=new i(t?1:0)),t instanceof i?!n.eq(t):g(n.toNumber(),t);if(t instanceof i)return u(n)?n=i.convert(n):c(n)&&(n=new i(n?1:0)),n instanceof i?!n.eq(t):g(n,t.toNumber());if(m(n)&&m(t)){if(!n.equalBase(t))throw new Error("Cannot compare units with different base");return n.value!=t.value}if(h(n)||h(t))return s.deepMap2(n,t,g);if(l(n)||l(t))return n!=t;if(c(n))return g(+n,t);if(c(t))return g(n,+t);if(null===n)return null!==t;if(null===t)return null!==n;if(void 0===n)return void 0!==t;if(void 0===t)return void 0!==n;throw new e.error.UnsupportedTypeError("unequal",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,f=i.isComplex;e.arg=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("arg",arguments.length,1);if(a(r))return Math.atan2(0,r);if(f(r))return Math.atan2(r.im,r.re);if(u(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);if(r instanceof t)return c(r.toNumber());throw new e.error.UnsupportedTypeError("arg",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.object,s=r.number.isNumber,u=r["boolean"].isBoolean,f=o.isCollection,c=i.isComplex;e.conj=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("conj",arguments.length,1);return s(r)?r:r instanceof t?new t(r):c(r)?new i(r.re,-r.im):f(r)?o.deepMap(r,l):u(r)||null===r?+r:a.clone(r)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.object,s=r.number.isNumber,u=r["boolean"].isBoolean,f=o.isCollection,c=i.isComplex;e.re=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("re",arguments.length,1);return s(r)?r:r instanceof t?new t(r):c(r)?r.re:f(r)?o.deepMap(r,l):u(r)||null===r?+r:a.clone(r)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,f=i.isComplex;e.im=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("im",arguments.length,1);return a(r)?0:r instanceof t?new t(0):f(r)?r.im:u(r)?o.deepMap(r,c):s(r)||null===r?0:0}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(13),o=i.isCollection,a=r.number.isNumber,s=r.string.isString,u=r["boolean"].isBoolean;e.bignumber=function f(r){if(arguments.length>1)throw new e.error.ArgumentsError("bignumber",arguments.length,0,1);if(r instanceof t||a(r)||s(r))return new t(r);if(u(r)||null===r)return new t(+r);if(o(r))return i.deepMap(r,f);if(0==arguments.length)return new t(0);throw new e.error.UnsupportedTypeError("bignumber",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(13),o=i.isCollection,a=r.number.isNumber,s=r.string.isString;e["boolean"]=function u(r){if(1!=arguments.length)throw new e.error.ArgumentsError("boolean",arguments.length,0,1);if("true"===r||r===!0)return!0;if("false"===r||r===!1||null===r)return!1;if(r instanceof Boolean)return 1==r;if(a(r))return 0!==r;if(r instanceof t)return!r.isZero();if(s(r)){var n=r.toLowerCase();if("true"===n)return!0;if("false"===n)return!1;var f=Number(r);if(""!=r&&!isNaN(f))return 0!==f}if(o(r))return i.deepMap(r,u);throw new SyntaxError(r.toString()+" is no valid boolean")}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=o.isCollection,s=r.number.isNumber,u=r.string.isString,f=i.isComplex;e.complex=function c(){switch(arguments.length){case 0:return new i(0,0);case 1:var r=arguments[0];if(s(r))return new i(r,0);if(r instanceof t)return new i(r.toNumber(),0);if(f(r))return r.clone();if(u(r)){var n=i.parse(r);if(n)return n;throw new SyntaxError('String "'+r+'" is no valid complex number')}if(a(r))return o.deepMap(r,c);if("object"==typeof r){if("re"in r&&"im"in r)return new i(r.re,r.im);if("r"in r&&"phi"in r)return i.fromPolar(r.r,r.phi)}throw new TypeError("Two numbers, single string or an fitting object expected in function complex");case 2:var l=arguments[0],p=arguments[1];if(l instanceof t&&(l=l.toNumber()),p instanceof t&&(p=p.toNumber()),s(l)&&s(p))return new i(l,p);throw new TypeError("Two numbers or a single string expected in function complex");default:throw new e.error.ArgumentsError("complex",arguments.length,0,2)}}}},function(e,r,n){"use strict";e.exports=function(e){var r=(n(144),e.type.BigNumber),t=n(8);e.index=function(){var e=Array.prototype.slice.apply(arguments).map(function(e){return e instanceof r?e.toNumber():Array.isArray(e)?e.map(function(e){return e instanceof r?e.toNumber():e}):e}),n=new t;return t.apply(n,e),n}}},function(e,r,n){"use strict";e.exports=function(e){var r=(n(144),n(9));e.matrix=function(n){if(arguments.length>1)throw new e.error.ArgumentsError("matrix",arguments.length,0,1);return new r(n)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=e.type.Unit,o=n(13),a=o.isCollection,s=r.number.isNumber,u=r["boolean"].isBoolean,f=r.string.isString;e.number=function c(r,n){switch(arguments.length){case 0:return 0;case 1:if(a(r))return o.deepMap(r,c);if(r instanceof t)return r.toNumber();if(f(r)){var l=Number(r);if(isNaN(l)&&(l=Number(r.valueOf())),isNaN(l))throw new SyntaxError(r.toString()+" is no valid number");return l}if(u(r)||null===r)return+r;if(s(r))return r;if(r instanceof i)throw new Error("Second argument with valueless unit expected");throw new e.error.UnsupportedTypeError("number",e["typeof"](r));case 2:if(r instanceof i&&f(n)||n instanceof i)return r.toNumber(n);throw new e.error.UnsupportedTypeError("number",e["typeof"](r),e["typeof"](n));default:throw new e.error.ArgumentsError("number",arguments.length,0,1)}}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(15);e.parser=function(){return new r(e)}}},function(e){"use strict";e.exports=function(e){e.select=function(r){return new e.chaining.Selector(r)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=n(13),i=r.number,o=r.number.isNumber,a=t.isCollection;e.string=function s(r){switch(arguments.length){case 0:return"";case 1:return o(r)?i.format(r):a(r)?t.deepMap(r,s):null===r?"null":r.toString();default:throw new e.error.ArgumentsError("string",arguments.length,0,1)}}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(10),o=n(13),a=o.isCollection,s=r.string.isString;e.unit=function u(r){switch(arguments.length){case 1:var n=arguments[0];if(n instanceof i)return n.clone();if(s(n)){if(i.isValuelessUnit(n))return new i(null,n);var f=i.parse(n);if(f)return f;throw new SyntaxError('String "'+n+'" is no valid unit')}if(a(r))return o.deepMap(r,u);throw new TypeError("A string or a number and string expected in function unit");case 2:return arguments[0]instanceof t?new i(arguments[0].toNumber(),arguments[1]):new i(arguments[0],arguments[1]);default:throw new e.error.ArgumentsError("unit",arguments.length,1,2)}}}},function(e,r,n){"use strict";e.exports=function(e){function r(n,t,i,o){if(i>o){if(n.length!=t.length)throw new e.error.DimensionError(n.length,t.length);for(var a=[],s=0;sn;n++){var g=arguments[n];if(g instanceof o&&(m=!0),n==a-1&&(f(g)||g instanceof i)){if(t=p,p=g.valueOf(),!c(p))throw new TypeError("Integer number expected for dimension");if(0>p)throw new e.error.IndexError(p);if(n>0&&p>t)throw new e.error.IndexError(p,t+1)}else{if(!l(g))throw new e.error.UnsupportedTypeError("concat",e["typeof"](g));var d=s.clone(g).valueOf(),x=u.size(g.valueOf());if(h[n]=d,t=p,p=x.length-1,n>0&&p!=t)throw new e.error.DimensionError(t+1,p+1)}}if(0==h.length)throw new SyntaxError("At least one matrix expected");for(var y=h.shift();h.length;)y=r(y,h.shift(),p,0);return m?new o(y):y}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){if(1==n)return o.clone(r[0][0]);if(2==n)return e.subtract(e.multiply(r[0][0],r[1][1]),e.multiply(r[1][0],r[0][1]));for(var t=function(r){var n,t,i=new Array(r.length),o=0;for(n=1;nt;t++)i[n][t]=0;for(t=n+1;ta;a++)i=e.multiply(t(i),r);return n%2==0?e.unaryMinus(i[0][0]):i[0][0]}var t=n(144),i=n(9),o=t.object,a=t.string;e.det=function(n){if(1!=arguments.length)throw new e.error.ArgumentsError("det",arguments.length,1);var t;switch(n instanceof i?t=n.size():n instanceof Array?(n=new i(n),t=n.size()):t=[],t.length){case 0:return o.clone(n);case 1:if(1==t[0])return o.clone(n.valueOf()[0]);throw new RangeError("Matrix must be square (size: "+a.format(t)+")");case 2:var s=t[0],u=t[1];if(s==u)return r(n.clone().valueOf(),s,u);throw new RangeError("Matrix must be square (size: "+a.format(t)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+a.format(t)+")")}}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(9),o=r.object,a=r.array.isArray,s=r.number.isNumber,u=r.number.isInteger;e.diag=function(r,n){var f,c,l,p;if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("diag",arguments.length,1,2);if(n){if(n instanceof t&&(n=n.toNumber()),!s(n)||!u(n))throw new TypeError("Second parameter in function diag must be an integer")}else n=0;var m,h=n>0?n:0,g=0>n?-n:0;if(r instanceof i)m=!1;else{if(!a(r))throw new TypeError("First parameter in function diag must be a Matrix or Array");r=new i(r),m=!0}var d=r.size();switch(d.length){case 1:c=r.valueOf();var x=new i,y=c[0]instanceof t?new t(0):0;for(x.resize([c.length+g,c.length+h],y),f=x.valueOf(),p=c.length,l=0;p>l;l++)f[l+g][l+h]=o.clone(c[l]);return m?x.valueOf():x;case 2:for(c=[],f=r.valueOf(),p=Math.min(d[0]-g,d[1]-h),l=0;p>l;l++)c[l]=o.clone(f[l+g][l+h]);return m?c:new i(c);default:throw new RangeError("Matrix for function diag must be 2 dimensional")}}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(144),i=e.type.BigNumber,o=n(9),a=n(13),s=t.number.isNumber,u=t.number.isInteger,f=Array.isArray;e.eye=function(n){var t=a.argsToArray(arguments),c=n instanceof o?!0:f(n)?!1:"matrix"===r.matrix;if(0==t.length)return c?new o:[];if(1==t.length)t[1]=t[0];else if(t.length>2)throw new e.error.ArgumentsError("eye",t.length,0,2);var l=t[0],p=t[1];if(l instanceof i&&(l=l.toNumber()),p instanceof i&&(p=p.toNumber()),!s(l)||!u(l)||1>l)throw new Error("Parameters in function eye must be positive integers");if(!s(p)||!u(p)||1>p)throw new Error("Parameters in function eye must be positive integers");var m=!1;t=t.map(function(e){return e instanceof i?(m=!0,e.toNumber()):e});var h=new o,g=m?new i(1):1,d=m?new i(0):0;h.resize(t,d);for(var x=e.min(t),y=h.valueOf(),w=0;x>w;w++)y[w][w]=g;return c?h:h.valueOf()}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=n(9),i=r.object,o=r.array,a=Array.isArray;e.flatten=function(r){if(1!==arguments.length)throw new e.error.ArgumentsError("flatten",arguments.length,1);if(r instanceof t){var n=i.clone(r.toArray()),s=o.flatten(n);return new t(s)}if(a(r))return o.flatten(i.clone(r));throw new e.error.UnsupportedTypeError("flatten",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n,t){var i,o,a,s,u;if(1==n){if(s=r[0][0],0==s)throw Error("Cannot calculate inverse, determinant is zero");return[[e.divide(1,s)]]}if(2==n){var f=e.det(r);if(0==f)throw Error("Cannot calculate inverse, determinant is zero");return[[e.divide(r[1][1],f),e.divide(e.unaryMinus(r[0][1]),f)],[e.divide(e.unaryMinus(r[1][0]),f),e.divide(r[0][0],f)]]}var c=r.concat();for(i=0;n>i;i++)c[i]=c[i].concat();for(var l=e.eye(n).valueOf(),p=0;t>p;p++){for(i=p;n>i&&0==c[i][p];)i++;if(i==n||0==c[i][p])throw Error("Cannot calculate inverse, determinant is zero");i!=p&&(u=c[p],c[p]=c[i],c[i]=u,u=l[p],l[p]=l[i],l[i]=u);var m=c[p],h=l[p];for(i=0;n>i;i++){var g=c[i],d=l[i];if(i!=p){if(0!=g[p]){for(a=e.divide(e.unaryMinus(g[p]),m[p]),o=p;t>o;o++)g[o]=e.add(g[o],e.multiply(a,m[o]));for(o=0;t>o;o++)d[o]=e.add(d[o],e.multiply(a,h[o]))}}else{for(a=m[p],o=p;t>o;o++)g[o]=e.divide(g[o],a);for(o=0;t>o;o++)d[o]=e.divide(d[o],a)}}}return l}var t=n(144),i=t.string,o=n(9);e.inv=function(n){if(1!=arguments.length)throw new e.error.ArgumentsError("inv",arguments.length,1);var t=e.size(n).valueOf();switch(t.length){case 0:return e.divide(1,n);case 1:if(1==t[0])return n instanceof o?new o([e.divide(1,n.valueOf()[0])]):[e.divide(1,n[0])];throw new RangeError("Matrix must be square (size: "+i.format(t)+")");case 2:var a=t[0],s=t[1];if(a==s)return n instanceof o?new o(r(n.valueOf(),a,s)):r(n,a,s);throw new RangeError("Matrix must be square (size: "+i.format(t)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+i.format(t)+")")}}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(144),i=e.type.BigNumber,o=n(9),a=n(13),s=t.array,u=Array.isArray;e.ones=function(e){var n=a.argsToArray(arguments),t=e instanceof o?!0:u(e)?!1:"matrix"===r.matrix;if(0==n.length)return t?new o:[];var f=!1;n=n.map(function(e){return e instanceof i?(f=!0,e.toNumber()):e});var c=[],l=f?new i(1):1;return c=s.resize(c,n,l),t?new o(c):c}}},function(e,r,n){"use strict";e.exports=function(e,r){function t(e,r,n){var t=[],i=e;if(n>0)for(;r>i;)t.push(i),i+=n;else if(0>n)for(;i>r;)t.push(i),i+=n; +return t}function i(e,r,n){var t=[],i=e;if(n>0)for(;r>=i;)t.push(i),i+=n;else if(0>n)for(;i>=r;)t.push(i),i+=n;return t}function o(e,r,n){var t=[],i=e.clone(),o=new f(0);if(n.gt(o))for(;i.lt(r);)t.push(i),i=i.plus(n);else if(n.lt(o))for(;i.gt(r);)t.push(i),i=i.plus(n);return t}function a(e,r,n){var t=[],i=e.clone(),o=new f(0);if(n.gt(o))for(;i.lte(r);)t.push(i),i=i.plus(n);else if(n.lt(o))for(;i.gte(r);)t.push(i),i=i.plus(n);return t}function s(e){var n=e.split(":"),t=null;if("bignumber"===r.number)try{t=n.map(function(e){return new f(e)})}catch(i){return null}else{t=n.map(function(e){return Number(e)});var o=t.some(function(e){return isNaN(e)});if(o)return null}switch(t.length){case 2:return{start:t[0],end:t[1],step:1};case 3:return{start:t[0],end:t[2],step:t[1]};default:return null}}var u=n(144),f=e.type.BigNumber,c=n(9),l=(n(13),u["boolean"].isBoolean),p=u.string.isString,m=u.number.isNumber;e.range=function(){var n,u,h,g=Array.prototype.slice.call(arguments),d=!1;switch(l(g[g.length-1])&&(d=g.pop()?!0:!1),g.length){case 1:if(!p(g[0]))throw new TypeError("Two or three numbers or a single string expected in function range");var x=s(g[0]);if(!x)throw new SyntaxError('String "'+g[0]+'" is no valid range');n=x.start,u=x.end,h=x.step;break;case 2:n=g[0],u=g[1],h=1;break;case 3:n=g[0],u=g[1],h=g[2];break;case 4:throw new TypeError("Parameter includeEnd must be a boolean");default:throw new e.error.ArgumentsError("range",arguments.length,2,4)}if(!(m(n)||n instanceof f))throw new TypeError("Parameter start must be a number");if(!(m(u)||u instanceof f))throw new TypeError("Parameter end must be a number");if(!(m(h)||h instanceof f))throw new TypeError("Parameter step must be a number");if(n instanceof f||u instanceof f||h instanceof f){var y=!0;n instanceof f||(n=f.convert(n)),u instanceof f||(u=f.convert(u)),h instanceof f||(h=f.convert(h)),n instanceof f&&u instanceof f&&h instanceof f||(y=!1,n instanceof f&&(n=n.toNumber()),u instanceof f&&(u=u.toNumber()),h instanceof f&&(h=h.toNumber()))}var w=y?d?a:o:d?i:t,v=w(n,u,h);return"array"===r.matrix?v:new c(v)}}},function(e,r,n){"use strict";e.exports=function(e,r){function t(r,n,t){if(void 0!==t){if(!c(t)||1!==t.length)throw new TypeError("Single character expected as defaultValue")}else t=" ";if(1!==n.length)throw new e.error.DimensionError(n.length,1);var i=n[0];if(!l(i)||!p(i))throw new TypeError("Invalid size, must contain positive integers (size: "+f.format(n)+")");if(r.length>i)return r.substring(0,i);if(r.lengtha;a++)o+=t;return o}return r}var i=n(144),o=e.type.BigNumber,a=n(9),s=i.array,u=i.object.clone,f=i.string,c=i.string.isString,l=i.number.isNumber,p=i.number.isInteger,m=s.isArray;e.resize=function(n,i,f){if(2!=arguments.length&&3!=arguments.length)throw new e.error.ArgumentsError("resize",arguments.length,2,3);var l=n instanceof a?!0:m(n)?!1:"array"!==r.matrix;if(n instanceof a&&(n=n.valueOf()),i instanceof a&&(i=i.valueOf()),i.length&&i[0]instanceof o&&(i=i.map(function(e){return e instanceof o?e.toNumber():e})),c(n))return t(n,i,f);if(0==i.length){for(;m(n);)n=n[0];return u(n)}m(n)||(n=[n]),n=u(n);var p=s.resize(n,i,f);return l?new a(p):p}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(144),i=e.type.BigNumber,o=n(6),a=n(10),s=n(9),u=t.array,f=t.number.isNumber,c=t["boolean"].isBoolean,l=t.string.isString,p=o.isComplex,m=a.isUnit;e.size=function(n){if(1!=arguments.length)throw new e.error.ArgumentsError("size",arguments.length,1);var t="array"===r.matrix;if(f(n)||p(n)||m(n)||c(n)||null==n||n instanceof i)return t?[]:new s([]);if(l(n))return t?[n.length]:new s([n.length]);if(Array.isArray(n))return u.size(n);if(n instanceof s)return new s(n.size());throw new e.error.UnsupportedTypeError("size",e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=n(9),i=r.object,o=r.array,a=Array.isArray;e.squeeze=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("squeeze",arguments.length,1);if(a(r))return o.squeeze(i.clone(r));if(r instanceof t){var n=o.squeeze(r.toArray());return a(n)?new t(n):n}return i.clone(r)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){var i,o;if(l(r))return i=new s(r),o=i.subset(n),o.valueOf();if(r instanceof s)return r.subset(n);if(c(r))return t(r,n);throw new e.error.UnsupportedTypeError("subset",e["typeof"](r))}function t(r,n){if(!(n instanceof u))throw new TypeError("Index expected");if(1!=n.size().length)throw new e.error.DimensionError(n.size().length,1);var t=r.length;f.validateIndex(n.min()[0],t),f.validateIndex(n.max()[0],t);var i=n.range(0),o="";return i.forEach(function(e){o+=r.charAt(e)}),o}function i(r,n,t,i){var a;if(l(r))return a=new s(e.clone(r)),a.subset(n,t,i),a.valueOf();if(r instanceof s)return r.clone().subset(n,t,i);if(c(r))return o(r,n,t,i);throw new e.error.UnsupportedTypeError("subset",e["typeof"](r))}function o(r,n,t,i){if(!(n instanceof u))throw new TypeError("Index expected");if(1!=n.size().length)throw new e.error.DimensionError(n.size().length,1);if(void 0!==i){if(!c(i)||1!==i.length)throw new TypeError("Single character expected as defaultValue")}else i=" ";var o=n.range(0),a=o.size()[0];if(a!=t.length)throw new e.error.DimensionError(o.size()[0],t.length);var s=r.length;f.validateIndex(n.min()[0]),f.validateIndex(n.max()[0]);for(var l=[],p=0;s>p;p++)l[p]=r.charAt(p);if(o.forEach(function(e,r){l[e]=t.charAt(r)}),l.length>s)for(p=s-1,a=l.length;a>p;p++)l[p]||(l[p]=i);return l.join("")}var a=n(144),s=n(9),u=n(8),f=a.array,c=a.string.isString,l=Array.isArray;e.subset=function(){switch(arguments.length){case 2:return r(arguments[0],arguments[1]);case 3:case 4:return i(arguments[0],arguments[1],arguments[2],arguments[3]);default:throw new e.error.ArgumentsError("subset",arguments.length,2,4)}}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=n(9),i=r.object,o=r.string;e.transpose=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("transpose",arguments.length,1);var n=e.size(r).valueOf();switch(n.length){case 0:return i.clone(r);case 1:return i.clone(r);case 2:var a,s=n[1],u=n[0],f=r instanceof t,c=r.valueOf(),l=[],p=i.clone;if(0===s)throw new RangeError("Cannot transpose a 2D matrix with no rows(size: "+o.format(n)+")");for(var m=0;s>m;m++){a=l[m]=[];for(var h=0;u>h;h++)a[h]=p(c[h][m])}return f?new t(l):l;default:throw new RangeError("Matrix must be two dimensional (size: "+o.format(n)+")")}}}},function(e,r,n){"use strict";e.exports=function(e,r){var t=n(144),i=e.type.BigNumber,o=n(9),a=n(13),s=t.array,u=Array.isArray;e.zeros=function(e){var n=a.argsToArray(arguments),t=e instanceof o?!0:u(e)?!1:"matrix"===r.matrix;if(0==n.length)return t?new o:[];var f=!1;n=n.map(function(e){return e instanceof i?(f=!0,e.toNumber()):e});var c=[],l=f?new i(0):0;return c=s.resize(c,n,l),t?new o(c):c}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(13),o=r.number.isNumber,a=r["boolean"].isBoolean,s=r.number.isInteger,u=i.isCollection;e.factorial=function c(r){var n,l;if(1!=arguments.length)throw new e.error.ArgumentsError("factorial",arguments.length,1);if(o(r)){if(!s(r)||0>r)throw new TypeError("Positive integer value expected in function factorial");for(n=r-1,l=r;n>1;)l*=n,n--;return 0==l&&(l=1),l}if(r instanceof t){if(!f(r))throw new TypeError("Positive integer value expected in function factorial");var p=new t(1);for(n=r.minus(p),l=r;n.gt(p);)l=l.times(n),n=n.minus(p);return l.equals(0)&&(l=p),l}if(a(r)||null===r)return 1;if(u(r))return i.deepMap(r,c);throw new e.error.UnsupportedTypeError("factorial",e["typeof"](r))};var f=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(178)(e);e.random=r("uniform").random}},function(e,r,n){"use strict";e.exports=function(e){var r=n(178)(e);e.randomInt=r("uniform").randomInt}},function(e,r,n){"use strict";e.exports=function(e){var r=n(178)(e);e.pickRandom=r("uniform").pickRandom}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=r.number.isNumber,o=r.number.isInteger;e.permutations=function(r,n){var s,u,f=arguments.length;if(f>2)throw new e.error.ArgumentsError("permutations",arguments.length,2);if(i(r)){if(!o(r)||0>r)throw new TypeError("Positive integer value expected in function permutations");if(1==f)return e.factorial(r);if(2==f&&i(n)){if(!o(n)||0>n)throw new TypeError("Positive integer value expected in function permutations");if(n>r)throw new TypeError("second argument k must be less than or equal to first argument n");for(s=1,u=r-n+1;r>=u;u++)s*=u;return s}}if(r instanceof t){if(void 0===n&&a(r))return e.factorial(r);if(n=t.convert(n),!(n instanceof t&&a(r)&&a(n)))throw new TypeError("Positive integer value expected in function permutations");if(n.gt(r))throw new TypeError("second argument k must be less than or equal to first argument n");for(s=new t(1),u=r.minus(n).plus(1);u.lte(r);u=u.plus(1))s=s.times(u);return s}throw new e.error.UnsupportedTypeError("permutations",e["typeof"](r))};var a=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=(n(13),r.number.isNumber),o=r.number.isInteger;e.combinations=function(r,n){var s,u,f,c,l=arguments.length;if(2!=l)throw new e.error.ArgumentsError("combinations",arguments.length,2);if(i(r)){if(!o(r)||0>r)throw new TypeError("Positive integer value enpected in function combinations");if(n>r)throw new TypeError("k must be less than or equal to n");for(s=Math.max(n,r-n),u=1,f=1;r-s>=f;f++)u=u*(s+f)/f;return u}if(r instanceof t){if(n=t.convert(n),!(n instanceof t&&a(r)&&a(n)))throw new TypeError("Positive integer value expected in function combinations");if(n.gt(r))throw new TypeError("k must be less than n in function combinations");for(s=r.minus(n),n.lt(s)&&(s=n),u=new t(1),f=new t(1),c=r.minus(s);f.lte(c);f=f.plus(1))u=u.times(s.plus(f)).dividedBy(f);return u}throw new e.error.UnsupportedTypeError("combinations",e["typeof"](r))};var a=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){return e.smaller(r,n)?r:n}function t(r){var n=void 0;if(i.deepForEach(r,function(r){(void 0===n||e.smaller(r,n))&&(n=r)}),void 0===n)throw new Error("Cannot calculate min of an empty array");return n}var i=(n(9),n(13)),o=i.isCollection;e.min=function(e){if(0==arguments.length)throw new SyntaxError("Function min requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return t(e);if(2==arguments.length)return i.reduce(arguments[0],arguments[1],r);throw new SyntaxError("Wrong number of parameters")}return t(arguments)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){return e.larger(r,n)?r:n}function t(r){var n=void 0;if(i.deepForEach(r,function(r){(void 0===n||e.larger(r,n))&&(n=r)}),void 0===n)throw new Error("Cannot calculate max of an empty array");return n}var i=(n(9),n(13)),o=i.isCollection;e.max=function(e){if(0==arguments.length)throw new SyntaxError("Function max requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return t(e);if(2==arguments.length)return i.reduce(arguments[0],arguments[1],r);throw new SyntaxError("Wrong number of parameters")}return t(arguments)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){var t=i.reduce(r,n,e.add),o=s(r)?a(r):r.size();return e.divide(t,o[n])}function t(r){var n=0,t=0;if(i.deepForEach(r,function(r){n=e.add(n,r),t++}),0===t)throw new Error("Cannot calculate mean of an empty array");return e.divide(n,t)}var i=(n(9),n(13)),o=i.isCollection,a=n(137).size,s=Array.isArray;e.mean=function(e){if(0==arguments.length)throw new SyntaxError("Function mean requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return t(e);if(2==arguments.length)return r(arguments[0],arguments[1]);throw new SyntaxError("Wrong number of parameters")}return t(arguments)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r){var n=u(r);n.sort(e.compare);var o=n.length;if(0==o)throw new Error("Cannot calculate median of an empty array");if(o%2==0){var s=n[o/2-1],f=n[o/2];if(!(a(s)||s instanceof i||s instanceof t))throw new e.error.UnsupportedTypeError("median",e["typeof"](s));if(!(a(f)||f instanceof i||f instanceof t))throw new e.error.UnsupportedTypeError("median",e["typeof"](f));return e.divide(e.add(s,f),2)}var c=n[(o-1)/2];if(!(a(c)||c instanceof i||c instanceof t))throw new e.error.UnsupportedTypeError("median",e["typeof"](c));return c}var t=(n(9),n(10)),i=e.type.BigNumber,o=n(13),a=n(4).isNumber,s=o.isCollection,u=n(137).flatten;e.median=function(e){if(0==arguments.length)throw new SyntaxError("Function median requires one or more parameters (0 provided)");if(s(e)){if(1==arguments.length)return r(e.valueOf());throw 2==arguments.length?new Error("median(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(Array.prototype.slice.call(arguments))}}},function(e,r,n){"use strict";e.exports=function(e){function r(r){var n=void 0;if(t.deepForEach(r,function(r){n=void 0===n?r:e.multiply(n,r)}),void 0===n)throw new Error("Cannot calculate prod of an empty array");return n}var t=(n(9),n(13)),i=t.isCollection;e.prod=function(e){if(0==arguments.length)throw new SyntaxError("Function prod requires one or more parameters (0 provided)");if(i(e)){if(1==arguments.length)return r(e);throw 2==arguments.length?new Error("prod(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(arguments)}}},function(e){"use strict";e.exports=function(e){e.std=function(){if(0==arguments.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");var r=e["var"].apply(null,arguments);return e.sqrt(r)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r){var n=void 0;if(t.deepForEach(r,function(r){n=void 0===n?r:e.add(n,r)}),void 0===n)throw new Error("Cannot calculate sum of an empty array");return n}var t=(n(9),n(13)),i=t.isCollection;e.sum=function(e){if(0==arguments.length)throw new SyntaxError("Function sum requires one or more parameters (0 provided)");if(i(e)){if(1==arguments.length)return r(e);throw 2==arguments.length?new Error("sum(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(arguments)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n){var o=0,a=0;if(i.deepForEach(r,function(r){o=e.add(o,r),a++}),0===a)throw new Error("Cannot calculate var of an empty array");var s=e.divide(o,a);switch(o=0,i.deepForEach(r,function(r){var n=e.subtract(r,s);o=e.add(o,e.multiply(n,n))}),n){case"uncorrected":return e.divide(o,a);case"biased":return e.divide(o,a+1);case"unbiased":var u=o instanceof t?new t(0):0;return 1==a?u:e.divide(o,a-1);default:throw new Error('Unknown normalization "'+n+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}var t=(n(9),e.type.BigNumber),i=n(13),o=i.isCollection,a=n(160).isString,s="unbiased";e["var"]=function(e,n){if(0==arguments.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return r(e,s);if(2==arguments.length){if(!a(n))throw new Error("String expected for parameter normalization");return r(e,n)}throw new SyntaxError("Wrong number of parameters")}return r(arguments,s)}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.acos=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acos",arguments.length,1);if(a(r))return r>=-1&&1>=r?Math.acos(r):c(new i(r,0));if(u(r)){var n=new i(r.im*r.im-r.re*r.re+1,-2*r.re*r.im),l=e.sqrt(n),p=new i(l.re-r.im,l.im+r.re),m=e.log(p);return new i(1.5707963267948966-m.im,m.re)}if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.acos(r);if(r instanceof t)return c(r.toNumber());throw new e.error.UnsupportedTypeError("acos",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.asin=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("asin",arguments.length,1);if(a(r))return r>=-1&&1>=r?Math.asin(r):c(new i(r,0));if(u(r)){var n=r.re,l=r.im,p=new i(l*l-n*n+1,-2*n*l),m=e.sqrt(p),h=new i(m.re-l,m.im+n),g=e.log(h);return new i(g.im,-g.re)}if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.asin(r);if(r instanceof t)return c(r.toNumber());throw new e.error.UnsupportedTypeError("asin",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.atan=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("atan",arguments.length,1);if(a(r))return Math.atan(r);if(u(r)){var n=r.re,l=r.im,p=n*n+(1-l)*(1-l),m=new i((1-l*l-n*n)/p,-2*n/p),h=e.log(m);return new i(-.5*h.im,.5*h.re)}if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.atan(r);if(r instanceof t)return c(r.toNumber());throw new e.error.UnsupportedTypeError("atan",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=(i.isComplex,o.isCollection);e.atan2=function f(r,n){if(2!=arguments.length)throw new e.error.ArgumentsError("atan2",arguments.length,2);if(a(r)&&a(n))return Math.atan2(r,n);if(u(r)||u(n))return o.deepMap2(r,n,f);if(s(r)||null===r)return f(+r,n);if(s(n)||null===n)return f(r,+n);if(r instanceof t)return f(r.toNumber(),n);if(n instanceof t)return f(r,n.toNumber());throw new e.error.UnsupportedTypeError("atan2",e["typeof"](r),e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.cos=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cos",arguments.length,1);if(s(r))return Math.cos(r);if(f(r))return new i(.5*Math.cos(r.re)*(Math.exp(-r.im)+Math.exp(r.im)),.5*Math.sin(r.re)*(Math.exp(-r.im)-Math.exp(r.im)));if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cos is no angle");return Math.cos(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return Math.cos(r);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("cos",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.cosh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cosh",arguments.length,1);if(s(r))return(Math.exp(r)+Math.exp(-r))/2;if(f(r)){var n=Math.exp(r.re),m=Math.exp(-r.re);return new i(Math.cos(r.im)*(n+m)/2,Math.sin(r.im)*(n-m)/2)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cosh is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("cosh",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.cot=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cot",arguments.length,1);if(s(r))return 1/Math.tan(r);if(f(r)){var n=Math.exp(-4*r.im)-2*Math.exp(-2*r.im)*Math.cos(2*r.re)+1;return new i(2*Math.exp(-2*r.im)*Math.sin(2*r.re)/n,(Math.exp(-4*r.im)-1)/n)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return 1/Math.tan(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(+r);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("cot",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.coth=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("coth",arguments.length,1);if(s(r)){var n=Math.exp(2*r);return(n+1)/(n-1)}if(f(r)){var m=Math.exp(2*r.re),h=m*Math.cos(2*r.im),g=m*Math.sin(2*r.im),d=(h-1)*(h-1)+g*g;return new i(((h+1)*(h-1)+g*g)/d,-2*g/d)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function coth is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("coth",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.csc=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("csc",arguments.length,1);if(s(r))return 1/Math.sin(r);if(f(r)){var n=.25*(Math.exp(-2*r.im)+Math.exp(2*r.im))-.5*Math.cos(2*r.re);return new i(.5*Math.sin(r.re)*(Math.exp(-r.im)+Math.exp(r.im))/n,.5*Math.cos(r.re)*(Math.exp(-r.im)-Math.exp(r.im))/n)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csc is no angle");return 1/Math.sin(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(+r);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("csc",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number,u=r.number.isNumber,f=r["boolean"].isBoolean,c=i.isComplex,l=o.isUnit,p=a.isCollection;e.csch=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("csch",arguments.length,1);if(u(r))return 0==r?Number.NaN:Math.abs(2/(Math.exp(r)-Math.exp(-r)))*s.sign(r);if(c(r)){var n=Math.exp(r.re),h=Math.exp(-r.re),g=Math.cos(r.im)*(n-h),d=Math.sin(r.im)*(n+h),x=g*g+d*d;return new i(2*g/x,-2*d/x)}if(l(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csch is no angle");return m(r.value)}if(p(r))return a.deepMap(r,m);if(f(r)||null===r)return m(r?1:0);if(r instanceof t)return m(r.toNumber());throw new e.error.UnsupportedTypeError("csch",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.sec=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sec",arguments.length,1);if(s(r))return 1/Math.cos(r);if(f(r)){var n=.25*(Math.exp(-2*r.im)+Math.exp(2*r.im))+.5*Math.cos(2*r.re);return new i(.5*Math.cos(r.re)*(Math.exp(-r.im)+Math.exp(r.im))/n,.5*Math.sin(r.re)*(Math.exp(r.im)-Math.exp(-r.im))/n)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sec is no angle");return 1/Math.cos(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(+r);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("sec",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.sech=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sech",arguments.length,1);if(s(r))return 2/(Math.exp(r)+Math.exp(-r));if(f(r)){var n=Math.exp(r.re),m=Math.exp(-r.re),h=Math.cos(r.im)*(n+m),g=Math.sin(r.im)*(n-m),d=h*h+g*g;return new i(2*h/d,-2*g/d)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sech is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("sech",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.sin=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sin",arguments.length,1);if(s(r))return Math.sin(r);if(f(r))return new i(.5*Math.sin(r.re)*(Math.exp(-r.im)+Math.exp(r.im)),.5*Math.cos(r.re)*(Math.exp(r.im)-Math.exp(-r.im)));if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sin is no angle");return Math.sin(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return Math.sin(r);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("sin",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.sinh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sinh",arguments.length,1);if(s(r))return(Math.exp(r)-Math.exp(-r))/2;if(f(r)){var n=Math.cos(r.im),m=Math.sin(r.im),h=Math.exp(r.re),g=Math.exp(-r.re);return new i(n*(h-g)/2,m*(h+g)/2)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sinh is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("sinh",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.tan=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("tan",arguments.length,1);if(s(r))return Math.tan(r);if(f(r)){var n=Math.exp(-4*r.im)+2*Math.exp(-2*r.im)*Math.cos(2*r.re)+1;return new i(2*Math.exp(-2*r.im)*Math.sin(2*r.re)/n,(1-Math.exp(-4*r.im))/n)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tan is no angle");return Math.tan(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return Math.tan(r);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("tan",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=e.type.BigNumber,i=n(6),o=n(10),a=n(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.tanh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("tanh",arguments.length,1);if(s(r)){var n=Math.exp(2*r);return(n-1)/(n+1)}if(f(r)){var m=Math.exp(2*r.re),h=m*Math.cos(2*r.im),g=m*Math.sin(2*r.im),d=(h+1)*(h+1)+g*g;return new i(((h-1)*(h+1)+g*g)/d,2*g/d)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tanh is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof t)return p(r.toNumber());throw new e.error.UnsupportedTypeError("tanh",e["typeof"](r))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=n(10),i=n(13),o=r.string.isString,a=t.isUnit,s=i.isCollection;e.to=function u(r,n){if(2!=arguments.length)throw new e.error.ArgumentsError("to",arguments.length,2);if(a(r)&&(a(n)||o(n)))return r.to(n);if(s(r)||s(n))return i.deepMap2(r,n,u);throw new e.error.UnsupportedTypeError("to",e["typeof"](r),e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=r.object;e.clone=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("clone",arguments.length,1);return t.clone(r)}}},function(e,r,n){"use strict";e.exports=function(e){function r(e,r){if("function"==typeof r)return e.filter(function(e){return r(e)});if(r instanceof RegExp)return e.filter(function(e){return r.test(e)});throw new TypeError("Function or RegExp expected")}var t=n(9);e.filter=function(n,i){if(2!==arguments.length)throw new e.error.ArgumentsError("filter",arguments.length,2);if(n instanceof t){var o=n.size();if(o.length>1)throw new Error("Only one dimensional matrices supported");return new t(r(n.toArray(),i))}if(Array.isArray(n))return r(n,i);throw new e.error.UnsupportedTypeError("filter",e["typeof"](n),e["typeof"](compare))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=r.string;e.format=function(r,n){var i=arguments.length;if(1!==i&&2!==i)throw new e.error.ArgumentsError("format",i,1,2);return t.format(r,n)}}},function(e,r,n){"use strict";e.exports=function(e){function r(r,n,t){(t.override||void 0===e[r])&&(e[r]=t.wrap&&"function"==typeof n?function(){for(var r=[],t=0,i=arguments.length;i>t;t++){var o=arguments[t];r[t]=o&&o.valueOf()}return n.apply(e,r)}:n,e.chaining.Selector.createProxy(r,n))}function t(e){return"function"==typeof e||s(e)||u(e)||f(e)||c(e)}var i=n(144),o=n(6),a=n(10),s=i.number.isNumber,u=i.string.isString,f=o.isComplex,c=a.isUnit;e["import"]=function l(i,o){var a=arguments.length;if(1!=a&&2!=a)throw new e.error.ArgumentsError("import",a,1,2);var s,f={override:o&&o.override||!1,wrap:o&&o.wrap||!1};if(u(i)){var c=n(179)(i);l(c,o)}else{if("object"!=typeof i)throw new TypeError("Object or module name expected");for(s in i)if(i.hasOwnProperty(s)){var p=i[s];t(p)?r(s,p,f):l(p,o)}}}}},function(e,r,n){"use strict";e.exports=function(e){function r(e,r){var n=[],t=function(i,o){return Array.isArray(i)?i.map(function(e,r){return n[o]=r,t(e,o+1)}):r(i,n,e)};return t(e,0)}var t=n(9).isMatrix;e.map=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("map",arguments.length,2);if(Array.isArray(n))return r(n,i);if(t(n))return n.map(i);throw new e.error.UnsupportedTypeError("map",e["typeof"](n))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(144),t=r.string.isString;e.print=function(r,n,i){var o=arguments.length;if(2!=o&&3!=o)throw new e.error.ArgumentsError("print",o,2,3);if(!t(r))throw new TypeError("String expected as first parameter in function format");if(!(n instanceof Object))throw new TypeError("Object expected as second parameter in function format");return r.replace(/\$([\w\.]+)/g,function(r,o){for(var a=o.split("."),s=n[a.shift()];a.length&&void 0!==s;){var u=a.shift();s=u?s[u]:s+"."}return void 0!==s?t(s)?s:e.format(s,i):r})}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(9);e.sort=function(n,t){var i=null;if(1===arguments.length)i=e.compare;else{if(2!==arguments.length)throw new e.error.ArgumentsError("sort",arguments.length,1,2);if("function"==typeof t)i=t;else if("asc"===t)i=e.compare;else{if("desc"!==t)throw new e.error.UnsupportedTypeError("sort",e["typeof"](n),e["typeof"](t));i=function(r,n){return-e.compare(r,n)}}}if(n instanceof r){var o=n.size();if(o.length>1)throw new Error("Only one dimensional matrices supported");return new r(n.toArray().sort(i))}if(Array.isArray(n))return n.sort(i);throw new e.error.UnsupportedTypeError("sort",e["typeof"](n),e["typeof"](t))}}},function(e,r,n){"use strict";e.exports=function(e){var r=n(180),t=n(6),i=n(9),o=n(10),a=n(8),s=n(7),u=n(11);e["typeof"]=function(n){if(1!=arguments.length)throw new e.error.ArgumentsError("typeof",arguments.length,1);var f=r.type(n);if("object"===f){if(n instanceof t)return"complex";if(n instanceof i)return"matrix";if(n instanceof o)return"unit";if(n instanceof a)return"index";if(n instanceof s)return"range";if(n instanceof u)return"help";if(n instanceof e.type.BigNumber)return"bignumber";if(n instanceof e.chaining.Selector)return"selector"}return f}}},function(e,r,n){"use strict";e.exports=function(e){function r(e,r){var n=[],t=function(i,o){Array.isArray(i)?i.forEach(function(e,r){n[o]=r,t(e,o+1)}):r(i,n,e)};t(e,0)}var t=n(9).isMatrix;e.forEach=function(n,i){if(2!=arguments.length)throw new e.error.ArgumentsError("forEach",arguments.length,2);if(Array.isArray(n))return r(n,i);if(t(n))return n.forEach(i);throw new e.error.UnsupportedTypeError("forEach",e["typeof"](n))}}},function(e,r,n){"use strict"; +{var t=n(139),i=n(4).isNumber;n(4).digits}r.isBigNumber=function(e){return e instanceof t},r.format=function(e,n){if("function"==typeof n)return n(e);if(!e.isFinite())return e.isNaN()?"NaN":e.gt(0)?"Infinity":"-Infinity";var t="auto",o=void 0;switch(void 0!==n&&(n.notation&&(t=n.notation),i(n)?o=n:n.precision&&(o=n.precision)),t){case"fixed":return r.toFixed(e,o);case"exponential":return r.toExponential(e,o);case"auto":var a=.001,s=1e5;n&&n.exponential&&(void 0!==n.exponential.lower&&(a=n.exponential.lower),void 0!==n.exponential.upper&&(s=n.exponential.upper));{({toExpNeg:e.constructor.toExpNeg,toExpPos:e.constructor.toExpPos})}if(e.constructor.config({toExpNeg:Math.round(Math.log(a)/Math.LN10),toExpPos:Math.round(Math.log(s)/Math.LN10)}),e.isZero())return"0";var u,f=e.abs();return u=f.gte(a)&&f.lt(s)?e.toSignificantDigits(o).toFixed():r.toExponential(e,o),u.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],r=arguments[4];return"."!==e?e+r:r});default:throw new Error('Unknown notation "'+t+'". Choose "auto", "exponential", or "fixed".')}},r.toExponential=function(e,r){return void 0!==r?e.toExponential(r-1):e.toExponential()},r.toFixed=function(e,r){return e.toFixed(r||0)}},function(e,r,n){"use strict";function t(e){for(var r=[];m(e);)r.push(e.length),e=e[0];return r}function i(e,r,n){var t,o=e.length;if(o!=r[n])throw new l(o,r[n]);if(nt;t++){var s=e[t];if(!m(s))throw new l(r.length-1,r.length,"<");i(e[t],r,a)}}else for(t=0;o>t;t++)if(m(e[t]))throw new l(r.length+1,r.length,">")}function o(e,n,t,i){var a,s,u=e.length,f=n[t],l=Math.min(u,f);if(e.length=f,ta;a++)s=e[a],m(s)||(s=[s],e[a]=s),o(s,n,p,i);for(a=l;f>a;a++)s=[],e[a]=s,o(s,n,p,i)}else{for(a=0;l>a;a++)for(;m(e[a]);)e[a]=e[a][0];if(i!==r.UNINITIALIZED)for(a=l;f>a;a++)e[a]=c.clone(i)}}function a(e,r,n){var t,i;if(r>n){var o=n+1;for(t=0,i=e.length;i>t;t++)e[t]=a(e[t],r,o)}else for(;m(e);)e=e[0];return e}function s(e,r,n){var t,i;if(m(e)){var o=n+1;for(t=0,i=e.length;i>t;t++)e[t]=s(e[t],r,o)}else for(var a=n;r>a;a++)e=[e];return e}var u=n(4),f=n(160),c=n(3),l=(n(180),n(141)),p=n(142),m=Array.isArray;r.size=function(e){var n=t(e);return r.validate(e,n),n},r.validate=function(e,r){var n=0==r.length;if(n){if(m(e))throw new l(e.length,0)}else i(e,r,0)},r.validateIndex=function(e,r){if(!u.isNumber(e)||!u.isInteger(e))throw new TypeError("Index must be an integer (value: "+e+")");if(0>e)throw new p(e);if(void 0!==r&&e>=r)throw new p(e,r)},r.UNINITIALIZED={},r.resize=function(e,r,n){if(!m(e)||!m(r))throw new TypeError("Array expected");if(0===r.length)throw new Error("Resizing to scalar is not supported");r.forEach(function(e){if(!u.isNumber(e)||!u.isInteger(e)||0>e)throw new TypeError("Invalid size, must contain positive integers (size: "+f.format(r)+")")});var t=void 0!==n?n:0;return o(e,r,0,t),e},r.squeeze=function(e,n){for(var t=n||r.size(e);m(e)&&1===e.length;)e=e[0],t.shift();for(var i=t.length;1===t[i-1];)i--;return ia;a++)e=[e],o.unshift(1);for(e=s(e,n,0);o.lengthi;i++)t=t.concat.apply(t,r[i]);r=t}return r},r.argsToArray=function(e){for(var r=[],n=0,t=e.length;t>n;n++)r[n]=e[n];return r},r.isArray=m},function(e){e.exports="1.0.0-SNAPSHOT"},function(e,r,n){var t;!function(i){"use strict";function o(e){for(var r,n,t=1,i=e.length,o=e[0]+"";i>t;t++){for(r=e[t]+"",n=T-r.length;n--;)r="0"+r;o+=r}for(i=o.length;"0"==o.charAt(--i););return o.slice(0,i+1||1)}function a(e,r,n,t){var i,o,a,s,u;for(o=1,a=e[0];a>=10;a/=10,o++);return a=r-o,0>a?(a+=T,i=0):(i=Math.ceil((a+1)/T),a%=T),o=N(10,T-a),u=e[i]%o|0,null==t?3>a?(0==a?u=u/100|0:1==a&&(u=u/10|0),s=4>n&&99999==u||n>3&&49999==u||5e4==u||0==u):s=(4>n&&u+1==o||n>3&&u+1==o/2)&&(e[i+1]/o/100|0)==N(10,a-2)-1||(u==o/2||0==u)&&0==(e[i+1]/o/100|0):4>a?(0==a?u=u/1e3|0:1==a?u=u/100|0:2==a&&(u=u/10|0),s=(t||4>n)&&9999==u||!t&&n>3&&4999==u):s=((t||4>n)&&u+1==o||!t&&n>3&&u+1==o/2)&&(e[i+1]/o/1e3|0)==N(10,a-3)-1,s}function s(e,r,n){var t=e.constructor;return null==r||((y=0>r||r>8)||0!==r&&(t.errors?parseInt:parseFloat)(r)!=r)&&!p(t,"rounding mode",r,n,0)?t.rounding:0|r}function u(e,r,n,t){var i=e.constructor;return!(y=(t||0)>r||r>=U+1)&&(0===r||(i.errors?parseInt:parseFloat)(r)==r)||p(i,"argument",r,n,0)}function f(e,r){var n,t,i,s,u,f,c,l=0,p=0,m=0,h=e.constructor,d=h.ONE,x=h.rounding,y=h.precision;if(!e.c||!e.c[0]||e.e>17)return new h(e.c?e.c[0]?e.s<0?0:1/0:d:e.s?e.s<0?0:e:0/0);for(null==r?(v=!1,u=y):u=r,c=new h(.03125);e.e>-2;)e=e.times(c),m+=5;for(t=Math.log(N(2,m))/Math.LN10*2+5|0,u+=t,n=s=f=new h(d),h.precision=u;;){if(s=g(s.times(e),u,1),n=n.times(++p),c=f.plus(z(s,n,u,1)),o(c.c).slice(0,u)===o(f.c).slice(0,u)){for(i=m;i--;)f=g(f.times(f),u,1);if(null!=r)return h.precision=y,f;if(!(3>l&&a(f.c,u-t,x,l)))return g(f,h.precision=y,x,v=!0);h.precision=u+=10,n=s=c=new h(d),p=0,l++}f=c}}function c(e,r,n,t){var i,a,s=e.constructor,u=(e=new s(e)).e;if(null==r?n=0:(g(e,++r,n),n=t?r:r+e.e-u),u=e.e,i=o(e.c),1==t||2==t&&(u>=r||u<=s.toExpNeg)){for(;i.length1&&(i=i.charAt(0)+"."+i.slice(1)),i+=(0>u?"e":"e+")+u}else{if(t=i.length,0>u){for(a=n-t;++u;i="0"+i);i="0."+i}else if(++u>t){for(a=n-u,u-=t;u--;i+="0");a>0&&(i+=".")}else a=n-t,t>u?i=i.slice(0,u)+"."+i.slice(u):a>0&&(i+=".");if(a>0)for(;a--;i+="0");}return e.s<0&&e.c[0]?"-"+i:i}function l(e){var r=e.length-1,n=r*T+1;if(r=e[r]){for(;r%10==0;r/=10,n--);for(r=e[0];r>=10;r/=10,n++);}return n}function p(e,r,n,t,i){if(e.errors){var o=new Error((t||["new Decimal","cmp","div","eq","gt","gte","lt","lte","minus","mod","plus","times","toFraction","pow","random","log","sqrt","toNearest","divToInt"][b?0>b?-b:b:0>1/b?1:0])+"() "+(["number type has more than 15 significant digits","LN10 out of digits"][r]||r+([y?" out of range":" not an integer"," not a boolean or binary digit"][i]||""))+": "+n);throw o.name="Decimal Error",y=b=0,o}}function m(e,r,n){var t=new e(e.ONE);for(v=!1;1&n&&(t=t.times(r)),n>>=1,n;)r=r.times(r);return v=!0,t}function h(e,r){var n,t,i,s,u,f,c,l,m,d,x,y=1,w=10,b=e,E=b.c,N=b.constructor,M=N.ONE,A=N.rounding,T=N.precision;if(b.s<0||!E||!E[0]||!b.e&&1==E[0]&&1==E.length)return new N(E&&!E[0]?-1/0:1!=b.s?0/0:E?0:b);if(null==r?(v=!1,c=T):c=r,N.precision=c+=w,n=o(E),t=n.charAt(0),!(Math.abs(s=b.e)<15e14))return b=new N(t+"."+n.slice(1)),c+2>B.length&&p(N,1,c+2,"ln"),b=h(b,c-w).plus(new N(B.slice(0,c+2)).times(s+"")),N.precision=T,null==r?g(b,T,A,v=!0):b;for(;7>t&&1!=t||1==t&&n.charAt(1)>3;)b=b.times(e),n=o(b.c),t=n.charAt(0),y++;for(s=b.e,t>1?(b=new N("0."+n),s++):b=new N(t+"."+n.slice(1)),d=b,l=u=b=z(b.minus(M),b.plus(M),c,1),x=g(b.times(b),c,1),i=3;;){if(u=g(u.times(x),c,1),m=l.plus(z(u,new N(i),c,1)),o(m.c).slice(0,c)===o(l.c).slice(0,c)){if(l=l.times(2),0!==s&&(c+2>B.length&&p(N,1,c+2,"ln"),l=l.plus(new N(B.slice(0,c+2)).times(s+""))),l=z(l,new N(y),c,1),null!=r)return N.precision=T,l;if(!a(l.c,c-w,A,f))return g(l,N.precision=T,A,v=!0);N.precision=c+=w,m=u=b=z(d.minus(M),d.plus(M),c,1),x=g(b.times(b),c,1),i=f=1}l=m,i+=2}}function g(e,r,n,t){var i,o,a,s,u,f,c,l,p=e.constructor;e:if(r!=o){if(!(c=e.c))return e;for(i=1,s=c[0];s>=10;s/=10,i++);if(o=r-i,0>o)o+=T,a=r,u=c[l=0],f=u/N(10,i-a-1)%10|0;else if(l=Math.ceil((o+1)/T),l>=c.length){if(!t)break e;for(;c.length<=l;c.push(0));u=f=0,i=1,o%=T,a=o-T+1}else{for(u=s=c[l],i=1;s>=10;s/=10,i++);o%=T,a=o-T+i,f=0>a?0:E(u/N(10,i-a-1)%10)}if(t=t||0>r||null!=c[l+1]||(0>a?u:u%N(10,i-a-1)),t=4>n?(f||t)&&(0==n||n==(e.s<0?3:2)):f>5||5==f&&(4==n||t||6==n&&(o>0?a>0?u/N(10,i-a):0:c[l-1])%10&1||n==(e.s<0?8:7)),1>r||!c[0])return c.length=0,t?(r-=e.e+1,c[0]=N(10,r%T),e.e=-r||0):c[0]=e.e=0,e;if(0==o?(c.length=l,s=1,l--):(c.length=l+1,s=N(10,T-o),c[l]=a>0?(u/N(10,i-a)%N(10,a)|0)*s:0),t)for(;;){if(0==l){for(o=1,a=c[0];a>=10;a/=10,o++);for(a=c[0]+=s,s=1;a>=10;a/=10,s++);o!=s&&(e.e++,c[0]==A&&(c[0]=1));break}if(c[l]+=s,c[l]!=A)break;c[l--]=0,s=1}for(o=c.length;0===c[--o];c.pop());}return v&&(e.e>p.maxE?e.c=e.e=null:e.ea,!i||!o)return u==f?0:!i^n?1:-1;if(u!=f)return u>f^n?1:-1;for(a=-1,s=(u=i.length)<(f=o.length)?u:f;++ao[a]^n?1:-1;return u==f?0:u>f^n?1:-1},O.decimalPlaces=O.dp=function(){var e,r,n=null;if(e=this.c){if(n=((r=e.length-1)-E(this.e/T))*T,r=e[r])for(;r%10==0;r/=10,n--);0>n&&(n=0)}return n},O.dividedBy=O.div=function(e,r){return b=2,z(this,new this.constructor(e,r))},O.dividedToIntegerBy=O.divToInt=function(e,r){var n=this,t=n.constructor;return b=18,g(z(n,new t(e,r),0,1,1),t.precision,t.rounding)},O.equals=O.eq=function(e,r){return b=3,0===this.cmp(e,r)},O.exponential=O.exp=function(){return f(this)},O.floor=function(){return g(new this.constructor(this),this.e+1,3)},O.greaterThan=O.gt=function(e,r){return b=4,this.cmp(e,r)>0},O.greaterThanOrEqualTo=O.gte=function(e,r){return b=5,r=this.cmp(e,r),1==r||0===r},O.isFinite=function(){return!!this.c},O.isInteger=O.isInt=function(){return!!this.c&&E(this.e/T)>this.c.length-2},O.isNaN=function(){return!this.s},O.isNegative=O.isNeg=function(){return this.s<0},O.isZero=function(){return!!this.c&&0==this.c[0]},O.lessThan=O.lt=function(e,r){return b=6,this.cmp(e,r)<0},O.lessThanOrEqualTo=O.lte=function(e,r){return b=7,r=this.cmp(e,r),-1==r||0===r},O.logarithm=O.log=function(e,r){var n,t,i,s,u,f,c,l,m,d=this,x=d.constructor,y=x.precision,w=x.rounding,E=5;if(null==e)e=new x(10),n=!0;else{if(b=15,e=new x(e,r),t=e.c,e.s<0||!t||!t[0]||!e.e&&1==t[0]&&1==t.length)return new x(0/0);n=e.eq(10)}if(t=d.c,d.s<0||!t||!t[0]||!d.e&&1==t[0]&&1==t.length)return new x(t&&!t[0]?-1/0:1!=d.s?0/0:t?0:1/0);if(u=n&&(s=t[0],t.length>1||1!=s&&10!=s&&100!=s&&1e3!=s&&1e4!=s&&1e5!=s&&1e6!=s),v=!1,c=y+E,l=c+10,f=h(d,c),n?(l>B.length&&p(x,1,l,"log"),i=new x(B.slice(0,l))):i=h(e,c),m=z(f,i,c,1),a(m.c,s=y,w))do if(c+=10,f=h(d,c),n?(l=c+10,l>B.length&&p(x,1,l,"log"),i=new x(B.slice(0,l))):i=h(e,c),m=z(f,i,c,1),!u){+o(m.c).slice(s+1,s+15)+1==1e14&&(m=g(m,y+1,0));break}while(a(m.c,s+=10,w));return v=!0,g(m,y,w)},O.minus=function(e,r){var n,t,i,o,a=this,s=a.constructor,u=a.s;if(b=8,e=new s(e,r),r=e.s,!u||!r)return new s(0/0);if(u!=r)return e.s=-r,a.plus(e);var f=a.c,c=e.c,l=E(e.e/T),p=E(a.e/T),m=s.precision,h=s.rounding;if(!p||!l){if(!f||!c)return f?(e.s=-r,e):new s(c?a:0/0);if(!f[0]||!c[0])return a=c[0]?(e.s=-r,e):new s(f[0]?a:3==h?-0:0),v?g(a,m,h):a}if(f=f.slice(),t=f.length,u=p-l){for((o=0>u)?(u=-u,n=f,t=c.length):(l=p,n=c),(p=Math.ceil(m/T))>t&&(t=p),u>(t+=2)&&(u=t,n.length=1),n.reverse(),r=u;r--;n.push(0));n.reverse()}else for((o=t<(i=c.length))&&(i=t),u=r=0;i>r;r++)if(f[r]!=c[r]){o=f[r]0)for(;r--;f[i++]=0);for(p=A-1,r=c.length;r>u;){if(f[--r]=10;r/=10,u++);return e.e=u+l*T-1,v?g(e,m,h):e},O.modulo=O.mod=function(e,r){var n,t,i=this,o=i.constructor,a=o.modulo;return b=9,e=new o(e,r),r=e.s,n=!i.c||!r||e.c&&!e.c[0],n||!e.c||i.c&&!i.c[0]?n?new o(0/0):g(new o(i),o.precision,o.rounding):(v=!1,9==a?(e.s=1,t=z(i,e,0,3,1),e.s=r,t.s*=r):t=z(i,e,0,a,1),t=t.times(e),v=!0,i.minus(t))},O.naturalLogarithm=O.ln=function(){return h(this)},O.negated=O.neg=function(){var e=new this.constructor(this);return e.s=-e.s||null,g(e)},O.plus=function(e,r){var n,t=this,i=t.constructor,o=t.s;if(b=10,e=new i(e,r),r=e.s,!o||!r)return new i(0/0);if(o!=r)return e.s=-r,t.minus(e);var a=t.c,s=e.c,u=E(e.e/T),f=E(t.e/T),c=i.precision,l=i.rounding;if(!f||!u){if(!a||!s)return new i(o/0);if(!a[0]||!s[0])return t=s[0]?e:new i(a[0]?t:0*o),v?g(t,c,l):t}if(a=a.slice(),o=f-u){for(0>o?(o=-o,n=a,r=s.length):(u=f,n=s,r=a.length),(f=Math.ceil(c/T))>r&&(r=f),o>++r&&(o=r,n.length=1),n.reverse();o--;n.push(0));n.reverse()}for(a.length-s.length<0&&(n=s,s=a,a=n),o=s.length,r=0,f=A;o;a[o]%=f)r=(a[--o]=a[o]+s[o]+r)/f|0;for(r&&(a.unshift(r),++u),o=a.length;0==a[--o];a.pop());for(e.c=a,o=1,r=a[0];r>=10;r/=10,o++);return e.e=o+u*T-1,v?g(e,c,l):e},O.precision=O.sd=function(e){var r=null,n=this;return e!=r&&e!==!!e&&1!==e&&0!==e&&p(n.constructor,"argument",e,"precision",1),n.c&&(r=l(n.c),e&&n.e+1>r&&(r=n.e+1)),r},O.round=function(){var e=this,r=e.constructor;return g(new r(e),e.e+1,r.rounding)},O.squareRoot=O.sqrt=function(){var e,r,n,t,i,a,s=this,u=s.c,f=s.s,c=s.e,l=s.constructor,p=new l(.5);if(1!==f||!u||!u[0])return new l(!f||0>f&&(!u||u[0])?0/0:u?s:1/0);for(v=!1,f=Math.sqrt(+s),0==f||f==1/0?(r=o(u),(r.length+c)%2==0&&(r+="0"),f=Math.sqrt(r),c=E((c+1)/2)-(0>c||c%2),f==1/0?r="1e"+c:(r=f.toExponential(),r=r.slice(0,r.indexOf("e")+1)+c),t=new l(r)):t=new l(f.toString()),n=(c=l.precision)+3;;)if(a=t,t=p.times(a.plus(z(s,a,n+2,1))),o(a.c).slice(0,n)===(r=o(t.c)).slice(0,n)){if(r=r.slice(n-3,n+1),"9999"!=r&&(i||"4999"!=r)){(!+r||!+r.slice(1)&&"5"==r.charAt(0))&&(g(t,c+1,1),e=!t.times(t).eq(s));break}if(!i&&(g(a,c+1,0),a.times(a).eq(s))){t=a;break}n+=4,i=1}return v=!0,g(t,c,l.rounding,e)},O.times=function(e,r){var n,t,i=this,o=i.constructor,a=i.c,s=(b=11,e=new o(e,r),e.c),u=E(i.e/T),f=E(e.e/T),c=i.s;if(r=e.s,e.s=c==r?1:-1,!((u||a&&a[0])&&(f||s&&s[0])))return new o(!c||!r||a&&!a[0]&&!s||s&&!s[0]&&!a?0/0:a&&s?0*e.s:e.s/0);for(t=u+f,c=a.length,r=s.length,r>c&&(n=a,a=s,s=n,f=c,c=r,r=f),f=c+r,n=[];f--;n.push(0));for(u=r-1;u>-1;u--){for(r=0,f=c+u;f>u;r=r/A|0)r=n[f]+s[u]*a[f-u-1]+r,n[f--]=r%A|0;r&&(n[f]=(n[f]+r)%A)}for(r&&++t,n[0]||n.shift(),f=n.length;!n[--f];n.pop());for(e.c=n,c=1,r=n[0];r>=10;r/=10,c++);return e.e=c+t*T-1,v?g(e,o.precision,o.rounding):e},O.toDecimalPlaces=O.toDP=function(e,r){var n=this;return n=new n.constructor(n),null!=e&&u(n,e,"toDP")?g(n,(0|e)+n.e+1,s(n,r,"toDP")):n},O.toExponential=function(e,r){var n=this;return n.c?c(n,null!=e&&u(n,e,"toExponential")?0|e:null,null!=e&&s(n,r,"toExponential"),1):n.toString()},O.toFixed=function(e,r){var n,t=this,i=t.constructor,o=i.toExpNeg,a=i.toExpPos;return null!=e&&(e=u(t,e,n="toFixed")?t.e+(0|e):null,r=s(t,r,n)),i.toExpNeg=-(i.toExpPos=1/0),null!=e&&t.c?(n=c(t,e,r),t.s<0&&t.c&&(t.c[0]?n.indexOf("-")<0&&(n="-"+n):n=n.replace("-",""))):n=t.toString(),i.toExpNeg=o,i.toExpPos=a,n},O.toFormat=function(e,r,n){var t=this.toFixed(r).split(".");return t[0].replace(/\B(?=(\d{3})+$)/g,null==e?",":e+"")+(t[1]?"."+(n?t[1].replace(/\d{5}\B/g,"$&"+n):t[1]):"")},O.toFraction=function(e){var r,n,t,i,a,s,u,f,c=this,m=c.constructor,h=r=new m(m.ONE),g=s=new m(0),d=c.c,x=new m(g);if(!d)return c.toString();for(t=x.e=l(d)-c.e-1,x.c[0]=N(10,(u=t%T)<0?T+u:u),(null==e||(!(b=12,a=new m(e)).s||(y=a.cmp(h)<0||!a.c)||m.errors&&E(a.e/T)0)&&(e=t>0?x:h),v=!1,a=new m(o(d)),u=m.precision,m.precision=t=d.length*T*2;f=z(a,x,0,1,1),n=r.plus(f.times(g)),1!=n.cmp(e);)r=g,g=n,h=s.plus(f.times(n=h)),s=n,x=a.minus(f.times(n=x)),a=n;return n=z(e.minus(r),g,0,1,1),s=s.plus(n.times(h)),r=r.plus(n.times(g)),s.s=h.s=c.s,i=z(h,g,t,1).minus(c).abs().cmp(z(s,r,t,1).minus(c).abs())<1?[h+"",g+""]:[s+"",r+""],v=!0,m.precision=u,i},O.toNearest=function(e,r){var n=this,t=n.constructor;return n=new t(n),null==e?(e=new t(t.ONE),r=t.rounding):(b=17,e=new t(e),r=s(n,r,"toNearest")),e.c?n.c&&(e.c[0]?(v=!1,n=z(n,e,0,4>r?[4,5,7,8][r]:r,1).times(e),v=!0,g(n)):n.c=[n.e=0]):n.s&&(e.s&&(e.s=n.s),n=e),n},O.toNumber=function(){var e=this;return+e||(e.s?0*e.s:0/0)},O.toPower=O.pow=function(e,r){var n,t,i,s,u=this,c=u.constructor,l=u.s,p=(b=13,+(e=new c(e,r))),d=0>p?-p:p,x=c.precision,y=c.rounding;if(!u.c||!e.c||(i=!u.c[0])||!e.c[0])return new c(N(i?0*l:+u,p));if(u=new c(u),n=u.c.length,!u.e&&u.c[0]==u.s&&1==n)return u;if(r=e.c.length-1,e.e||e.c[0]!=e.s||r)if(t=E(e.e/T),i=t>=r,!i&&0>l)s=new c(0/0);else{if(i&&q>n*T*d){if(s=m(c,u,d),e.s<0)return c.ONE.div(s)}else{if(l=0>l&&1&e.c[Math.max(t,r)]?-1:1,r=N(+u,p),t=0!=r&&isFinite(r)?new c(r+"").e:E(p*(Math.log("0."+o(u.c))/Math.LN10+u.e+1)),t>c.maxE+1||t0?l/0:0);v=!1,c.rounding=u.s=1,d=Math.min(12,(t+"").length),s=f(e.times(h(u,x+d)),x),s=g(s,x+5,1),a(s.c,x,y)&&(t=x+10,s=g(f(e.times(h(u,t+d)),t),t+5,1),+o(s.c).slice(x+1,x+15)+1==1e14&&(s=g(s,x+1,0))),s.s=l,v=!0,c.rounding=y}s=g(s,x,y)}else s=g(u,x,y);return s},O.toPrecision=function(e,r){var n=this;return null!=e&&u(n,e,"toPrecision",1)&&n.c?c(n,0|--e,s(n,r,"toPrecision"),2):n.toString()},O.toSignificantDigits=O.toSD=function(e,r){var n=this,t=n.constructor;return n=new t(n),null!=e&&u(n,e,"toSD",1)?g(n,0|e,s(n,r,"toSD")):g(n,t.precision,t.rounding)},O.toString=function(e){var r,n,t,i=this,a=i.constructor,s=i.e;if(null===s)n=i.s?"Infinity":"NaN";else{if(e===r&&(s<=a.toExpNeg||s>=a.toExpPos))return c(i,null,a.rounding,1);if(n=o(i.c),0>s){for(;++s;n="0"+n);n="0."+n}else if(t=n.length,s>0)if(++s>t)for(s-=t;s--;n+="0");else t>s&&(n=n.slice(0,s)+"."+n.slice(s));else if(r=n.charAt(0),t>1)n=r+"."+n.slice(1);else if("0"==r)return r;if(null!=e)if((y=!(e>=2&&65>e))||e!=(0|e)&&a.errors)p(a,"base",e,"toString",0);else if(n=d(a,n,0|e,10,i.s),"0"==n)return n}return i.s<0?"-"+n:n},O.truncated=O.trunc=function(){return g(new this.constructor(this),this.e+1,1)},O.valueOf=O.toJSON=function(){return this.toString()},d=function(){function e(e,r,n){for(var t,i,o=[0],a=0,s=e.length;s>a;){for(i=o.length;i--;o[i]*=r);for(o[t=0]+=S.indexOf(e.charAt(a++));tn-1&&(null==o[t+1]&&(o[t+1]=0),o[t+1]+=o[t]/n|0,o[t]%=n)}return o.reverse()}return function(r,n,t,i,o){var a,s,u,f,c,l,p=n.indexOf("."),h=r.precision,g=r.rounding;for(37>i&&(n=n.toLowerCase()),p>=0&&(n=n.replace(".",""),l=new r(i),f=m(r,l,n.length-p),l.c=e(f.toFixed(),10,t),l.e=l.c.length),c=e(n,i,t),a=s=c.length;0==c[--s];c.pop());if(!c[0])return"0";if(0>p?a--:(f.c=c,f.e=a,f.s=o,f=z(f,l,h,g,0,t),c=f.c,u=f.r,a=f.e),p=c[h],s=t/2,u=u||null!=c[h+1],4>g?(null!=p||u)&&(0==g||g==(f.s<0?3:2)):p>s||p==s&&(4==g||u||6==g&&1&c[h-1]||g==(f.s<0?8:7)))for(c.length=h,--t;++c[--h]>t;)c[h]=0,h||(++a,c.unshift(1));else c.length=h;for(s=c.length;!c[--s];);for(p=0,n="";s>=p;n+=S.charAt(c[p++]));if(0>a){for(;++a;n="0"+n);n="0."+n}else if(p=n.length,++a>p)for(a-=p;a--;n+="0");else p>a&&(n=n.slice(0,a)+"."+n.slice(a));return n}}();var z=function(){function e(e,r,n){var t,i=0,o=e.length;for(e=e.slice();o--;)t=e[o]*r+i,e[o]=t%n|0,i=t/n|0;return i&&e.unshift(i),e}function r(e,r,n,t){var i,o;if(n!=t)o=n>t?1:-1;else for(i=o=0;n>i;i++)if(e[i]!=r[i]){o=e[i]>r[i]?1:-1;break}return o}function n(e,r,n,t){for(var i=0;n--;)e[n]-=i,i=e[n]1;e.shift());}return function(t,i,o,a,s,u){var f,c,l,p,m,h,d,x,y,w,v,b,N,M,S,O,C,U,q,B=t.constructor,z=t.s==i.s?1:-1,I=t.c,_=i.c;if(!(I&&I[0]&&_&&_[0]))return new B(t.s&&i.s&&(I?!_||I[0]!=_[0]:_)?I&&0==I[0]||!_?0*z:z/0:0/0);for(u?(p=1,c=t.e-i.e):(u=A,p=T,c=E(t.e/p)-E(i.e/p)),U=_.length,O=I.length,y=new B(z),w=y.c=[],l=0;_[l]==(I[l]||0);l++);if(_[l]>(I[l]||0)&&c--,null==o?(z=o=B.precision,a=B.rounding):z=s?o+(t.e-i.e)+1:o,0>z)w.push(1),m=!0;else{if(z=z/p+2|0,l=0,1==U){for(h=0,_=_[0],z++;(O>l||h)&&z--;l++)M=h*u+(I[l]||0),w[l]=M/_|0,h=M%_|0;m=h||O>l}else{for(h=u/(_[0]+1)|0,h>1&&(_=e(_,h,u),I=e(I,h,u),U=_.length,O=I.length),S=U,v=I.slice(0,U),b=v.length;U>b;v[b++]=0);q=_.slice(),q.unshift(0),C=_[0],_[1]>=u/2&&C++;do h=0,f=r(_,v,U,b),0>f?(N=v[0],U!=b&&(N=N*u+(v[1]||0)),h=N/C|0,h>1?(h>=u&&(h=u-1),d=e(_,h,u),x=d.length,b=v.length,f=r(d,v,x,b),1==f&&(h--,n(d,x>U?q:_,x,u))):(0==h&&(f=h=1),d=_.slice()),x=d.length,b>x&&d.unshift(0),n(v,d,b,u),-1==f&&(b=v.length,f=r(_,v,U,b),1>f&&(h++,n(v,b>U?q:_,b,u))),b=v.length):0===f&&(h++,v=[0]),w[l++]=h,f&&v[0]?v[b++]=I[S]||0:(v=[I[S]],b=1);while((S++=10;z/=10,l++);y.e=l+c*p-1,g(y,s?o+y.e+1:o,a,m)}return y}}();x=function(){function e(e){var r,n,t,i=this,o="config",a=i.errors?parseInt:parseFloat;return e==n||"object"!=typeof e&&!p(i,"object expected",e,o)?i:((t=e[r="precision"])!=n&&((y=1>t||t>U)||a(t)!=t?p(i,r,t,o,0):i[r]=0|t),(t=e[r="rounding"])!=n&&((y=0>t||t>8)||a(t)!=t?p(i,r,t,o,0):i[r]=0|t),(t=e[r="toExpNeg"])!=n&&((y=-C>t||t>0)||a(t)!=t?p(i,r,t,o,0):i[r]=E(t)),(t=e[r="toExpPos"])!=n&&((y=0>t||t>C)||a(t)!=t?p(i,r,t,o,0):i[r]=E(t)),(t=e[r="minE"])!=n&&((y=-C>t||t>0)||a(t)!=t?p(i,r,t,o,0):i[r]=E(t)),(t=e[r="maxE"])!=n&&((y=0>t||t>C)||a(t)!=t?p(i,r,t,o,0):i[r]=E(t)),(t=e[r="errors"])!=n&&(t===!!t||1===t||0===t?(y=b=0,i[r]=!!t):p(i,r,t,o,1)),(t=e[r="crypto"])!=n&&(t===!!t||1===t||0===t?i[r]=!(!t||!w||"object"!=typeof w):p(i,r,t,o,1)),(t=e[r="modulo"])!=n&&((y=0>t||t>9)||a(t)!=t?p(i,r,t,o,0):i[r]=0|t),i)}function r(e){return new this(e).exp()}function n(e){return new this(e).ln()}function t(e,r){return new this(e).log(r)}function i(e,r,n){var t,i,o=0;for("[object Array]"==M.call(r[0])&&(r=r[0]),t=new e(r[0]);++oi;)t=r[i],t>=429e7?r[i]=w.getRandomValues(new Uint32Array(1))[0]:o[i++]=t%1e7;else if(w&&w.randomBytes){for(r=w.randomBytes(n*=4);n>i;)t=r[i]+(r[i+1]<<8)+(r[i+2]<<16)+((127&r[i+3])<<24),t>=214e7?w.randomBytes(4).copy(r,i):(o.push(t%1e7),i+=4);i=n/4}else p(a,"crypto unavailable",w,"random");if(!i)for(;n>i;)o[i++]=1e7*Math.random()|0;for(n=o[--i],e%=T,n&&e&&(t=N(10,T-e),o[i]=(n/t|0)*t);0===o[i];i--)o.pop();if(0>i)o=[n=0];else{for(n=-1;0===o[0];)o.shift(),n-=T;for(i=1,t=o[0];t>=10;)t/=10,i++;T>i&&(n-=T-i)}return s.e=n,s.c=o,s}function c(e){return new this(e).sqrt()}function l(i){function u(e,r){var n=this;if(!(n instanceof u))return p(u,"Decimal called without new",e),new u(e,r);if(e instanceof u){if(null==r)return b=0,n.constructor=e.constructor,n.s=e.s,n.e=e.e,void(n.c=(e=e.c)?e.slice():e);if(10==r)return g(new u(e),u.precision,u.rounding);e+=""}return m(n.constructor=u,n,e,r)}return u.precision=20,u.rounding=4,u.modulo=1,u.toExpNeg=-7,u.toExpPos=21,u.minE=-C,u.maxE=C,u.errors=!0,u.crypto=!1,u.prototype=O,u.ONE=new u(1),u.ROUND_UP=0,u.ROUND_DOWN=1,u.ROUND_CEIL=2,u.ROUND_FLOOR=3,u.ROUND_HALF_UP=4,u.ROUND_HALF_DOWN=5,u.ROUND_HALF_EVEN=6,u.ROUND_HALF_CEIL=7,u.ROUND_HALF_FLOOR=8,u.EUCLID=9,u.config=e,u.constructor=l,u.exp=r,u.ln=n,u.log=t,u.max=o,u.min=a,u.pow=s,u.sqrt=c,u.random=f,null!=i&&u.config(i),u}var m=function(){var e=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,r=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")};return function(n,t,i,o){var a,s,u,f,c,l;if("string"!=typeof i&&(i=(f="number"==typeof i||"[object Number]"==M.call(i))&&0===i&&0>1/i?"-0":i+""),c=i,o==s&&e.test(i))t.s="-"==i.charAt(0)?(i=i.slice(1),-1):1;else{if(10==o)return g(new n(i),n.precision,n.rounding);if(i=r.call(i).replace(/^\+(?!-)/,""),t.s="-"==i.charAt(0)?(i=i.replace(/^-(?!-)/,""),-1):1,o!=s?o!=(0|o)&&n.errors||(y=!(o>=2&&65>o))?(p(n,"base",o,0,0),l=e.test(i)):(a="["+S.slice(0,o=0|o)+"]+",i=i.replace(/\.$/,"").replace(/^\./,"0."),(l=new RegExp("^"+a+"(?:\\."+a+")?$",37>o?"i":"").test(i))?(f&&(i.replace(/^0\.0*|\./,"").length>15&&p(n,0,c),f=!f),i=d(n,i,10,o,t.s)):"Infinity"!=i&&"NaN"!=i&&(p(n,"not a base "+o+" number",c),i="NaN")):l=e.test(i),!l)return t.c=t.e=null,"Infinity"!=i&&("NaN"!=i&&p(n,"not a number",c),t.s=null),b=0,t}for((s=i.indexOf("."))>-1&&(i=i.replace(".","")),(u=i.search(/e/i))>0?(0>s&&(s=u),s+=+i.slice(u+1),i=i.substring(0,u)):0>s&&(s=i.length),u=0;"0"==i.charAt(u);u++);for(o=i.length;"0"==i.charAt(--o););if(i=i.slice(u,o+1)){if(o=i.length,f&&o>15&&p(n,0,c),t.e=s=s-u-1,t.c=[],u=(s+1)%T,0>s&&(u+=T),o>u){for(u&&t.c.push(+i.slice(0,u)),o-=T;o>u;)t.c.push(+i.slice(u,u+=T));i=i.slice(u),u=T-i.length}else u-=o;for(;u--;i+="0");t.c.push(+i),v&&(t.e>n.maxE?t.c=t.e=null:t.e=this.max?"Index out of range ("+this.index+" > "+(this.max-1)+")":"Index out of range ("+this.index+")",this.stack=(new Error).stack}r.prototype=new RangeError,r.prototype.constructor=RangeError,r.prototype.name="IndexError",e.exports=r},function(e){"use strict";function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.fn=e,this.types=Array.prototype.splice.call(arguments,1),this.message=e?0==this.types.length?"Unsupported type of argument in function "+e:"Function "+e+"("+this.types.join(", ")+") not supported":"Unsupported type of argument",this.stack=(new Error).stack}r.prototype=new TypeError,r.prototype.constructor=TypeError,r.prototype.name="UnsupportedTypeError",e.exports=r},function(e,r,n){"use strict";r.array=n(137),r["boolean"]=n(159),r.number=n(4),r.bignumber=n(136),r.object=n(3),r.string=n(160),r.types=n(180)},function(e,r,n){"use strict";function t(e){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(this.nodes=e||[],!a(this.nodes)||!this.nodes.every(s))throw new TypeError("Array containing Nodes expected")}var i=n(157),o=(n(3),n(160)),a=(n(13),n(144),Array.isArray),s=i.isNode;t.prototype=new i,t.prototype.type="ArrayNode",t.prototype._compile=function(e){var r="array"!==e.math.config().matrix,n=this.nodes.map(function(r){return r._compile(e)});return(r?"math.matrix([":"[")+n.join(",")+(r?"])":"]")},t.prototype.find=function(e){var r=[];this.match(e)&&r.push(this);for(var n=this.nodes,t=0,i=n.length;i>t;t++)r=r.concat(n[t].find(e));return r},t.prototype.toString=function(){return o.format(this.nodes)},t.prototype.toTex=function(e){e=e||"bmatrix";var r="\\begin{"+e+"}";return this.nodes.forEach(function(e){r+=e.nodes?e.nodes.map(function(e){return e.toTex()}).join("&"):e.toTex(),r+="\\\\"}),r+="\\end{"+e+"}"},e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!u(e))throw new TypeError('String expected for parameter "name"');if(!(r instanceof i))throw new TypeError('Node expected for parameter "expr"');if(e in a)throw new Error('Illegal symbol name, "'+e+'" is a reserved keyword');this.name=e,this.expr=r}var i=n(157),o=n(145),a=n(283),s=n(284),u=n(160).isString;t.prototype=new i,t.prototype.type="AssignmentNode",t.prototype._compile=function(e){return'scope["'+this.name+'"] = '+this.expr._compile(e)},t.prototype.find=function(e){var r=[];return this.match(e)&&r.push(this),r=r.concat(this.expr.find(e))},t.prototype.toString=function(){return this.name+" = "+this.expr.toString()},t.prototype.toTex=function(){var e;return this.expr instanceof o&&(e=["\\mathbf{","}"]),s.addBraces(s.toSymbol(this.name),e)+"="+s.addBraces(this.expr.toTex())},e.exports=t},function(e,r,n){"use strict";function t(){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");this.params=[]}var i=n(157),o=n(12),a=n(159).isBoolean;t.prototype=new i,t.prototype.type="BlockNode",t.prototype.add=function(e,r){if(void 0===r&&(r=!0),!(e instanceof i))throw new TypeError('Node expected for parameter "expr"');if(!a(r))throw new TypeError('Boolean expected for parameter "visible"');var n=this.params.length;this.params[n]={node:e,visible:r}},t.prototype._compile=function(e){e.ResultSet=o;var r=this.params.map(function(r){var n=r.node._compile(e);return r.visible?"results.push("+n+");":n+";"});return"(function () {var results = [];"+r.join("")+"return new ResultSet(results);})()"},t.prototype.find=function(e){var r=[];this.match(e)&&r.push(this);for(var n=this.params,t=0,i=n.length;i>t;t++)r=r.concat(n[t].node.find(e));return r},t.prototype.toString=function(){return this.params.map(function(e){return e.node.toString()+(e.visible?"":";")}).join("\n")},t.prototype.toTex=function(){return this.params.map(function(e){return e.node.toTex()+(e.visible?"":";")}).join("\n")},e.exports=t},function(e,r,n){"use strict";function t(e,r,n){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof i))throw new TypeError("Parameter condition must be a Node");if(!(r instanceof i))throw new TypeError("Parameter trueExpr must be a Node");if(!(n instanceof i))throw new TypeError("Parameter falseExpr must be a Node");this.condition=e,this.trueExpr=r,this.falseExpr=n}var i=n(157),o=n(284),a=n(139),s=n(6),u=n(10),f=n(144),c=f.string.isString,l=f.number.isNumber,p=f["boolean"].isBoolean;t.prototype=new i,t.prototype.type="ConditionalNode",t.prototype._compile=function(e){return e.testCondition=function(r){if(l(r)||p(r)||c(r))return r?!0:!1;if(r instanceof a)return r.isZero()?!1:!0;if(r instanceof s)return r.re||r.im?!0:!1;if(r instanceof u)return r.value?!0:!1;if(null===r||void 0===r)return!1;throw new TypeError('Unsupported type of condition "'+e.math["typeof"](r)+'"')},"testCondition("+this.condition._compile(e)+") ? ( "+this.trueExpr._compile(e)+") : ( "+this.falseExpr._compile(e)+")" +},t.prototype.find=function(e){var r=[];return this.match(e)&&r.push(this),r=r.concat(this.condition.find(e),this.trueExpr.find(e),this.falseExpr.find(e))},t.prototype.toString=function(){return"("+this.condition.toString()+") ? ("+this.trueExpr.toString()+") : ("+this.falseExpr.toString()+")"},t.prototype.toTex=function(){var e=o.addBraces(this.trueExpr.toTex())+", &\\quad"+o.addBraces("\\text{if}\\;"+this.condition.toTex())+"\\\\"+(o.addBraces(this.falseExpr.toTex())+", &\\quad"+o.addBraces("\\text{otherwise}"));return o.addBraces(e,["\\left\\{\\begin{array}{l l}","\\end{array}\\right."])},e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(r){if(!a(r))throw new TypeError('String expected for parameter "valueType"');if(!a(e))throw new TypeError('String expected for parameter "value"');this.value=e,this.valueType=r}else this.value=e+"",this.valueType=o(e);if(!s[this.valueType])throw new TypeError('Unsupported type of value "'+this.valueType+'"')}var i=n(157),o=(n(139),n(180).type),a=n(160).isString,s={number:!0,string:!0,"boolean":!0,undefined:!0,"null":!0};t.prototype=new i,t.prototype.type="ConstantNode",t.prototype._compile=function(e){switch(this.valueType){case"number":return"bignumber"===e.math.config().number?'math.bignumber("'+this.value+'")':this.value.replace(/^(0*)[0-9]/,function(e,r){return e.substring(r.length)});case"string":return'"'+this.value+'"';case"boolean":return this.value;case"undefined":return this.value;case"null":return this.value;default:throw new TypeError('Unsupported type of constant "'+this.valueType+'"')}},t.prototype.toString=function(){switch(this.valueType){case"string":return'"'+this.value+'"';default:return this.value}},t.prototype.toTex=function(){var e,r=this.value;switch(this.valueType){case"string":return"\\text{"+r+"}";case"number":return e=r.toLowerCase().indexOf("e"),-1!==e?r.substring(0,e)+" \\cdot 10^{"+r.substring(e+1)+"}":r;default:return r}},e.exports=t},function(e,r,n){"use strict";function t(e,r,n){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!s(e))throw new TypeError('String expected for parameter "name"');if(!u(r)||!r.every(s))throw new TypeError('Array containing strings expected for parameter "args"');if(!(n instanceof i))throw new TypeError('Node expected for parameter "expr"');if(e in o)throw new Error('Illegal function name, "'+e+'" is a reserved keyword');this.name=e,this.args=r,this.expr=n}var i=n(157),o=n(283),a=n(284),s=n(160).isString,u=Array.isArray;t.prototype=new i,t.prototype.type="FunctionAssignmentNode",t.prototype._compile=function(e){return'scope["'+this.name+'"] = (function (scope) { scope = Object.create(scope); var fn = function '+this.name+"("+this.args.join(",")+") { if (arguments.length != "+this.args.length+') { throw new SyntaxError("Wrong number of arguments in function '+this.name+' (" + arguments.length + " provided, '+this.args.length+' expected)"); }'+this.args.map(function(e,r){return'scope["'+e+'"] = arguments['+r+"];"}).join("")+" return "+this.expr._compile(e)+' }; fn.syntax = "'+this.name+"("+this.args.join(", ")+')"; return fn; })(scope);'},t.prototype.find=function(e){var r=[];return this.match(e)&&r.push(this),r=r.concat(this.expr.find(e))},t.prototype.toString=function(){return"function "+this.name+"("+this.args.join(", ")+") = "+this.expr.toString()},t.prototype.toTex=function(){return this.name+a.addBraces(this.args.map(a.toSymbol).join(", "),!0)+"="+a.addBraces(this.expr.toTex())},e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof i))throw new TypeError('Node expected for parameter "object"');if(!u(r)||!r.every(s))throw new TypeError('Array containing Nodes expected for parameter "ranges"');this.object=e,this.ranges=r}var i=n(157),o=n(154),a=n(155),s=i.isNode,u=Array.isArray;t.prototype=new i,t.prototype.type="IndexNode",t.prototype._compile=function(e){return this.compileSubset(e)},t.prototype.compileSubset=function(e,r){var n={type:a,properties:{name:"end"}},t=!1,i=this.ranges.map(function(e){var r=e.find(n).length>0;return t=r?r:t,r}),s=this.ranges.map(function(r,n){var t=i[n];return r instanceof o?t?'(function (scope) { scope = Object.create(scope); scope["end"] = size['+n+"]; return [ "+r.start._compile(e)+", "+r.end._compile(e)+", "+(r.step?r.step._compile(e):"1")+" ];})(scope)":"(function () { return [ "+r.start._compile(e)+", "+r.end._compile(e)+", "+(r.step?r.step._compile(e):"1")+" ];})()":t?'(function (scope) { scope = Object.create(scope); scope["end"] = size['+n+"]; return "+r._compile(e)+";})(scope)":r._compile(e)});return t?"(function () { var obj = "+this.object._compile(e)+"; var size = math.size(obj).valueOf(); return math.subset( obj, math.index("+s.join(", ")+") "+(r?", "+r:"")+" );})()":"math.subset("+this.object._compile(e)+",math.index("+s.join(", ")+")"+(r?", "+r:"")+")"},t.prototype.find=function(e){var r=[];this.match(e)&&r.push(this),r=r.concat(this.object.find(e));for(var n=this.ranges,t=0,i=n.length;i>t;t++)r=r.concat(n[t].find(e));return r},t.prototype.objectName=function(){return this.object.name},t.prototype.toString=function(){return this.object.toString()+"["+this.ranges.join(", ")+"]"},t.prototype.toTex=function(){return this.object.toTex()+"["+this.ranges.join(", ")+"]"},e.exports=t},function(e,r,n){"use strict";function t(e,r,n){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");this.op=e,this.fn=r,this.params=n}var i=n(157),o=n(149),a=n(155),s=n(153),u=n(284);t.prototype=new i,t.prototype.type="OperatorNode",t.prototype._compile=function(e){if(!(this.fn in e.math))throw new Error("Function "+this.fn+' missing in provided namespace "math"');var r=this.params.map(function(r){return r._compile(e)});return"math."+this.fn+"("+r.join(", ")+")"},t.prototype.find=function(e){var r=[];this.match(e)&&r.push(this);var n=this.params;if(n)for(var t=0,i=n.length;i>t;t++)r=r.concat(n[t].find(e));return r},t.prototype.toString=function(){var e=this.params;switch(e.length){case 1:return"-"==this.op?"-"+e[0].toString():e[0].toString()+this.op;case 2:var r=e[0].toString();e[0]instanceof t&&(r="("+r+")");var n=e[1].toString();return e[1]instanceof t&&(n="("+n+")"),r+" "+this.op+" "+n;default:return this.op+"("+this.params.join(", ")+")"}},t.prototype.toTex=function(){var e=this.params,r=u.toOperator(this.op),n=e[0],i=e[1];switch(e.length){case 1:return"-"===this.op||"+"===this.op?this.op+n.toTex():n.toTex()+this.op;case 2:var f=n.toTex(),c=!1,l=i.toTex(),p=!1,m="",h="";switch(this.op){case"/":m=r,r="";break;case"*":n instanceof t&&("+"===n.op||"-"===n.op)&&(c=!0),i instanceof t&&("+"===i.op||"-"===i.op?p=!0:"*"===i.op&&(p=!0)),r=(n instanceof o||n instanceof t)&&(i instanceof o||i instanceof t)?" \\cdot ":" \\, ";break;case"^":n instanceof t||n instanceof s?c=!0:n instanceof a&&(c=null);break;case"to":l=u.toUnit(l,!0)}return f=u.addBraces(f,c),l=u.addBraces(l,p),m+f+r+l+h;default:return r+"("+this.params.map(u.toSymbol).join(", ")+")"}},e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof i))throw new TypeError('SymbolNode expected for parameter "symbol"');if(!s(r)||!r.every(a))throw new TypeError('Array containing Nodes expected for parameter "params"');this.symbol=e,this.params=r}var i=n(157),o=n(284),a=i.isNode,s=Array.isArray;t.prototype=new i,t.prototype.type="FunctionNode",t.prototype._compile=function(e){var r=e.math[this.symbol.name],n="function"==typeof r&&1==r.rawArgs,t=this.params.map(function(r){return r._compile(e)});if(n){var i,o=this.symbol.name;do i="p"+Math.round(1e4*Math.random());while(i in e);return e[i]=this.params,'("'+o+'" in scope ? scope["'+o+'"]('+t.join(", ")+') : math["'+o+'"]('+i+", math, scope))"}return this.symbol._compile(e)+"("+t.join(", ")+")"},t.prototype.find=function(e){var r=[];this.match(e)&&r.push(this),r=r.concat(this.symbol.find(e));for(var n=this.params,t=0,i=n.length;i>t;t++)r=r.concat(n[t].find(e));return r},t.prototype.toString=function(){return this.symbol.toString()+"("+this.params.join(", ")+")"},t.prototype.toTex=function(){return o.toParams(this)},e.exports=t},function(e,r,n){"use strict";function t(e){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!Array.isArray(e)||2!=e.length&&3!=e.length||!e.every(o))throw new TypeError('Expected an Array containing 2 or 3 Nodes as parameter "params"');this.start=e[0],this.end=e[1],this.step=e[2]}var i=n(157),o=i.isNode;t.prototype=new i,t.prototype.type="RangeNode",t.prototype._compile=function(e){return"math.range("+this.start._compile(e)+", "+this.end._compile(e)+(this.step?", "+this.step._compile(e):"")+")"},t.prototype.find=function(e){var r=[];return this.match(e)&&r.push(this),r=r.concat(this.start.find(e)),this.step&&(r=r.concat(this.step.find(e))),r=r.concat(this.end.find(e))},t.prototype.toString=function(){var e=this.start.toString();return this.step&&(e+=":"+this.step.toString()),e+=":"+this.end.toString()},t.prototype.toTex=function(){var e=this.start.toTex();return this.step&&(e+=":"+this.step.toTex()),e+=":"+this.end.toTex()},e.exports=t},function(e,r,n){"use strict";function t(e){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!u(e))throw new TypeError('String expected for parameter "name"');this.name=e}function i(e){throw new Error("Undefined symbol "+e)}var o=n(157),a=n(10),s=n(284),u=n(160).isString;t.prototype=new o,t.prototype.type="SymbolNode",t.prototype._compile=function(e){return e.undef=i,e.Unit=a,this.name in e.math?'("'+this.name+'" in scope ? scope["'+this.name+'"] : math["'+this.name+'"])':'("'+this.name+'" in scope ? scope["'+this.name+'"] : '+(a.isValuelessUnit(this.name)?'new Unit(null, "'+this.name+'")':'undef("'+this.name+'")')+")"},t.prototype.toString=function(){return this.name},t.prototype.toTex=function(){return s.toSymbol(this.name)},e.exports=t},function(e,r,n){"use strict";function t(e,r){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof o))throw new TypeError('Expected IndexNode for parameter "index"');if(!(r instanceof i))throw new TypeError('Expected Node for parameter "expr"');this.index=e,this.expr=r}var i=n(157),o=n(151);t.prototype=new i,t.prototype.type="UpdateNode",t.prototype._compile=function(e){return'scope["'+this.index.objectName()+'"] = '+this.index.compileSubset(e,this.expr._compile(e))},t.prototype.find=function(e){var r=[];return this.match(e)&&r.push(this),r=r.concat(this.index.find(e)),r=r.concat(this.expr.find(e))},t.prototype.toString=function(){return this.index.toString()+" = "+this.expr.toString()},t.prototype.toTex=function(){return this.index.toTex()+" = "+this.expr.toTex()},e.exports=t},function(e,r,n){"use strict";function t(){if(!(this instanceof t))throw new SyntaxError("Constructor must be called with the new operator")}function i(e){for(var r in e)if(e.hasOwnProperty(r)&&r in a)throw new Error('Scope contains an illegal symbol, "'+r+'" is a reserved keyword')}function o(e){var r=Object.create(e);for(var n in e)if(e.hasOwnProperty(n)){var t=e[n],i=t&&t.transform;i&&(r[n]=i)}return r}var a=n(283);t.prototype.eval=function(){throw new Error("Node.eval is deprecated. Use Node.compile(math).eval([scope]) instead.")},t.prototype.type="Node",t.prototype.compile=function(e){if(!(e instanceof Object))throw new TypeError("Object expected for parameter math");var r={math:o(e),_validateScope:i},n=this._compile(r),t=Object.keys(r).map(function(e){return" var "+e+' = defs["'+e+'"];'}),a=t.join(" ")+'return { "eval": function (scope) { if (scope) _validateScope(scope); scope = scope || {}; return '+n+"; }};",s=new Function("defs",a);return s(r)},t.prototype._compile=function(){throw new Error("Cannot compile a Node interface")},t.prototype.find=function(e){return this.match(e)?[this]:[]},t.prototype.match=function(e){var r=!0;if(e){!e.type||this instanceof e.type||(r=!1);var n=e.properties;if(r&&n)for(var t in n)if(n.hasOwnProperty(t)&&this[t]!==n[t]){r=!1;break}}return r},t.prototype.toString=function(){return""},t.prototype.toTex=function(){return""},t.isNode=function(e){return e instanceof t},e.exports=t},function(e,r,n){var t=(n(141),n(142));r.transform=function(e){return e instanceof t?new t(e.index+1,e.min+1,e.max+1):e}},function(e,r){"use strict";r.isBoolean=function(e){return e instanceof Boolean||"boolean"==typeof e}},function(e,r,n){"use strict";function t(e,n){if(Array.isArray(e)){for(var i="[",o=e.length,a=0;o>a;a++)0!=a&&(i+=", "),i+=t(e[a],n);return i+="]"}return r.format(e,n)}var i=n(4),o=n(136),a=n(139);r.isString=function(e){return e instanceof String||"string"==typeof e},r.endsWith=function(e,r){var n=e.length-r.length,t=e.length;return e.substring(n,t)===r},r.format=function(e,n){return i.isNumber(e)?i.format(e,n):e instanceof a?o.format(e,n):Array.isArray(e)?t(e,n):r.isString(e)?'"'+e+'"':"function"==typeof e?e.syntax?e.syntax+"":"function":e instanceof Object?"function"==typeof e.format?e.format(n):e.toString():String(e)}},function(e){e.exports={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]}},function(e){e.exports={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]}},function(e){e.exports={name:"i",category:"Constants",syntax:["i"],description:"Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.",examples:["i","i * i","sqrt(-1)"],seealso:[]}},function(e){e.exports={name:"Infinity",category:"Constants",syntax:["Infinity"],description:"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.",examples:["Infinity","1 / 0"],seealso:[]}},function(e){e.exports={name:"LN2",category:"Constants",syntax:["LN2"],description:"Returns the natural logarithm of 2, approximately equal to 0.693",examples:["LN2","log(2)"],seealso:[]}},function(e){e.exports={name:"LN10",category:"Constants",syntax:["LN10"],description:"Returns the natural logarithm of 10, approximately equal to 2.302",examples:["LN10","log(10)"],seealso:[]}},function(e){e.exports={name:"LOG2E",category:"Constants",syntax:["LOG2E"],description:"Returns the base-2 logarithm of E, approximately equal to 1.442",examples:["LOG2E","log(e, 2)"],seealso:[]}},function(e){e.exports={name:"LOG10E",category:"Constants",syntax:["LOG10E"],description:"Returns the base-10 logarithm of E, approximately equal to 0.434",examples:["LOG10E","log(e, 10)"],seealso:[]}},function(e){e.exports={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]}},function(e){e.exports={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]}},function(e){e.exports={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]}},function(e){e.exports={name:"phi",category:"Constants",syntax:["phi"],description:"Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...",examples:["tau"],seealso:[]}},function(e){e.exports={name:"SQRT1_2",category:"Constants",syntax:["SQRT1_2"],description:"Returns the square root of 1/2, approximately equal to 0.707",examples:["SQRT1_2","sqrt(1/2)"],seealso:[]}},function(e){e.exports={name:"SQRT2",category:"Constants",syntax:["SQRT2"],description:"Returns the square root of 2, approximately equal to 1.414",examples:["SQRT2","sqrt(2)"],seealso:[]}},function(e){e.exports={name:"tau",category:"Constants",syntax:["tau"],description:"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.",examples:["tau","2 * pi"],seealso:["pi"]}},function(e){e.exports={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]}},function(e){e.exports={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]}},function(e,r,n){"use strict";e.exports=function(e){function r(r){if(!s.hasOwnProperty(r))throw new Error("Unknown distribution "+r);var n=Array.prototype.slice.call(arguments,1),o=s[r].apply(this,n);return function(r){var n={random:function(r,n,i){var s,f,c;if(arguments.length>3)throw new e.error.ArgumentsError("random",arguments.length,0,3);if(1===arguments.length?a(r)?s=r:c=r:2===arguments.length?a(r)?(s=r,c=n):(f=r,c=n):(s=r,f=n,c=i),void 0===c&&(c=1),void 0===f&&(f=0),void 0!==s){var l=u(s.valueOf(),f,c,o);return s instanceof t?new t(l):l}return o(f,c)},randomInt:function(r,n,i){var o,f,c;if(arguments.length>3||arguments.length<1)throw new e.error.ArgumentsError("randomInt",arguments.length,1,3);if(1===arguments.length?a(r)?o=r:c=r:2===arguments.length?a(r)?(o=r,c=n):(f=r,c=n):(o=r,f=n,c=i),void 0===f&&(f=0),void 0!==o){var l=u(o.valueOf(),f,c,s);return o instanceof t?new t(l):l}return s(f,c)},pickRandom:function(r){if(1!==arguments.length)throw new e.error.ArgumentsError("pickRandom",arguments.length,1);if(r instanceof t)r=r.valueOf();else if(!Array.isArray(r))throw new e.error.UnsupportedTypeError("pickRandom",e["typeof"](r));if(i.size(r).length>1)throw new Error("Only one dimensional vectors supported");return r[Math.floor(Math.random()*r.length)]}},o=function(e,n){return e+r()*(n-e)},s=function(e,n){return Math.floor(e+r()*(n-e))},u=function(e,r,n,t){var i,o,a=[];if(e=e.slice(0),e.length>1)for(o=0,i=e.shift();i>o;o++)a.push(u(e,r,n,t));else for(o=0,i=e.shift();i>o;o++)a.push(t(r,n));return a};return n}(o)}var t=n(9),i=n(137),o=n(13),a=o.isCollection,s={uniform:function(){return Math.random},normal:function(){return function(){for(var e,r,n=-1;0>n||n>1;)e=Math.random(),r=Math.random(),n=1/6*Math.pow(-2*Math.log(e),.5)*Math.cos(2*Math.PI*r)+.5;return n}}};return r}},function(e,r,n){function t(e){return n(i(e))}function i(e){return o[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var o={"./clone":127,"./clone.js":127,"./filter":128,"./filter.js":128,"./forEach":135,"./forEach.js":135,"./format":129,"./format.js":129,"./import":130,"./import.js":130,"./map":131,"./map.js":131,"./print":132,"./print.js":132,"./sort":133,"./sort.js":133,"./typeof":134,"./typeof.js":134};t.keys=function(){return Object.keys(o)},t.resolve=i,e.exports=t},function(e,r){"use strict";r.type=function(e){var r=typeof e;if("object"===r){if(null===e)return"null";if(e instanceof Boolean)return"boolean";if(e instanceof Number)return"number";if(e instanceof String)return"string";if(Array.isArray(e))return"array";if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return r}},function(e){e.exports={name:"abs",category:"Arithmetic",syntax:["abs(x)"],description:"Compute the absolute value.",examples:["abs(3.5)","abs(-4.2)"],seealso:["sign"]}},function(e){e.exports={name:"add",category:"Operators",syntax:["x + y","add(x, y)"],description:"Add two values.",examples:["a = 2.1 + 3.6","a - 3.6","3 + 2i",'"hello" + " world"',"3 cm + 2 inch"],seealso:["subtract"]}},function(e){e.exports={name:"ceil",category:"Arithmetic",syntax:["ceil(x)"],description:"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.",examples:["ceil(3.2)","ceil(3.8)","ceil(-4.2)"],seealso:["floor","fix","round"]}},function(e){e.exports={name:"cube",category:"Arithmetic",syntax:["cube(x)"],description:"Compute the cube of a value. The cube of x is x * x * x.",examples:["cube(2)","2^3","2 * 2 * 2"],seealso:["multiply","square","pow"]}},function(e){e.exports={name:"divide",category:"Operators",syntax:["x / y","divide(x, y)"],description:"Divide two values.",examples:["a = 2 / 3","a * 3","4.5 / 2","3 + 4 / 2","(3 + 4) / 2","18 km / 4.5"],seealso:["multiply"]}},function(e){e.exports={name:"dotDivide",category:"Operators",syntax:["x ./ y","dotDivide(x, y)"],description:"Divide two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a ./ b"],seealso:["multiply","dotMultiply","divide"]}},function(e){e.exports={name:"dotMultiply",category:"Operators",syntax:["x .* y","dotMultiply(x, y)"],description:"Multiply two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a .* b"],seealso:["multiply","divide","dotDivide"]}},function(e){e.exports={name:"dotpow",category:"Operators",syntax:["x .^ y","dotpow(x, y)"],description:"Calculates the power of x to y element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","a .^ 2"],seealso:["pow"]}},function(e){e.exports={name:"exp",category:"Arithmetic",syntax:["exp(x)"],description:"Calculate the exponent of a value.",examples:["exp(1.3)","e ^ 1.3","log(exp(1.3))","x = 2.4","(exp(i*x) == cos(x) + i*sin(x)) # Euler's formula"],seealso:["pow","log"]}},function(e){e.exports={name:"fix",category:"Arithmetic",syntax:["fix(x)"],description:"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.",examples:["fix(3.2)","fix(3.8)","fix(-4.2)","fix(-4.8)"],seealso:["ceil","floor","round"]}},function(e){e.exports={name:"floor",category:"Arithmetic",syntax:["floor(x)"],description:"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.",examples:["floor(3.2)","floor(3.8)","floor(-4.2)"],seealso:["ceil","fix","round"]}},function(e){e.exports={name:"gcd",category:"Arithmetic",syntax:["gcd(a, b)","gcd(a, b, c, ...)"],description:"Compute the greatest common divisor.",examples:["gcd(8, 12)","gcd(-4, 6)","gcd(25, 15, -10)"],seealso:["lcm","xgcd"]}},function(e){e.exports={name:"lcm",category:"Arithmetic",syntax:["lcm(x, y)"],description:"Compute the least common multiple.",examples:["lcm(4, 6)","lcm(6, 21)","lcm(6, 21, 5)"],seealso:["gcd"]}},function(e){e.exports={name:"log",category:"Arithmetic",syntax:["log(x)","log(x, base)"],description:"Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).",examples:["log(3.5)","a = log(2.4)","exp(a)","10 ^ 4","log(10000, 10)","log(10000) / log(10)","b = log(1024, 2)","2 ^ b"],seealso:["exp","log10"]}},function(e){e.exports={name:"log10",category:"Arithmetic",syntax:["log10(x)"],description:"Compute the 10-base logarithm of a value.",examples:["log10(0.00001)","log10(10000)","10 ^ 4","log(10000) / log(10)","log(10000, 10)"],seealso:["exp","log"]}},function(e){e.exports={name:"mod",category:"Operators",syntax:["x % y","x mod y","mod(x, y)"],description:"Calculates the modulus, the remainder of an integer division.",examples:["7 % 3","11 % 2","10 mod 4","function isOdd(x) = x % 2","isOdd(2)","isOdd(3)"],seealso:["divide"]}},function(e){e.exports={name:"multiply",category:"Operators",syntax:["x * y","multiply(x, y)"],description:"multiply two values.",examples:["a = 2.1 * 3.4","a / 3.4","2 * 3 + 4","2 * (3 + 4)","3 * 2.1 km"],seealso:["divide"]}},function(e){e.exports={name:"norm",category:"Arithmetic",syntax:["norm(x)","norm(x, p)"],description:"Calculate the norm of a number, vector or matrix.",examples:["abs(-3.5)","norm(-3.5)","norm(3 - 4i))","norm([1, 2, -3], Infinity)","norm([1, 2, -3], -Infinity)","norm([3, 4], 2)","norm([[1, 2], [3, 4]], 1)","norm([[1, 2], [3, 4]], 'inf')","norm([[1, 2], [3, 4]], 'fro')"]}},function(e){e.exports={name:"pow",category:"Operators",syntax:["x ^ y","pow(x, y)"],description:"Calculates the power of x to y, x^y.",examples:["2^3 = 8","2*2*2","1 + e ^ (pi * i)"],seealso:["multiply"]}},function(e){e.exports={name:"round",category:"Arithmetic",syntax:["round(x)","round(x, n)"],description:"round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.",examples:["round(3.2)","round(3.8)","round(-4.2)","round(-4.8)","round(pi, 3)","round(123.45678, 2)"],seealso:["ceil","floor","fix"]}},function(e){e.exports={name:"sign",category:"Arithmetic",syntax:["sign(x)"],description:"Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]}},function(e){e.exports={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","multiply"]}},function(e){e.exports={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]}},function(e){e.exports={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]}},function(e){e.exports={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]}},function(e){e.exports={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]}},function(e){e.exports={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]}},function(e){e.exports={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq"]}},function(e){e.exports={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["[1,3,4] == [1,3,4]","[1,3,4] == [1,3]"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]}},function(e){e.exports={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e){e.exports={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e){e.exports={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 > 1+1","2 >= 1+1","a = 3.2","b = 6-2.8","(a > b)"],seealso:["equal","unequal","smallerEq","smaller","largerEq","compare"]}},function(e){e.exports={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]}},function(e){e.exports={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 1+1","2 <= 1+1","a = 3.2","b = 6-2.8","(a < b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]}},function(e){e.exports={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e){e.exports={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]}},function(e){e.exports={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]}},function(e){e.exports={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]}},function(e){e.exports={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]}},function(e){e.exports={name:"bignumber",category:"Type",syntax:["bignumber(x)"],description:"Create a big number from a number or string.",examples:["0.1 + 0.2","bignumber(0.1) + bignumber(0.2)",'bignumber("7.2")','bignumber("7.2e500")',"bignumber([0.1, 0.2, 0.3])"],seealso:["boolean","complex","index","matrix","string","unit"]}},function(e){e.exports={name:"boolean",category:"Type",syntax:["x","boolean(x)"],description:"Convert a string or number into a boolean.",examples:["boolean(0)","boolean(1)","boolean(3)",'boolean("true")','boolean("false")',"boolean([1, 0, 1, 1])"],seealso:["bignumber","complex","index","matrix","number","string","unit"]}},function(e){e.exports={name:"complex",category:"Type",syntax:["complex()","complex(re, im)","complex(string)"],description:"Create a complex number.",examples:["complex()","complex(2, 3)",'complex("7 - 2i")'],seealso:["bignumber","boolean","index","matrix","number","string","unit"]}},function(e){e.exports={name:"index",category:"Type",syntax:["[start]","[start:end]","[start:step:end]","[start1, start 2, ...]","[start1:end1, start2:end2, ...]","[start1:step1:end1, start2:step2:end2, ...]"],description:"Create an index to get or replace a subset of a matrix",examples:["[]","[1, 2, 3]","A = [1, 2, 3; 4, 5, 6]","A[1, :]","A[1, 2] = 50","A[0:2, 0:2] = ones(2, 2)"],seealso:["bignumber","boolean","complex","matrix,","number","range","string","unit"]}},function(e){e.exports={name:"matrix",category:"Type",syntax:["[]","[a1, b1, ...; a2, b2, ...]","matrix()","matrix([...])"],description:"Create a matrix.",examples:["[]","[1, 2, 3]","[1, 2, 3; 4, 5, 6]","matrix()","matrix([3, 4])"],seealso:["bignumber","boolean","complex","index","number","string","unit"]} +},function(e){e.exports={name:"number",category:"Type",syntax:["x","number(x)"],description:"Create a number or convert a string or boolean into a number.",examples:["2","2e3","4.05","number(2)",'number("7.2")',"number(true)","number([true, false, true, true])",'number("52cm", "m")'],seealso:["bignumber","boolean","complex","index","matrix","string","unit"]}},function(e){e.exports={name:"string",category:"Type",syntax:['"text"',"string(x)"],description:"Create a string or convert a value to a string",examples:['"Hello World!"',"string(4.2)","string(3 + 2i)"],seealso:["bignumber","boolean","complex","index","matrix","number","unit"]}},function(e){e.exports={name:"unit",category:"Type",syntax:["value unit","unit(value, unit)","unit(string)"],description:"Create a unit.",examples:["5.5 mm","3 inch",'unit(7.1, "kilogram")','unit("23 deg")'],seealso:["bignumber","boolean","complex","index","matrix","number","string"]}},function(e){e.exports={name:"eval",category:"Expression",syntax:["eval(expression)","eval([expr1, expr2, expr3, ...])"],description:"Evaluate an expression or an array with expressions.",examples:['eval("2 + 3")','eval("sqrt(" + 4 + ")")'],seealso:[]}},function(e){e.exports={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]}},function(e){e.exports={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"eye",category:"Matrix",syntax:["eye(n)","eye(m, n)","eye([m, n])","eye"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["eye(3)","eye(3, 5)","a = [1, 2, 3; 4, 5, 6]","eye(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]}},function(e){e.exports={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","eye","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])","ones"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","eye","inv","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","eye","inv","ones","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze"]}},function(e){e.exports={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","det","diag","eye","inv","ones","range","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","eye","inv","ones","range","size","subset","transpose","zeros"]}},function(e){e.exports={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of a matrix or string. Indexes are one-based. Both the ranges lower-bound and upper-bound are included.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","transpose","zeros"]}},function(e){e.exports={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","zeros"]}},function(e){e.exports={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])","zeros"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","transpose"]}},function(e){e.exports={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["permutations","factorial"]}},function(e){e.exports={name:"factorial",category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5*4*3*2*1","3!"],seealso:["combinations","permutations"]}},function(e){e.exports={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","factorial"]}},function(e){e.exports={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])"],seealso:["distribution","random","randomInt"]}},function(e){e.exports={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["distribution","pickRandom","randomInt"]}},function(e){e.exports={name:"randInt",category:"Probability",syntax:["randInt()","randInt(max)","randInt(min, max)","randInt(size)","randInt(size, max)","randInt(size, min, max)"],description:"Return a random integer number",examples:["randInt()","randInt(10, 20)","randInt([2, 3], 10)"],seealso:["distribution","pickRandom","random"]}},function(e){e.exports={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dim)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3], 0)","max([2, 5; 4, 3], 1)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","var"]}},function(e){e.exports={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dim)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3], 0)","mean([2, 5; 4, 3], 1)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","var"]}},function(e){e.exports={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","var"]}},function(e){e.exports={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dim)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3], 0)","min([2, 5; 4, 3], 1)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","var"]}},function(e){e.exports={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","var"]}},function(e){e.exports={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","sum","var"]}},function(e){e.exports={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","var"]}},function(e){e.exports={name:"var",category:"Statistics",syntax:["var(a, b, c, ...)","var(A)","var(A, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["var(2, 4, 6)","var([2, 4, 6, 8])",'var([2, 4, 6, 8], "uncorrected")','var([2, 4, 6, 8], "biased")',"var([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]}},function(e){e.exports={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]}},function(e){e.exports={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(2.3))"],seealso:["sin","acos","atan"]}},function(e){e.exports={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(2.3))"],seealso:["tan","acos","asin"]}},function(e){e.exports={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]}},function(e){e.exports={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]}},function(e){e.exports={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]}},function(e){e.exports={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]}},function(e){e.exports={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]}},function(e){e.exports={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]}},function(e){e.exports={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]}},function(e){e.exports={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]}},function(e){e.exports={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]}},function(e){e.exports={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]}},function(e){e.exports={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]}},function(e){e.exports={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]}},function(e){e.exports={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]}},function(e){e.exports={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]}},function(e){e.exports={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]}},function(e){e.exports={name:"map",category:"Utils",syntax:["map(x, callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.",examples:["map([1, 2, 3], function(val) { return value * value })"],seealso:["filter","forEach"]}},function(e){e.exports={name:"filter",category:"Utils",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]}},function(e){e.exports={name:"forEach",category:"Utils",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["forEach([1, 2, 3], function(val) { console.log(val) })"],seealso:["map","sort","filter"]}},function(e){e.exports={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]}},function(e){e.exports={name:"import",category:"Utils",syntax:["import(string)"],description:"Import functions from a file.",examples:['import("numbers")','import("./mylib.js")'],seealso:[]}},function(e){e.exports={name:"sort",category:"Utils",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc" or "desc", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"])',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)'],seealso:["map","filter","forEach"]}},function(e){e.exports={name:"typeof",category:"Utils",syntax:["typeof(x)"],description:"Get the type of a variable.",examples:["typeof(3.5)","typeof(2 - 4i)","typeof(45 deg)",'typeof("hello world")'],seealso:[]}},function(e){"use strict";e.exports={end:!0}},function(e,r,n){"use strict";function t(){for(var e,r=Array.prototype.slice.call(arguments),n=0,t=r.length;t>n;n++){e=r[n];for(var i in e)e.hasOwnProperty(i)&&(x[i]=e[i])}}function i(e,r){return"undefined"!=typeof e[r]}function o(e){return function(r){return i(e,r)}}function a(e){return function(n){if("boolean"==typeof e[n])n=e[n]===!0?"\\"+n:"\\mathrm{"+n+"}";else if("string"==typeof e[n])n=e[n];else if("string"==typeof n){var t=n.indexOf("_");-1!==t&&(n=r.toSymbol(n.substring(0,t))+"_{"+r.toSymbol(n.substring(t+1))+"}")}return n}}var s=n(145),u=n(152),f={Alpha:"A",alpha:!0,Beta:"B",beta:!0,Gamma:!0,gamma:!0,Delta:!0,delta:!0,Epsilon:"E",epsilon:!0,varepsilon:!0,Zeta:"Z",zeta:!0,Eta:"H",eta:!0,Theta:!0,theta:!0,vartheta:!0,Iota:"I",iota:!0,Kappa:"K",kappa:!0,varkappa:!0,Lambda:!0,lambda:!0,Mu:"M",mu:!0,Nu:"N",nu:!0,Xi:!0,xi:!0,Omicron:"O",omicron:!0,Pi:!0,pi:!0,varpi:!0,Rho:"P",rho:!0,varrho:!0,Sigma:!0,sigma:!0,varsigma:!0,Tau:"T",tau:!0,Upsilon:!0,upsilon:!0,Phi:!0,phi:!0,varphi:!0,Chi:"X",chi:!0,Psi:!0,psi:!0,Omega:!0,omega:!0},c={dots:!0,ldots:!0,cdots:!0,vdots:!0,ddots:!0,idots:!0},l={"true":"\\mathrm{True}","false":"\\mathrm{False}"},p={inf:"\\infty",Inf:"\\infty",infinity:"\\infty",Infinity:"\\infty",oo:"\\infty",lim:!0,undefined:"\\mathbf{?}"},m={acos:"\\cos^{-1}",arccos:"\\cos^{-1}",cos:!0,csc:!0,csch:!1,exp:!0,ker:!0,limsup:!0,min:!0,sinh:!0,asin:"\\sin^{-1}",arcsin:"\\sin^{-1}",cosh:!0,deg:!0,gcd:!0,lg:!0,ln:!0,Pr:!0,sup:!0,atan:"\\tan^{-1}",atan2:"\\tan2^{-1}",arctan:"\\tan^{-1}",cot:!0,det:!0,hom:!0,log:!0,log10:"\\log_{10}",sec:!0,sech:!1,tan:!0,arg:!0,coth:!0,dim:!0,inf:!0,max:!0,sin:!0,tanh:!0,fix:!1,lcm:!1,sign:!1,xgcd:!1,unaryMinus:!1,unaryPlus:!1,complex:!1,conj:!1,im:!1,re:!1,diag:!1,resize:!1,size:!1,squeeze:!1,subset:!1,index:!1,ones:!1,zeros:!1,range:!1,random:!1,mean:"\\mu",median:!1,prod:!1,std:"\\sigma","var":"\\sigma^2"},h={sqrt:!0,inv:!0,"int":"\\int",Int:"\\int",integrate:"\\int",eigenvalues:"\\lambda",liminf:!0,lim:!0,exp:"e^",sum:!0,eye:"\\mathbf{I}"},g={"<=":"\\leq",">=":"\\geq","!=":"\\neq","in":!0,"*":"\\cdot","/":"\\frac",mod:"\\bmod",to:"\\rightarrow"},d={deg:"^{\\circ}"},x={};t(m,h,f,c,l,p),r.isSymbol=o(x),r.toSymbol=a(x),r.isFunction=o(m),r.toFunction=a(m),r.isCurlyFunction=o(h),r.toCurlyFunction=a(h),r.isOperator=o(g),r.toOperator=a(g),r.isUnit=o(d),r.toUnit=function(){var e=a(d);return function(n,t){return r.isUnit(n)?e(n):(t?"":"\\,")+"\\mathrm{"+n+"}"}}(),r.addBraces=function(e,r,n){if(null===r)return e;var t=["",""];switch(n=n||"normal","undefined"==typeof r||r===!1?t=["{","}"]:r===!0?(t=["(",")"],n="lr"):t=Array.isArray(r)&&2===r.length?r:[r,r],n){case"normal":case!1:return t[0]+e+t[1];case"lr":return"\\left"+t[0]+"{"+e+"}\\right"+t[1];case"be":return"\\begin{"+t[0]+"}"+e+"\\end{"+t[1]+"}"}return t[0]+e+t[1]},r.toParams=function(e){var n=e.symbol,t=e.params,i=n.toTex(),o=null,a=null,f=!1,c=!1,l="",p="",m=null;switch(n.name){case"add":m="+";break;case"subtract":m="-";break;case"larger":m=">";break;case"largerEq":m=">=";break;case"smaller":m="<";break;case"smallerEq":m="<=";break;case"unequal":m="!=";break;case"equal":m="=";break;case"mod":m="mod";break;case"multiply":m="*";break;case"pow":m="^";break;case"concat":m="||";break;case"factorial":m="!";break;case"permutations":if(1!==t.length){var h=t[0].toTex(),g=t[1].toTex();return"\\frac{"+h+"!}{\\left("+h+" - "+g+"\\right)!}"}m="!";break;case"combinations":m="\\choose";break;case"abs":a="|",f="lr";break;case"norm":if(a="\\|",f="lr",2===t.length){var d=t[1].toTex();"\\text{inf}"===d?d="\\infty":"\\text{-inf}"===d?d="{- \\infty}":"\\text{fro}"===d&&(d="F"),p="_{"+d+"}",t=[t[0]]}break;case"ceil":a=["\\lceil","\\rceil"],f="lr";break;case"floor":a=["\\lfloor","\\rfloor"],f="lr";break;case"round":a=["\\lfloor","\\rceil"],f="lr",2===t.length&&(p="_"+r.addBraces(t[1].toTex()),t=[t[0]]);break;case"inv":p="^{-1}";break;case"transpose":p="^{T}",a=!1;break;case"log":var x="e";2===t.length&&(x=t[1].toTex(),i="\\log_{"+x+"}",t=[t[0]]),"e"===x&&(i="\\ln"),c=!0;break;case"square":p="^{2}";break;case"cube":p="^{3}";break;case"eye":c=!0,a=!1,i+="_";break;case"det":if(e.params[0]instanceof s)return e.params[0].toTex("vmatrix");a="vmatrix",f="be";break;default:c=!0}return null!==m?(a="+"===m||"-"===m,o=new u(m,n.name,t).toTex()):m=", ",null!==a||r.isCurlyFunction(n.name)||(a=!0),o=o||t.map(function(e){return"{"+e.toTex()+"}"}).join(m),l+(c?i:"")+r.addBraces(o,a,f)+p}}])}); //# sourceMappingURL=math.map \ No newline at end of file diff --git a/docs/reference/functions/alphabetical.md b/docs/reference/functions/alphabetical.md index 6435d8e57..cfcf04ef0 100644 --- a/docs/reference/functions/alphabetical.md +++ b/docs/reference/functions/alphabetical.md @@ -37,6 +37,7 @@ - [exp(x)](exp.md) - [eye(n)](eye.md) - [factorial(n)](factorial.md) +- [filter(x, test)](filter.md) - [fix(x)](fix.md) - [flatten(x)](flatten.md) - [floor(x)](floor.md) diff --git a/docs/reference/functions/categorical.md b/docs/reference/functions/categorical.md index 5a60a8fd7..c65eeba9c 100644 --- a/docs/reference/functions/categorical.md +++ b/docs/reference/functions/categorical.md @@ -132,6 +132,7 @@ ## utils - [clone(x)](clone.md) +- [filter(x, test)](filter.md) - [forEach(x, callback)](forEach.md) - [format(value [, precision])](format.md) - [import(filename | object, override)](import.md) diff --git a/docs/reference/functions/forEach.md b/docs/reference/functions/forEach.md index e1f42f011..a097bb4f2 100644 --- a/docs/reference/functions/forEach.md +++ b/docs/reference/functions/forEach.md @@ -26,6 +26,11 @@ math.forEach([1, 2, 3], function(value) { ``` +## See also + +[filter](filter.md), +[map](map.md), +[sort](sort.md) diff --git a/docs/reference/functions/map.md b/docs/reference/functions/map.md index 3cf66f2a1..88e3aaf30 100644 --- a/docs/reference/functions/map.md +++ b/docs/reference/functions/map.md @@ -33,6 +33,11 @@ math.map([1, 2, 3], function(value) { ``` +## See also + +[filter](filter.md), +[forEach](forEach.md), +[sort](sort.md) diff --git a/lib/expression/docs/function/utils/filter.js b/lib/expression/docs/function/utils/filter.js new file mode 100644 index 000000000..f36c0bba0 --- /dev/null +++ b/lib/expression/docs/function/utils/filter.js @@ -0,0 +1,14 @@ +module.exports = { + 'name': 'filter', + 'category': 'Utils', + 'syntax': [ + 'filter(x, test)' + ], + 'description': 'Filter items in a matrix.', + 'examples': [ + 'isPositive(x) = x > 0', + 'filter([6, -2, -1, 4, 3], isPositive)', + 'filter([6, -2, 0, 1, 0], x != 0)' + ], + 'seealso': ['sort', 'map', 'forEach'] +}; diff --git a/lib/expression/docs/function/utils/forEach.js b/lib/expression/docs/function/utils/forEach.js index 217b5069b..df9d44720 100644 --- a/lib/expression/docs/function/utils/forEach.js +++ b/lib/expression/docs/function/utils/forEach.js @@ -8,5 +8,5 @@ module.exports = { 'examples': [ 'forEach([1, 2, 3], function(val) { console.log(val) })' ], - 'seealso': ['unit'] + 'seealso': ['map', 'sort', 'filter'] }; diff --git a/lib/expression/docs/function/utils/map.js b/lib/expression/docs/function/utils/map.js index 2d0456d47..3fe0cf355 100644 --- a/lib/expression/docs/function/utils/map.js +++ b/lib/expression/docs/function/utils/map.js @@ -8,5 +8,5 @@ module.exports = { 'examples': [ 'map([1, 2, 3], function(val) { return value * value })' ], - 'seealso': [] + 'seealso': ['filter', 'forEach'] }; diff --git a/lib/expression/docs/function/utils/sort.js b/lib/expression/docs/function/utils/sort.js index 5727dfc58..56e9e6378 100644 --- a/lib/expression/docs/function/utils/sort.js +++ b/lib/expression/docs/function/utils/sort.js @@ -8,7 +8,9 @@ module.exports = { 'description': 'Sort the items in a matrix. Compare can be a string "asc" or "desc", or a custom sort function.', 'examples': [ 'sort([5, 10, 1])', - 'sort(["C", "B", "A", "D"])' + 'sort(["C", "B", "A", "D"])', + 'sortByLength(a, b) = size(a)[1] - size(b)[1]', + 'sort(["Langdon", "Tom", "Sara"], sortByLength)' ], - 'seealso': [] + 'seealso': ['map', 'filter', 'forEach'] }; diff --git a/lib/expression/docs/index.js b/lib/expression/docs/index.js index 6bc9986a1..b918b114b 100644 --- a/lib/expression/docs/index.js +++ b/lib/expression/docs/index.js @@ -137,6 +137,7 @@ exports.to = require('./function/units/to'); // functions - utils exports.clone = require('./function/utils/clone'); exports.map = require('./function/utils/map'); +exports.filter = require('./function/utils/filter'); exports.forEach = require('./function/utils/forEach'); exports.format = require('./function/utils/format'); // exports.print = require('./function/utils/print'); // TODO: add documentation for print as soon as the parser supports objects. diff --git a/lib/expression/transform/filter.transform.js b/lib/expression/transform/filter.transform.js new file mode 100644 index 000000000..55621ac68 --- /dev/null +++ b/lib/expression/transform/filter.transform.js @@ -0,0 +1,62 @@ +'use strict'; + +var SymbolNode = require('../../expression/node/SymbolNode'); +var isBoolean = require('../../util/boolean').isBoolean; +var argsToArray = require('../../util/array').argsToArray; +var ArgumentsError = require('../../error/ArgumentsError'); + +/** + * Attach a transform function to math.filter + * Adds a property transform containing the transform function. + * + * This transform adds support for equations as test function for math.filter, + * so you can do something like 'filter([3, -2, 5], x > 0)'. + * @param {Object} math + */ +module.exports = function (math) { + var _filter = math.filter; + + _filter.transform = function (args, math, scope) { + if (args.length !== 2) { + throw new ArgumentsError('filter', arguments.length, 2); + } + + var x = args[0].compile(math).eval(scope); + var test; + if (args[1] instanceof SymbolNode) { + // a function pointer, like filter([3, -2, 5], myTestFunction); + test = args[1].compile(math).eval(scope); + } + else { + // an equation like filter([3, -2, 5], x > 0) + + // find an undefined symbol + var _scope = scope || {}; + var symbol = args[1] + .find({ + type: SymbolNode + }) + .filter(function (symbol) { + return !(symbol.name in math) && !(symbol.name in _scope); + })[0]; + + // create a test function for this equation + var sub = Object.create(_scope); + var eq = args[1].compile(math); + if (symbol) { + var name = symbol.name; + test = function (x) { + sub[name] = x; + return eq.eval(sub); + } + } + else { + throw new Error('No undefined variable found in filter equation'); + } + } + + return _filter(x, test); + }; + + math.filter.transform.rawArgs = true; +}; diff --git a/lib/function/utils/filter.js b/lib/function/utils/filter.js new file mode 100644 index 000000000..83b48cd79 --- /dev/null +++ b/lib/function/utils/filter.js @@ -0,0 +1,75 @@ +'use strict'; + +module.exports = function (math) { + var Matrix = require('../../type/Matrix'); + + /** + * Sort the items in a matrix. + * + * Syntax: + * + * math.filter(x, test) + * + * Examples: + * + * function isPositive (x) { + * return x > 0; + * } + * math.filter([6, -2, -1, 4, 3], isPositive); // returns [6, 4, 3] + * + * math.filter(["23", "foo", "100", "55", "bar"], /[0-9]+/); // returns ["23", "100", "55"] + * + * See also: + * + * forEach, map, sort + * + * @param {Matrix | Array} x A one dimensional matrix or array to filter + * @param {Function | RegExp} test + * A function or regular expression to test items. + * When `test` is a function, it must return a boolean. + * All entries for which `test` returns true are returned. + * @return {Matrix | Array} Returns the filtered matrix. + */ + math.filter = function (x, test) { + if (arguments.length !== 2) { + throw new math.error.ArgumentsError('filter', arguments.length, 2); + } + + if (x instanceof Matrix) { + var size = x.size(); + if (size.length > 1) { + throw new Error('Only one dimensional matrices supported'); + } + return new Matrix(_filter(x.toArray(), test)); + } + else if (Array.isArray(x)) { + return _filter(x, test); + } + else { + throw new math.error.UnsupportedTypeError('filter', math['typeof'](x), math['typeof'](compare)); + } + }; + + /** + * + * @param {Array} x + * @param {function | RegExp} test + * @return {Array} Returns the filtered array + * @private + */ + function _filter(x, test) { + if (typeof test === 'function') { + return x.filter(function (entry) { + return test(entry); + }); + } + else if (test instanceof RegExp) { + return x.filter(function (entry) { + return test.test(entry); + }); + } + else { + throw new TypeError('Function or RegExp expected'); + } + } +}; \ No newline at end of file diff --git a/lib/function/utils/forEach.js b/lib/function/utils/forEach.js index 41bf33170..e9565c5d4 100644 --- a/lib/function/utils/forEach.js +++ b/lib/function/utils/forEach.js @@ -17,6 +17,10 @@ module.exports = function (math) { * }); * // outputs 1, 2, 3 * + * See also: + * + * filter, map, sort + * * @param {Matrix | Array} x The matrix to iterate on. * @param {Function} callback The callback function is invoked with three * parameters: the value of the element, the index diff --git a/lib/function/utils/map.js b/lib/function/utils/map.js index 533236eca..99e362ffe 100644 --- a/lib/function/utils/map.js +++ b/lib/function/utils/map.js @@ -18,6 +18,10 @@ module.exports = function (math) { * return value * value; * }); // returns [1, 4, 9] * + * See also: + * + * filter, forEach, sort + * * @param {Matrix | Array} x The matrix to iterate on. * @param {Function} callback The callback method is invoked with three * parameters: the value of the element, the index diff --git a/lib/function/utils/sort.js b/lib/function/utils/sort.js index 5234347a8..401a47a36 100644 --- a/lib/function/utils/sort.js +++ b/lib/function/utils/sort.js @@ -21,7 +21,11 @@ module.exports = function (math) { * } * math.sort(['Langdon', 'Tom', 'Sara'], sortByLength); // returns ['Tom', 'Sara', 'Langdon'] * - * @param {Matrix | Array} x A one dimensional matrix or array to sot + * See also: + * + * filter, forEach, map + * + * @param {Matrix | Array} x A one dimensional matrix or array to sort * @param {Function | 'asc' | 'desc'} [compare='asc'] * An optional comparator function. The function is called as * `compare(a, b)`, and must return 1 when a > b, -1 when a < b, diff --git a/lib/math.js b/lib/math.js index 0e190c560..348d373cb 100644 --- a/lib/math.js +++ b/lib/math.js @@ -292,6 +292,7 @@ function create (config) { // functions - utils require('./function/utils/clone')(math, _config); + require('./function/utils/filter')(math, _config); require('./function/utils/format')(math, _config); require('./function/utils/import')(math, _config); require('./function/utils/map')(math, _config); @@ -310,6 +311,7 @@ function create (config) { // attach transform functions (for converting one-based indices to zero-based) require('./expression/transform/concat.transform')(math, _config); + require('./expression/transform/filter.transform')(math, _config); require('./expression/transform/forEach.transform')(math, _config); require('./expression/transform/index.transform')(math, _config); require('./expression/transform/map.transform')(math, _config); diff --git a/lib/version.js b/lib/version.js index 6248bf056..3c9e621cc 100644 --- a/lib/version.js +++ b/lib/version.js @@ -1,3 +1,3 @@ -module.exports = '0.27.1-SNAPSHOT'; +module.exports = '1.0.0-SNAPSHOT'; // Note: This file is automatically generated when building math.js. // Changes made in this file will be overwritten. diff --git a/package.json b/package.json index ebb9fe6b0..d3a1f4031 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mathjs", - "version": "0.27.1-SNAPSHOT", + "version": "1.0.0-SNAPSHOT", "description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser and offers an integrated solution to work with numbers, big numbers, complex numbers, units, and matrices.", "author": "Jos de Jong (https://github.com/josdejong)", "contributors": [ diff --git a/test/expression/parse.test.js b/test/expression/parse.test.js index bdee63d24..7892b0a59 100644 --- a/test/expression/parse.test.js +++ b/test/expression/parse.test.js @@ -1084,6 +1084,26 @@ describe('parse', function() { approx.deepEqual(parseAndEval('to(5.08 cm * 1000, inch)'), math.unit(2000, 'inch').to('inch')); }); + + it('should evaluate function "sort" with a custom sort function', function () { + var scope = {}; + parseAndEval('sortByLength(a, b) = size(a)[1] - size(b)[1]', scope); + assert.deepEqual(parseAndEval('sort(["Langdon", "Tom", "Sara"], sortByLength)', scope), + math.matrix(["Tom", "Sara", "Langdon"])); + }); + + it('should evaluate function "filter" with a custom test function', function () { + var scope = {}; + parseAndEval('isPositive(x) = x > 0', scope); + assert.deepEqual(parseAndEval('filter([6, -2, -1, 4, 3], isPositive)', scope), + math.matrix([6, 4, 3])); + }); + + it('should evaluate function "filter" with a custom test equation', function () { + assert.deepEqual(parseAndEval('filter([6, -2, -1, 4, 3], x > 0)'), + math.matrix([6, 4, 3])); + }); + }); }); diff --git a/test/function/utils/filter.test.js b/test/function/utils/filter.test.js new file mode 100644 index 000000000..a3968eb70 --- /dev/null +++ b/test/function/utils/filter.test.js @@ -0,0 +1,49 @@ +var assert = require('assert'), + error = require('../../../lib/error/index'), + math = require('../../../index'); + +describe('filter', function() { + + it('should filter an array with a filter function', function() { + function isPositive (x) { + return x > 0; + } + assert.deepEqual(math.filter([6, -2, -1, 4, 3], isPositive), [6, 4, 3]); + }); + + it('should filter a Matrix with a filter function', function() { + function isPositive (x) { + return x > 0; + } + assert.deepEqual(math.filter(math.matrix([6, -2, -1, 4, 3]), isPositive), math.matrix([6, 4, 3])); + }); + + it('should filter an array with a regexp', function() { + assert.deepEqual(math.filter(["23", "foo", "100", "55", "bar"], /[0-9]+/), ["23", "100", "55"]); + }); + + + it('should filter a Matrix with a regexp', function() { + assert.deepEqual(math.filter(math.matrix(["23", "foo", "100", "55", "bar"]), /[0-9]+/), math.matrix(["23", "100", "55"])); + }); + + it('should throw an error if called with a multi dimensional matrix', function() { + function isPositive (x) { + return x > 0; + } + assert.throws(function() { math.filter(math.matrix([[6, -2],[-1, 4]]), isPositive) }, /Only one dimensional matrices supported/); + }); + + it('should throw an error if called with unsupported type', function() { + assert.throws(function() { math.filter(2, /regexp/) }); + assert.throws(function() { math.filter('string', /regexp/) }); + assert.throws(function() { math.filter([], 'string') }); + assert.throws(function() { math.filter([], {}) }); + }); + + it('should throw an error if called with invalid number of arguments', function() { + assert.throws(function() { math.filter([], /reg/, 'foo') }); + assert.throws(function() { math.filter([]) }); + }); + +}); \ No newline at end of file diff --git a/test/function/utils/sort.test.js b/test/function/utils/sort.test.js index 4b318274c..8e6144dba 100644 --- a/test/function/utils/sort.test.js +++ b/test/function/utils/sort.test.js @@ -13,6 +13,7 @@ describe('sort', function() { }); it('should sort a Matrix', function() { + assert.deepEqual(math.sort(math.matrix([5,10,1])), math.matrix([1,5, 10])); }); it('should sort an array in ascending order', function() {