UNPKG

2.76 MBJavaScriptView Raw
1(function webpackUniversalModuleDefinition(root, factory) {
2 if(typeof exports === 'object' && typeof module === 'object')
3 module.exports = factory();
4 else if(typeof define === 'function' && define.amd)
5 define([], factory);
6 else if(typeof exports === 'object')
7 exports["webtest"] = factory();
8 else
9 root["webtest"] = factory();
10})(this, function() {
11return /******/ (function(modules) { // webpackBootstrap
12/******/ // The module cache
13/******/ var installedModules = {};
14
15/******/ // The require function
16/******/ function __webpack_require__(moduleId) {
17
18/******/ // Check if module is in cache
19/******/ if(installedModules[moduleId])
20/******/ return installedModules[moduleId].exports;
21
22/******/ // Create a new module (and put it into the cache)
23/******/ var module = installedModules[moduleId] = {
24/******/ exports: {},
25/******/ id: moduleId,
26/******/ loaded: false
27/******/ };
28
29/******/ // Execute the module function
30/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31
32/******/ // Flag the module as loaded
33/******/ module.loaded = true;
34
35/******/ // Return the exports of the module
36/******/ return module.exports;
37/******/ }
38
39
40/******/ // expose the modules object (__webpack_modules__)
41/******/ __webpack_require__.m = modules;
42
43/******/ // expose the module cache
44/******/ __webpack_require__.c = installedModules;
45
46/******/ // __webpack_public_path__
47/******/ __webpack_require__.p = "";
48
49/******/ // Load entry module and return exports
50/******/ return __webpack_require__(0);
51/******/ })
52/************************************************************************/
53/******/ ([
54/* 0 */
55/*!*********************!*\
56 !*** multi webtest ***!
57 \*********************/
58/***/ function(module, exports, __webpack_require__) {
59
60 eval("module.exports = __webpack_require__(/*! mocha-loader!./test/browser */315);\n\n\n//////////////////\n// WEBPACK FOOTER\n// multi webtest\n// module id = 0\n// module chunks = 1\n//# sourceURL=webpack:///multi_webtest?");
61
62/***/ },
63/* 1 */
64/*!*************************!*\
65 !*** ./test/browser.ts ***!
66 \*************************/
67/***/ function(module, exports, __webpack_require__) {
68
69 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__webpack_require__(/*! ./universal */ 2);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./test/browser.ts\n// module id = 1\n// module chunks = 0 1\n//# sourceURL=webpack:///./test/browser.ts?");
70
71/***/ },
72/* 2 */
73/*!***************************!*\
74 !*** ./test/universal.ts ***!
75 \***************************/
76/***/ function(module, exports, __webpack_require__) {
77
78 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__webpack_require__(/*! ../test-kit */ 3);\n__webpack_require__(/*! ./memory-fs.spec */ 86);\n__webpack_require__(/*! ../test-kit/test/events-matcher.spec */ 310);\n__webpack_require__(/*! ../test-kit/test/slow-fs.spec */ 311);\n__webpack_require__(/*! ./cache-fs.spec */ 313);\n__webpack_require__(/*! ./timeout-fs.spec */ 314);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./test/universal.ts\n// module id = 2\n// module chunks = 0 1\n//# sourceURL=webpack:///./test/universal.ts?");
79
80/***/ },
81/* 3 */
82/*!***************************!*\
83 !*** ./test-kit/index.ts ***!
84 \***************************/
85/***/ function(module, exports, __webpack_require__) {
86
87 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/// <reference path=\"../node_modules/@types/mocha/index.d.ts\" />\nvar cap = __webpack_require__(/*! chai-as-promised */ 4);\nvar chaiSubset = __webpack_require__(/*! chai-subset */ 6);\nvar chai = __webpack_require__(/*! chai */ 7);\nvar Promise = __webpack_require__(/*! bluebird */ 47);\nPromise.longStackTraces();\nchai.use(chaiSubset);\nchai.use(cap);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./test-kit/index.ts\n// module id = 3\n// module chunks = 0 1\n//# sourceURL=webpack:///./test-kit/index.ts?");
88
89/***/ },
90/* 4 */
91/*!****************************************************!*\
92 !*** ./~/chai-as-promised/lib/chai-as-promised.js ***!
93 \****************************************************/
94/***/ function(module, exports, __webpack_require__) {
95
96 eval("\"use strict\";\n/* eslint-disable no-invalid-this */\nlet checkError = __webpack_require__(/*! check-error */ 5);\n\nmodule.exports = (chai, utils) => {\n const Assertion = chai.Assertion;\n const assert = chai.assert;\n\n // If we are using a version of Chai that has checkError on it,\n // we want to use that version to be consistent. Otherwise, we use\n // what was passed to the factory.\n if (utils.checkError) {\n checkError = utils.checkError;\n }\n\n function isLegacyJQueryPromise(thenable) {\n // jQuery promises are Promises/A+-compatible since 3.0.0. jQuery 3.0.0 is also the first version\n // to define the catch method.\n return typeof thenable.catch !== \"function\" &&\n typeof thenable.always === \"function\" &&\n typeof thenable.done === \"function\" &&\n typeof thenable.fail === \"function\" &&\n typeof thenable.pipe === \"function\" &&\n typeof thenable.progress === \"function\" &&\n typeof thenable.state === \"function\";\n }\n\n function assertIsAboutPromise(assertion) {\n if (typeof assertion._obj.then !== \"function\") {\n throw new TypeError(utils.inspect(assertion._obj) + \" is not a thenable.\");\n }\n if (isLegacyJQueryPromise(assertion._obj)) {\n throw new TypeError(\"Chai as Promised is incompatible with thenables of jQuery<3.0.0, sorry! Please \" +\n \"upgrade jQuery or use another Promises/A+ compatible library (see \" +\n \"http://promisesaplus.com/).\");\n }\n }\n\n function method(name, asserter) {\n utils.addMethod(Assertion.prototype, name, function () {\n assertIsAboutPromise(this);\n return asserter.apply(this, arguments);\n });\n }\n\n function property(name, asserter) {\n utils.addProperty(Assertion.prototype, name, function () {\n assertIsAboutPromise(this);\n return asserter.apply(this, arguments);\n });\n }\n\n function doNotify(promise, done) {\n promise.then(() => done(), done);\n }\n\n // These are for clarity and to bypass Chai refusing to allow `undefined` as actual when used with `assert`.\n function assertIfNegated(assertion, message, extra) {\n assertion.assert(true, null, message, extra.expected, extra.actual);\n }\n\n function assertIfNotNegated(assertion, message, extra) {\n assertion.assert(false, message, null, extra.expected, extra.actual);\n }\n\n function getBasePromise(assertion) {\n // We need to chain subsequent asserters on top of ones in the chain already (consider\n // `eventually.have.property(\"foo\").that.equals(\"bar\")`), only running them after the existing ones pass.\n // So the first base-promise is `assertion._obj`, but after that we use the assertions themselves, i.e.\n // previously derived promises, to chain off of.\n return typeof assertion.then === \"function\" ? assertion : assertion._obj;\n }\n\n function getReasonName(reason) {\n return reason instanceof Error ? reason.toString() : checkError.getConstructorName(reason);\n }\n\n // Grab these first, before we modify `Assertion.prototype`.\n\n const propertyNames = Object.getOwnPropertyNames(Assertion.prototype);\n\n const propertyDescs = {};\n for (const name of propertyNames) {\n propertyDescs[name] = Object.getOwnPropertyDescriptor(Assertion.prototype, name);\n }\n\n property(\"fulfilled\", function () {\n const derivedPromise = getBasePromise(this).then(\n value => {\n assertIfNegated(this,\n \"expected promise not to be fulfilled but it was fulfilled with #{act}\",\n { actual: value });\n return value;\n },\n reason => {\n assertIfNotNegated(this,\n \"expected promise to be fulfilled but it was rejected with #{act}\",\n { actual: getReasonName(reason) });\n return reason;\n }\n );\n\n module.exports.transferPromiseness(this, derivedPromise);\n return this;\n });\n\n property(\"rejected\", function () {\n const derivedPromise = getBasePromise(this).then(\n value => {\n assertIfNotNegated(this,\n \"expected promise to be rejected but it was fulfilled with #{act}\",\n { actual: value });\n return value;\n },\n reason => {\n assertIfNegated(this,\n \"expected promise not to be rejected but it was rejected with #{act}\",\n { actual: getReasonName(reason) });\n\n // Return the reason, transforming this into a fulfillment, to allow further assertions, e.g.\n // `promise.should.be.rejected.and.eventually.equal(\"reason\")`.\n return reason;\n }\n );\n\n module.exports.transferPromiseness(this, derivedPromise);\n return this;\n });\n\n method(\"rejectedWith\", function (errorLike, errMsgMatcher, message) {\n let errorLikeName = null;\n const negate = utils.flag(this, \"negate\") || false;\n\n // rejectedWith with that is called without arguments is\n // the same as a plain \".rejected\" use.\n if (errorLike === undefined && errMsgMatcher === undefined &&\n message === undefined) {\n /* eslint-disable no-unused-expressions */\n return this.rejected;\n /* eslint-enable no-unused-expressions */\n }\n\n if (message !== undefined) {\n utils.flag(this, \"message\", message);\n }\n\n if (errorLike instanceof RegExp || typeof errorLike === \"string\") {\n errMsgMatcher = errorLike;\n errorLike = null;\n } else if (errorLike && errorLike instanceof Error) {\n errorLikeName = errorLike.toString();\n } else if (typeof errorLike === \"function\") {\n errorLikeName = checkError.getConstructorName(errorLike);\n } else {\n errorLike = null;\n }\n const everyArgIsDefined = Boolean(errorLike && errMsgMatcher);\n\n let matcherRelation = \"including\";\n if (errMsgMatcher instanceof RegExp) {\n matcherRelation = \"matching\";\n }\n\n const derivedPromise = getBasePromise(this).then(\n value => {\n let assertionMessage = null;\n let expected = null;\n\n if (errorLike) {\n assertionMessage = \"expected promise to be rejected with #{exp} but it was fulfilled with #{act}\";\n expected = errorLikeName;\n } else if (errMsgMatcher) {\n assertionMessage = `expected promise to be rejected with an error ${matcherRelation} #{exp} but ` +\n `it was fulfilled with #{act}`;\n expected = errMsgMatcher;\n }\n\n assertIfNotNegated(this, assertionMessage, { expected, actual: value });\n return value;\n },\n reason => {\n const errorLikeCompatible = errorLike && (errorLike instanceof Error ?\n checkError.compatibleInstance(reason, errorLike) :\n checkError.compatibleConstructor(reason, errorLike));\n\n const errMsgMatcherCompatible = errMsgMatcher && checkError.compatibleMessage(reason, errMsgMatcher);\n\n const reasonName = getReasonName(reason);\n\n if (negate && everyArgIsDefined) {\n if (errorLikeCompatible && errMsgMatcherCompatible) {\n this.assert(true,\n null,\n \"expected promise not to be rejected with #{exp} but it was rejected \" +\n \"with #{act}\",\n errorLikeName,\n reasonName);\n }\n } else {\n if (errorLike) {\n this.assert(errorLikeCompatible,\n \"expected promise to be rejected with #{exp} but it was rejected with #{act}\",\n \"expected promise not to be rejected with #{exp} but it was rejected \" +\n \"with #{act}\",\n errorLikeName,\n reasonName);\n }\n\n if (errMsgMatcher) {\n this.assert(errMsgMatcherCompatible,\n `expected promise to be rejected with an error ${matcherRelation} #{exp} but got ` +\n `#{act}`,\n `expected promise not to be rejected with an error ${matcherRelation} #{exp}`,\n errMsgMatcher,\n checkError.getMessage(reason));\n }\n }\n\n return reason;\n }\n );\n\n module.exports.transferPromiseness(this, derivedPromise);\n return this;\n });\n\n property(\"eventually\", function () {\n utils.flag(this, \"eventually\", true);\n return this;\n });\n\n method(\"notify\", function (done) {\n doNotify(getBasePromise(this), done);\n return this;\n });\n\n method(\"become\", function (value, message) {\n return this.eventually.deep.equal(value, message);\n });\n\n // ### `eventually`\n\n // We need to be careful not to trigger any getters, thus `Object.getOwnPropertyDescriptor` usage.\n const methodNames = propertyNames.filter(name => {\n return name !== \"assert\" && typeof propertyDescs[name].value === \"function\";\n });\n\n methodNames.forEach(methodName => {\n Assertion.overwriteMethod(methodName, originalMethod => function () {\n return doAsserterAsyncAndAddThen(originalMethod, this, arguments);\n });\n });\n\n const getterNames = propertyNames.filter(name => {\n return name !== \"_obj\" && typeof propertyDescs[name].get === \"function\";\n });\n\n getterNames.forEach(getterName => {\n // Chainable methods are things like `an`, which can work both for `.should.be.an.instanceOf` and as\n // `should.be.an(\"object\")`. We need to handle those specially.\n const isChainableMethod = Assertion.prototype.__methods.hasOwnProperty(getterName);\n\n if (isChainableMethod) {\n Assertion.overwriteChainableMethod(\n getterName,\n originalMethod => function () {\n return doAsserterAsyncAndAddThen(originalMethod, this, arguments);\n },\n originalGetter => function () {\n return doAsserterAsyncAndAddThen(originalGetter, this);\n }\n );\n } else {\n Assertion.overwriteProperty(getterName, originalGetter => function () {\n return doAsserterAsyncAndAddThen(originalGetter, this);\n });\n }\n });\n\n function doAsserterAsyncAndAddThen(asserter, assertion, args) {\n // Since we're intercepting all methods/properties, we need to just pass through if they don't want\n // `eventually`, or if we've already fulfilled the promise (see below).\n if (!utils.flag(assertion, \"eventually\")) {\n asserter.apply(assertion, args);\n return assertion;\n }\n\n const derivedPromise = getBasePromise(assertion).then(value => {\n // Set up the environment for the asserter to actually run: `_obj` should be the fulfillment value, and\n // now that we have the value, we're no longer in \"eventually\" mode, so we won't run any of this code,\n // just the base Chai code that we get to via the short-circuit above.\n assertion._obj = value;\n utils.flag(assertion, \"eventually\", false);\n\n return args ? module.exports.transformAsserterArgs(args) : args;\n }).then(newArgs => {\n asserter.apply(assertion, newArgs);\n\n // Because asserters, for example `property`, can change the value of `_obj` (i.e. change the \"object\"\n // flag), we need to communicate this value change to subsequent chained asserters. Since we build a\n // promise chain paralleling the asserter chain, we can use it to communicate such changes.\n return assertion._obj;\n });\n\n module.exports.transferPromiseness(assertion, derivedPromise);\n return assertion;\n }\n\n // ### Now use the `Assertion` framework to build an `assert` interface.\n const originalAssertMethods = Object.getOwnPropertyNames(assert).filter(propName => {\n return typeof assert[propName] === \"function\";\n });\n\n assert.isFulfilled = (promise, message) => (new Assertion(promise, message)).to.be.fulfilled;\n\n assert.isRejected = (promise, errorLike, errMsgMatcher, message) => {\n const assertion = new Assertion(promise, message);\n return assertion.to.be.rejectedWith(errorLike, errMsgMatcher, message);\n };\n\n assert.becomes = (promise, value, message) => assert.eventually.deepEqual(promise, value, message);\n\n assert.doesNotBecome = (promise, value, message) => assert.eventually.notDeepEqual(promise, value, message);\n\n assert.eventually = {};\n originalAssertMethods.forEach(assertMethodName => {\n assert.eventually[assertMethodName] = function (promise) {\n const otherArgs = Array.prototype.slice.call(arguments, 1);\n\n let customRejectionHandler;\n const message = arguments[assert[assertMethodName].length - 1];\n if (typeof message === \"string\") {\n customRejectionHandler = reason => {\n throw new chai.AssertionError(`${message}\\n\\nOriginal reason: ${utils.inspect(reason)}`);\n };\n }\n\n const returnedPromise = promise.then(\n fulfillmentValue => assert[assertMethodName].apply(assert, [fulfillmentValue].concat(otherArgs)),\n customRejectionHandler\n );\n\n returnedPromise.notify = done => {\n doNotify(returnedPromise, done);\n };\n\n return returnedPromise;\n };\n });\n};\n\nmodule.exports.transferPromiseness = (assertion, promise) => {\n assertion.then = promise.then.bind(promise);\n};\n\nmodule.exports.transformAsserterArgs = values => values;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai-as-promised/lib/chai-as-promised.js\n// module id = 4\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai-as-promised/lib/chai-as-promised.js?");
97
98/***/ },
99/* 5 */
100/*!********************************!*\
101 !*** ./~/check-error/index.js ***!
102 \********************************/
103/***/ function(module, exports) {
104
105 eval("'use strict';\n\n/* !\n * Chai - checkError utility\n * Copyright(c) 2012-2016 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/**\n * ### .checkError\n *\n * Checks that an error conforms to a given set of criteria and/or retrieves information about it.\n *\n * @api public\n */\n\n/**\n * ### .compatibleInstance(thrown, errorLike)\n *\n * Checks if two instances are compatible (strict equal).\n * Returns false if errorLike is not an instance of Error, because instances\n * can only be compatible if they're both error instances.\n *\n * @name compatibleInstance\n * @param {Error} thrown error\n * @param {Error|ErrorConstructor} errorLike object to compare against\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleInstance(thrown, errorLike) {\n return errorLike instanceof Error && thrown === errorLike;\n}\n\n/**\n * ### .compatibleConstructor(thrown, errorLike)\n *\n * Checks if two constructors are compatible.\n * This function can receive either an error constructor or\n * an error instance as the `errorLike` argument.\n * Constructors are compatible if they're the same or if one is\n * an instance of another.\n *\n * @name compatibleConstructor\n * @param {Error} thrown error\n * @param {Error|ErrorConstructor} errorLike object to compare against\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleConstructor(thrown, errorLike) {\n if (errorLike instanceof Error) {\n // If `errorLike` is an instance of any error we compare their constructors\n return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor;\n } else if (errorLike.prototype instanceof Error || errorLike === Error) {\n // If `errorLike` is a constructor that inherits from Error, we compare `thrown` to `errorLike` directly\n return thrown.constructor === errorLike || thrown instanceof errorLike;\n }\n\n return false;\n}\n\n/**\n * ### .compatibleMessage(thrown, errMatcher)\n *\n * Checks if an error's message is compatible with a matcher (String or RegExp).\n * If the message contains the String or passes the RegExp test,\n * it is considered compatible.\n *\n * @name compatibleMessage\n * @param {Error} thrown error\n * @param {String|RegExp} errMatcher to look for into the message\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleMessage(thrown, errMatcher) {\n var comparisonString = typeof thrown === 'string' ? thrown : thrown.message;\n if (errMatcher instanceof RegExp) {\n return errMatcher.test(comparisonString);\n } else if (typeof errMatcher === 'string') {\n return comparisonString.indexOf(errMatcher) !== -1; // eslint-disable-line no-magic-numbers\n }\n\n return false;\n}\n\n/**\n * ### .getFunctionName(constructorFn)\n *\n * Returns the name of a function.\n * This also includes a polyfill function if `constructorFn.name` is not defined.\n *\n * @name getFunctionName\n * @param {Function} constructorFn\n * @namespace Utils\n * @api private\n */\n\nvar functionNameMatch = /\\s*function(?:\\s|\\s*\\/\\*[^(?:*\\/)]+\\*\\/\\s*)*([^\\(\\/]+)/;\nfunction getFunctionName(constructorFn) {\n var name = '';\n if (typeof constructorFn.name === 'undefined') {\n // Here we run a polyfill if constructorFn.name is not defined\n var match = String(constructorFn).match(functionNameMatch);\n if (match) {\n name = match[1];\n }\n } else {\n name = constructorFn.name;\n }\n\n return name;\n}\n\n/**\n * ### .getConstructorName(errorLike)\n *\n * Gets the constructor name for an Error instance or constructor itself.\n *\n * @name getConstructorName\n * @param {Error|ErrorConstructor} errorLike\n * @namespace Utils\n * @api public\n */\n\nfunction getConstructorName(errorLike) {\n var constructorName = errorLike;\n if (errorLike instanceof Error) {\n constructorName = getFunctionName(errorLike.constructor);\n } else if (typeof errorLike === 'function') {\n // If `err` is not an instance of Error it is an error constructor itself or another function.\n // If we've got a common function we get its name, otherwise we may need to create a new instance\n // of the error just in case it's a poorly-constructed error. Please see chaijs/chai/issues/45 to know more.\n constructorName = getFunctionName(errorLike).trim() ||\n getFunctionName(new errorLike()); // eslint-disable-line new-cap\n }\n\n return constructorName;\n}\n\n/**\n * ### .getMessage(errorLike)\n *\n * Gets the error message from an error.\n * If `err` is a String itself, we return it.\n * If the error has no message, we return an empty string.\n *\n * @name getMessage\n * @param {Error|String} errorLike\n * @namespace Utils\n * @api public\n */\n\nfunction getMessage(errorLike) {\n var msg = '';\n if (errorLike && errorLike.message) {\n msg = errorLike.message;\n } else if (typeof errorLike === 'string') {\n msg = errorLike;\n }\n\n return msg;\n}\n\nmodule.exports = {\n compatibleInstance: compatibleInstance,\n compatibleConstructor: compatibleConstructor,\n compatibleMessage: compatibleMessage,\n getMessage: getMessage,\n getConstructorName: getConstructorName,\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/check-error/index.js\n// module id = 5\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/check-error/index.js?");
106
107/***/ },
108/* 6 */
109/*!******************************************!*\
110 !*** ./~/chai-subset/lib/chai-subset.js ***!
111 \******************************************/
112/***/ function(module, exports, __webpack_require__) {
113
114 eval("(function() {\n\t(function(chaiSubset) {\n\t\tif (true) {\n\t\t\treturn module.exports = chaiSubset;\n\t\t} else if (typeof define === 'function' && define.amd) {\n\t\t\treturn define(function() {\n\t\t\t\treturn chaiSubset;\n\t\t\t});\n\t\t} else {\n\t\t\treturn chai.use(chaiSubset);\n\t\t}\n\t})(function(chai, utils) {\n\t\tvar Assertion = chai.Assertion;\n\t\tvar assertionPrototype = Assertion.prototype;\n\n\t\tAssertion.addMethod('containSubset', function (expected) {\n\t\t\tvar actual = utils.flag(this, 'object');\n\t\t\tvar showDiff = chai.config.showDiff;\n\n\t\t\tassertionPrototype.assert.call(this,\n\t\t\t\tcompare(expected, actual),\n\t\t\t\t'expected #{act} to contain subset #{exp}',\n\t\t\t\t'expected #{act} to not contain subset #{exp}',\n\t\t\t\texpected,\n\t\t\t\tactual,\n\t\t\t\tshowDiff\n\t\t\t);\n\t\t});\n\n\t\tchai.assert.containSubset = function(val, exp, msg) {\n\t\t\tnew chai.Assertion(val, msg).to.be.containSubset(exp);\n\t\t};\n\n\t\tfunction compare(expected, actual) {\n\t\t\tif (expected === actual) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (typeof(actual) !== typeof(expected)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (typeof(expected) !== 'object' || expected === null) {\n\t\t\t\treturn expected === actual;\n\t\t\t}\n\t\t\tif (!!expected && !actual) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (Array.isArray(expected)) {\n\t\t\t\tif (typeof(actual.length) !== 'number') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar aa = Array.prototype.slice.call(actual);\n\t\t\t\treturn expected.every(function (exp) {\n\t\t\t\t\treturn aa.some(function (act) {\n\t\t\t\t\t\treturn compare(exp, act);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (expected instanceof Date) {\n\t\t\t\tif (actual instanceof Date) {\n\t\t\t\t\treturn expected.getTime() === actual.getTime();\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn Object.keys(expected).every(function (key) {\n\t\t\t\tvar eo = expected[key];\n\t\t\t\tvar ao = actual[key];\n\t\t\t\tif (typeof(eo) === 'object' && eo !== null && ao !== null) {\n\t\t\t\t\treturn compare(eo, ao);\n\t\t\t\t}\n\t\t\t\treturn ao === eo;\n\t\t\t});\n\t\t}\n\t});\n\n}).call(this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai-subset/lib/chai-subset.js\n// module id = 6\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai-subset/lib/chai-subset.js?");
115
116/***/ },
117/* 7 */
118/*!*************************!*\
119 !*** ./~/chai/index.js ***!
120 \*************************/
121/***/ function(module, exports, __webpack_require__) {
122
123 eval("module.exports = __webpack_require__(/*! ./lib/chai */ 8);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/index.js\n// module id = 7\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/index.js?");
124
125/***/ },
126/* 8 */
127/*!****************************!*\
128 !*** ./~/chai/lib/chai.js ***!
129 \****************************/
130/***/ function(module, exports, __webpack_require__) {
131
132 eval("/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\nvar used = []\n , exports = module.exports = {};\n\n/*!\n * Chai version\n */\n\nexports.version = '3.5.0';\n\n/*!\n * Assertion Error\n */\n\nexports.AssertionError = __webpack_require__(/*! assertion-error */ 9);\n\n/*!\n * Utils for plugins (not exported)\n */\n\nvar util = __webpack_require__(/*! ./chai/utils */ 10);\n\n/**\n * # .use(function)\n *\n * Provides a way to extend the internals of Chai\n *\n * @param {Function}\n * @returns {this} for chaining\n * @api public\n */\n\nexports.use = function (fn) {\n if (!~used.indexOf(fn)) {\n fn(this, util);\n used.push(fn);\n }\n\n return this;\n};\n\n/*!\n * Utility Functions\n */\n\nexports.util = util;\n\n/*!\n * Configuration\n */\n\nvar config = __webpack_require__(/*! ./chai/config */ 23);\nexports.config = config;\n\n/*!\n * Primary `Assertion` prototype\n */\n\nvar assertion = __webpack_require__(/*! ./chai/assertion */ 42);\nexports.use(assertion);\n\n/*!\n * Core Assertions\n */\n\nvar core = __webpack_require__(/*! ./chai/core/assertions */ 43);\nexports.use(core);\n\n/*!\n * Expect interface\n */\n\nvar expect = __webpack_require__(/*! ./chai/interface/expect */ 44);\nexports.use(expect);\n\n/*!\n * Should interface\n */\n\nvar should = __webpack_require__(/*! ./chai/interface/should */ 45);\nexports.use(should);\n\n/*!\n * Assert interface\n */\n\nvar assert = __webpack_require__(/*! ./chai/interface/assert */ 46);\nexports.use(assert);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai.js\n// module id = 8\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai.js?");
133
134/***/ },
135/* 9 */
136/*!************************************!*\
137 !*** ./~/assertion-error/index.js ***!
138 \************************************/
139/***/ function(module, exports) {
140
141 eval("/*!\n * assertion-error\n * Copyright(c) 2013 Jake Luer <jake@qualiancy.com>\n * MIT Licensed\n */\n\n/*!\n * Return a function that will copy properties from\n * one object to another excluding any originally\n * listed. Returned function will create a new `{}`.\n *\n * @param {String} excluded properties ...\n * @return {Function}\n */\n\nfunction exclude () {\n var excludes = [].slice.call(arguments);\n\n function excludeProps (res, obj) {\n Object.keys(obj).forEach(function (key) {\n if (!~excludes.indexOf(key)) res[key] = obj[key];\n });\n }\n\n return function extendExclude () {\n var args = [].slice.call(arguments)\n , i = 0\n , res = {};\n\n for (; i < args.length; i++) {\n excludeProps(res, args[i]);\n }\n\n return res;\n };\n};\n\n/*!\n * Primary Exports\n */\n\nmodule.exports = AssertionError;\n\n/**\n * ### AssertionError\n *\n * An extension of the JavaScript `Error` constructor for\n * assertion and validation scenarios.\n *\n * @param {String} message\n * @param {Object} properties to include (optional)\n * @param {callee} start stack function (optional)\n */\n\nfunction AssertionError (message, _props, ssf) {\n var extend = exclude('name', 'message', 'stack', 'constructor', 'toJSON')\n , props = extend(_props || {});\n\n // default values\n this.message = message || 'Unspecified AssertionError';\n this.showDiff = false;\n\n // copy from properties\n for (var key in props) {\n this[key] = props[key];\n }\n\n // capture stack trace\n ssf = ssf || arguments.callee;\n if (ssf && Error.captureStackTrace) {\n Error.captureStackTrace(this, ssf);\n } else {\n try {\n throw new Error();\n } catch(e) {\n this.stack = e.stack;\n }\n }\n}\n\n/*!\n * Inherit from Error.prototype\n */\n\nAssertionError.prototype = Object.create(Error.prototype);\n\n/*!\n * Statically set name\n */\n\nAssertionError.prototype.name = 'AssertionError';\n\n/*!\n * Ensure correct constructor\n */\n\nAssertionError.prototype.constructor = AssertionError;\n\n/**\n * Allow errors to be converted to JSON for static transfer.\n *\n * @param {Boolean} include stack (default: `true`)\n * @return {Object} object that can be `JSON.stringify`\n */\n\nAssertionError.prototype.toJSON = function (stack) {\n var extend = exclude('constructor', 'toJSON', 'stack')\n , props = extend({ name: this.name }, this);\n\n // include stack if exists and not turned off\n if (false !== stack && this.stack) {\n props.stack = this.stack;\n }\n\n return props;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/assertion-error/index.js\n// module id = 9\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/assertion-error/index.js?");
142
143/***/ },
144/* 10 */
145/*!****************************************!*\
146 !*** ./~/chai/lib/chai/utils/index.js ***!
147 \****************************************/
148/***/ function(module, exports, __webpack_require__) {
149
150 eval("/*!\n * chai\n * Copyright(c) 2011 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/*!\n * Main exports\n */\n\nvar exports = module.exports = {};\n\n/*!\n * test utility\n */\n\nexports.test = __webpack_require__(/*! ./test */ 11);\n\n/*!\n * type utility\n */\n\nexports.type = __webpack_require__(/*! type-detect */ 13);\n\n/*!\n * expectTypes utility\n */\nexports.expectTypes = __webpack_require__(/*! ./expectTypes */ 15);\n\n/*!\n * message utility\n */\n\nexports.getMessage = __webpack_require__(/*! ./getMessage */ 16);\n\n/*!\n * actual utility\n */\n\nexports.getActual = __webpack_require__(/*! ./getActual */ 17);\n\n/*!\n * Inspect util\n */\n\nexports.inspect = __webpack_require__(/*! ./inspect */ 18);\n\n/*!\n * Object Display util\n */\n\nexports.objDisplay = __webpack_require__(/*! ./objDisplay */ 22);\n\n/*!\n * Flag utility\n */\n\nexports.flag = __webpack_require__(/*! ./flag */ 12);\n\n/*!\n * Flag transferring utility\n */\n\nexports.transferFlags = __webpack_require__(/*! ./transferFlags */ 24);\n\n/*!\n * Deep equal utility\n */\n\nexports.eql = __webpack_require__(/*! deep-eql */ 25);\n\n/*!\n * Deep path value\n */\n\nexports.getPathValue = __webpack_require__(/*! ./getPathValue */ 33);\n\n/*!\n * Deep path info\n */\n\nexports.getPathInfo = __webpack_require__(/*! ./getPathInfo */ 34);\n\n/*!\n * Check if a property exists\n */\n\nexports.hasProperty = __webpack_require__(/*! ./hasProperty */ 35);\n\n/*!\n * Function name\n */\n\nexports.getName = __webpack_require__(/*! ./getName */ 19);\n\n/*!\n * add Property\n */\n\nexports.addProperty = __webpack_require__(/*! ./addProperty */ 36);\n\n/*!\n * add Method\n */\n\nexports.addMethod = __webpack_require__(/*! ./addMethod */ 37);\n\n/*!\n * overwrite Property\n */\n\nexports.overwriteProperty = __webpack_require__(/*! ./overwriteProperty */ 38);\n\n/*!\n * overwrite Method\n */\n\nexports.overwriteMethod = __webpack_require__(/*! ./overwriteMethod */ 39);\n\n/*!\n * Add a chainable method\n */\n\nexports.addChainableMethod = __webpack_require__(/*! ./addChainableMethod */ 40);\n\n/*!\n * Overwrite chainable method\n */\n\nexports.overwriteChainableMethod = __webpack_require__(/*! ./overwriteChainableMethod */ 41);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/index.js\n// module id = 10\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/index.js?");
151
152/***/ },
153/* 11 */
154/*!***************************************!*\
155 !*** ./~/chai/lib/chai/utils/test.js ***!
156 \***************************************/
157/***/ function(module, exports, __webpack_require__) {
158
159 eval("/*!\n * Chai - test utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/*!\n * Module dependancies\n */\n\nvar flag = __webpack_require__(/*! ./flag */ 12);\n\n/**\n * # test(object, expression)\n *\n * Test and object for expression.\n *\n * @param {Object} object (constructed Assertion)\n * @param {Arguments} chai.Assertion.prototype.assert arguments\n * @namespace Utils\n * @name test\n */\n\nmodule.exports = function (obj, args) {\n var negate = flag(obj, 'negate')\n , expr = args[0];\n return negate ? !expr : expr;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/test.js\n// module id = 11\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/test.js?");
160
161/***/ },
162/* 12 */
163/*!***************************************!*\
164 !*** ./~/chai/lib/chai/utils/flag.js ***!
165 \***************************************/
166/***/ function(module, exports) {
167
168 eval("/*!\n * Chai - flag utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/**\n * ### flag(object, key, [value])\n *\n * Get or set a flag value on an object. If a\n * value is provided it will be set, else it will\n * return the currently set value or `undefined` if\n * the value is not set.\n *\n * utils.flag(this, 'foo', 'bar'); // setter\n * utils.flag(this, 'foo'); // getter, returns `bar`\n *\n * @param {Object} object constructed Assertion\n * @param {String} key\n * @param {Mixed} value (optional)\n * @namespace Utils\n * @name flag\n * @api private\n */\n\nmodule.exports = function (obj, key, value) {\n var flags = obj.__flags || (obj.__flags = Object.create(null));\n if (arguments.length === 3) {\n flags[key] = value;\n } else {\n return flags[key];\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/flag.js\n// module id = 12\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/flag.js?");
169
170/***/ },
171/* 13 */
172/*!********************************!*\
173 !*** ./~/type-detect/index.js ***!
174 \********************************/
175/***/ function(module, exports, __webpack_require__) {
176
177 eval("module.exports = __webpack_require__(/*! ./lib/type */ 14);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/type-detect/index.js\n// module id = 13\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/type-detect/index.js?");
178
179/***/ },
180/* 14 */
181/*!***********************************!*\
182 !*** ./~/type-detect/lib/type.js ***!
183 \***********************************/
184/***/ function(module, exports) {
185
186 eval("/*!\n * type-detect\n * Copyright(c) 2013 jake luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/*!\n * Primary Exports\n */\n\nvar exports = module.exports = getType;\n\n/**\n * ### typeOf (obj)\n *\n * Use several different techniques to determine\n * the type of object being tested.\n *\n *\n * @param {Mixed} object\n * @return {String} object type\n * @api public\n */\nvar objectTypeRegexp = /^\\[object (.*)\\]$/;\n\nfunction getType(obj) {\n var type = Object.prototype.toString.call(obj).match(objectTypeRegexp)[1].toLowerCase();\n // Let \"new String('')\" return 'object'\n if (typeof Promise === 'function' && obj instanceof Promise) return 'promise';\n // PhantomJS has type \"DOMWindow\" for null\n if (obj === null) return 'null';\n // PhantomJS has type \"DOMWindow\" for undefined\n if (obj === undefined) return 'undefined';\n return type;\n}\n\nexports.Library = Library;\n\n/**\n * ### Library\n *\n * Create a repository for custom type detection.\n *\n * ```js\n * var lib = new type.Library;\n * ```\n *\n */\n\nfunction Library() {\n if (!(this instanceof Library)) return new Library();\n this.tests = {};\n}\n\n/**\n * #### .of (obj)\n *\n * Expose replacement `typeof` detection to the library.\n *\n * ```js\n * if ('string' === lib.of('hello world')) {\n * // ...\n * }\n * ```\n *\n * @param {Mixed} object to test\n * @return {String} type\n */\n\nLibrary.prototype.of = getType;\n\n/**\n * #### .define (type, test)\n *\n * Add a test to for the `.test()` assertion.\n *\n * Can be defined as a regular expression:\n *\n * ```js\n * lib.define('int', /^[0-9]+$/);\n * ```\n *\n * ... or as a function:\n *\n * ```js\n * lib.define('bln', function (obj) {\n * if ('boolean' === lib.of(obj)) return true;\n * var blns = [ 'yes', 'no', 'true', 'false', 1, 0 ];\n * if ('string' === lib.of(obj)) obj = obj.toLowerCase();\n * return !! ~blns.indexOf(obj);\n * });\n * ```\n *\n * @param {String} type\n * @param {RegExp|Function} test\n * @api public\n */\n\nLibrary.prototype.define = function(type, test) {\n if (arguments.length === 1) return this.tests[type];\n this.tests[type] = test;\n return this;\n};\n\n/**\n * #### .test (obj, test)\n *\n * Assert that an object is of type. Will first\n * check natives, and if that does not pass it will\n * use the user defined custom tests.\n *\n * ```js\n * assert(lib.test('1', 'int'));\n * assert(lib.test('yes', 'bln'));\n * ```\n *\n * @param {Mixed} object\n * @param {String} type\n * @return {Boolean} result\n * @api public\n */\n\nLibrary.prototype.test = function(obj, type) {\n if (type === getType(obj)) return true;\n var test = this.tests[type];\n\n if (test && 'regexp' === getType(test)) {\n return test.test(obj);\n } else if (test && 'function' === getType(test)) {\n return test(obj);\n } else {\n throw new ReferenceError('Type test \"' + type + '\" not defined or invalid.');\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/type-detect/lib/type.js\n// module id = 14\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/type-detect/lib/type.js?");
187
188/***/ },
189/* 15 */
190/*!**********************************************!*\
191 !*** ./~/chai/lib/chai/utils/expectTypes.js ***!
192 \**********************************************/
193/***/ function(module, exports, __webpack_require__) {
194
195 eval("/*!\n * Chai - expectTypes utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/**\n * ### expectTypes(obj, types)\n *\n * Ensures that the object being tested against is of a valid type.\n *\n * utils.expectTypes(this, ['array', 'object', 'string']);\n *\n * @param {Mixed} obj constructed Assertion\n * @param {Array} type A list of allowed types for this assertion\n * @namespace Utils\n * @name expectTypes\n * @api public\n */\n\nvar AssertionError = __webpack_require__(/*! assertion-error */ 9);\nvar flag = __webpack_require__(/*! ./flag */ 12);\nvar type = __webpack_require__(/*! type-detect */ 13);\n\nmodule.exports = function (obj, types) {\n var obj = flag(obj, 'object');\n types = types.map(function (t) { return t.toLowerCase(); });\n types.sort();\n\n // Transforms ['lorem', 'ipsum'] into 'a lirum, or an ipsum'\n var str = types.map(function (t, index) {\n var art = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(t.charAt(0)) ? 'an' : 'a';\n var or = types.length > 1 && index === types.length - 1 ? 'or ' : '';\n return or + art + ' ' + t;\n }).join(', ');\n\n if (!types.some(function (expected) { return type(obj) === expected; })) {\n throw new AssertionError(\n 'object tested must be ' + str + ', but ' + type(obj) + ' given'\n );\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/expectTypes.js\n// module id = 15\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/expectTypes.js?");
196
197/***/ },
198/* 16 */
199/*!*********************************************!*\
200 !*** ./~/chai/lib/chai/utils/getMessage.js ***!
201 \*********************************************/
202/***/ function(module, exports, __webpack_require__) {
203
204 eval("/*!\n * Chai - message composition utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/*!\n * Module dependancies\n */\n\nvar flag = __webpack_require__(/*! ./flag */ 12)\n , getActual = __webpack_require__(/*! ./getActual */ 17)\n , inspect = __webpack_require__(/*! ./inspect */ 18)\n , objDisplay = __webpack_require__(/*! ./objDisplay */ 22);\n\n/**\n * ### .getMessage(object, message, negateMessage)\n *\n * Construct the error message based on flags\n * and template tags. Template tags will return\n * a stringified inspection of the object referenced.\n *\n * Message template tags:\n * - `#{this}` current asserted object\n * - `#{act}` actual value\n * - `#{exp}` expected value\n *\n * @param {Object} object (constructed Assertion)\n * @param {Arguments} chai.Assertion.prototype.assert arguments\n * @namespace Utils\n * @name getMessage\n * @api public\n */\n\nmodule.exports = function (obj, args) {\n var negate = flag(obj, 'negate')\n , val = flag(obj, 'object')\n , expected = args[3]\n , actual = getActual(obj, args)\n , msg = negate ? args[2] : args[1]\n , flagMsg = flag(obj, 'message');\n\n if(typeof msg === \"function\") msg = msg();\n msg = msg || '';\n msg = msg\n .replace(/#\\{this\\}/g, function () { return objDisplay(val); })\n .replace(/#\\{act\\}/g, function () { return objDisplay(actual); })\n .replace(/#\\{exp\\}/g, function () { return objDisplay(expected); });\n\n return flagMsg ? flagMsg + ': ' + msg : msg;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/getMessage.js\n// module id = 16\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/getMessage.js?");
205
206/***/ },
207/* 17 */
208/*!********************************************!*\
209 !*** ./~/chai/lib/chai/utils/getActual.js ***!
210 \********************************************/
211/***/ function(module, exports) {
212
213 eval("/*!\n * Chai - getActual utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/**\n * # getActual(object, [actual])\n *\n * Returns the `actual` value for an Assertion\n *\n * @param {Object} object (constructed Assertion)\n * @param {Arguments} chai.Assertion.prototype.assert arguments\n * @namespace Utils\n * @name getActual\n */\n\nmodule.exports = function (obj, args) {\n return args.length > 4 ? args[4] : obj._obj;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/getActual.js\n// module id = 17\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/getActual.js?");
214
215/***/ },
216/* 18 */
217/*!******************************************!*\
218 !*** ./~/chai/lib/chai/utils/inspect.js ***!
219 \******************************************/
220/***/ function(module, exports, __webpack_require__) {
221
222 eval("// This is (almost) directly from Node.js utils\n// https://github.com/joyent/node/blob/f8c335d0caf47f16d31413f89aa28eda3878e3aa/lib/util.js\n\nvar getName = __webpack_require__(/*! ./getName */ 19);\nvar getProperties = __webpack_require__(/*! ./getProperties */ 20);\nvar getEnumerableProperties = __webpack_require__(/*! ./getEnumerableProperties */ 21);\n\nmodule.exports = inspect;\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Boolean} showHidden Flag that shows hidden (not enumerable)\n * properties of objects.\n * @param {Number} depth Depth in which to descend in object. Default is 2.\n * @param {Boolean} colors Flag to turn on ANSI escape codes to color the\n * output. Default is false (no coloring).\n * @namespace Utils\n * @name inspect\n */\nfunction inspect(obj, showHidden, depth, colors) {\n var ctx = {\n showHidden: showHidden,\n seen: [],\n stylize: function (str) { return str; }\n };\n return formatValue(ctx, obj, (typeof depth === 'undefined' ? 2 : depth));\n}\n\n// Returns true if object is a DOM element.\nvar isDOMElement = function (object) {\n if (typeof HTMLElement === 'object') {\n return object instanceof HTMLElement;\n } else {\n return object &&\n typeof object === 'object' &&\n object.nodeType === 1 &&\n typeof object.nodeName === 'string';\n }\n};\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (value && typeof value.inspect === 'function' &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes);\n if (typeof ret !== 'string') {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // If this is a DOM element, try to get the outer HTML.\n if (isDOMElement(value)) {\n if ('outerHTML' in value) {\n return value.outerHTML;\n // This value does not have an outerHTML attribute,\n // it could still be an XML element\n } else {\n // Attempt to serialize it\n try {\n if (document.xmlVersion) {\n var xmlSerializer = new XMLSerializer();\n return xmlSerializer.serializeToString(value);\n } else {\n // Firefox 11- do not support outerHTML\n // It does, however, support innerHTML\n // Use the following to render the element\n var ns = \"http://www.w3.org/1999/xhtml\";\n var container = document.createElementNS(ns, '_');\n\n container.appendChild(value.cloneNode(false));\n html = container.innerHTML\n .replace('><', '>' + value.innerHTML + '<');\n container.innerHTML = '';\n return html;\n }\n } catch (err) {\n // This could be a non-native DOM implementation,\n // continue with the normal flow:\n // printing the element as if it is an object.\n }\n }\n }\n\n // Look up the keys of the object.\n var visibleKeys = getEnumerableProperties(value);\n var keys = ctx.showHidden ? getProperties(value) : visibleKeys;\n\n // Some type of object without properties can be shortcutted.\n // In IE, errors have a single `stack` property, or if they are vanilla `Error`,\n // a `stack` plus `description` property; ignore those for consistency.\n if (keys.length === 0 || (isError(value) && (\n (keys.length === 1 && keys[0] === 'stack') ||\n (keys.length === 2 && keys[0] === 'description' && keys[1] === 'stack')\n ))) {\n if (typeof value === 'function') {\n var name = getName(value);\n var nameSuffix = name ? ': ' + name : '';\n return ctx.stylize('[Function' + nameSuffix + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toUTCString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (typeof value === 'function') {\n var name = getName(value);\n var nameSuffix = name ? ': ' + name : '';\n base = ' [Function' + nameSuffix + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n return formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n switch (typeof value) {\n case 'undefined':\n return ctx.stylize('undefined', 'undefined');\n\n case 'string':\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n\n case 'number':\n if (value === 0 && (1/value) === -Infinity) {\n return ctx.stylize('-0', 'number');\n }\n return ctx.stylize('' + value, 'number');\n\n case 'boolean':\n return ctx.stylize('' + value, 'boolean');\n }\n // For some reason typeof null is \"object\", so special case here.\n if (value === null) {\n return ctx.stylize('null', 'null');\n }\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (Object.prototype.hasOwnProperty.call(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str;\n if (value.__lookupGetter__) {\n if (value.__lookupGetter__(key)) {\n if (value.__lookupSetter__(key)) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (value.__lookupSetter__(key)) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n }\n if (visibleKeys.indexOf(key) < 0) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(value[key]) < 0) {\n if (recurseTimes === null) {\n str = formatValue(ctx, value[key], null);\n } else {\n str = formatValue(ctx, value[key], recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (typeof name === 'undefined') {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\nfunction isArray(ar) {\n return Array.isArray(ar) ||\n (typeof ar === 'object' && objectToString(ar) === '[object Array]');\n}\n\nfunction isRegExp(re) {\n return typeof re === 'object' && objectToString(re) === '[object RegExp]';\n}\n\nfunction isDate(d) {\n return typeof d === 'object' && objectToString(d) === '[object Date]';\n}\n\nfunction isError(e) {\n return typeof e === 'object' && objectToString(e) === '[object Error]';\n}\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/inspect.js\n// module id = 18\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/inspect.js?");
223
224/***/ },
225/* 19 */
226/*!******************************************!*\
227 !*** ./~/chai/lib/chai/utils/getName.js ***!
228 \******************************************/
229/***/ function(module, exports) {
230
231 eval("/*!\n * Chai - getName utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/**\n * # getName(func)\n *\n * Gets the name of a function, in a cross-browser way.\n *\n * @param {Function} a function (usually a constructor)\n * @namespace Utils\n * @name getName\n */\n\nmodule.exports = function (func) {\n if (func.name) return func.name;\n\n var match = /^\\s?function ([^(]*)\\(/.exec(func);\n return match && match[1] ? match[1] : \"\";\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/getName.js\n// module id = 19\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/getName.js?");
232
233/***/ },
234/* 20 */
235/*!************************************************!*\
236 !*** ./~/chai/lib/chai/utils/getProperties.js ***!
237 \************************************************/
238/***/ function(module, exports) {
239
240 eval("/*!\n * Chai - getProperties utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/**\n * ### .getProperties(object)\n *\n * This allows the retrieval of property names of an object, enumerable or not,\n * inherited or not.\n *\n * @param {Object} object\n * @returns {Array}\n * @namespace Utils\n * @name getProperties\n * @api public\n */\n\nmodule.exports = function getProperties(object) {\n var result = Object.getOwnPropertyNames(object);\n\n function addProperty(property) {\n if (result.indexOf(property) === -1) {\n result.push(property);\n }\n }\n\n var proto = Object.getPrototypeOf(object);\n while (proto !== null) {\n Object.getOwnPropertyNames(proto).forEach(addProperty);\n proto = Object.getPrototypeOf(proto);\n }\n\n return result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/getProperties.js\n// module id = 20\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/getProperties.js?");
241
242/***/ },
243/* 21 */
244/*!**********************************************************!*\
245 !*** ./~/chai/lib/chai/utils/getEnumerableProperties.js ***!
246 \**********************************************************/
247/***/ function(module, exports) {
248
249 eval("/*!\n * Chai - getEnumerableProperties utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/**\n * ### .getEnumerableProperties(object)\n *\n * This allows the retrieval of enumerable property names of an object,\n * inherited or not.\n *\n * @param {Object} object\n * @returns {Array}\n * @namespace Utils\n * @name getEnumerableProperties\n * @api public\n */\n\nmodule.exports = function getEnumerableProperties(object) {\n var result = [];\n for (var name in object) {\n result.push(name);\n }\n return result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/getEnumerableProperties.js\n// module id = 21\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/getEnumerableProperties.js?");
250
251/***/ },
252/* 22 */
253/*!*********************************************!*\
254 !*** ./~/chai/lib/chai/utils/objDisplay.js ***!
255 \*********************************************/
256/***/ function(module, exports, __webpack_require__) {
257
258 eval("/*!\n * Chai - flag utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/*!\n * Module dependancies\n */\n\nvar inspect = __webpack_require__(/*! ./inspect */ 18);\nvar config = __webpack_require__(/*! ../config */ 23);\n\n/**\n * ### .objDisplay (object)\n *\n * Determines if an object or an array matches\n * criteria to be inspected in-line for error\n * messages or should be truncated.\n *\n * @param {Mixed} javascript object to inspect\n * @name objDisplay\n * @namespace Utils\n * @api public\n */\n\nmodule.exports = function (obj) {\n var str = inspect(obj)\n , type = Object.prototype.toString.call(obj);\n\n if (config.truncateThreshold && str.length >= config.truncateThreshold) {\n if (type === '[object Function]') {\n return !obj.name || obj.name === ''\n ? '[Function]'\n : '[Function: ' + obj.name + ']';\n } else if (type === '[object Array]') {\n return '[ Array(' + obj.length + ') ]';\n } else if (type === '[object Object]') {\n var keys = Object.keys(obj)\n , kstr = keys.length > 2\n ? keys.splice(0, 2).join(', ') + ', ...'\n : keys.join(', ');\n return '{ Object (' + kstr + ') }';\n } else {\n return str;\n }\n } else {\n return str;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/objDisplay.js\n// module id = 22\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/objDisplay.js?");
259
260/***/ },
261/* 23 */
262/*!***********************************!*\
263 !*** ./~/chai/lib/chai/config.js ***!
264 \***********************************/
265/***/ function(module, exports) {
266
267 eval("module.exports = {\n\n /**\n * ### config.includeStack\n *\n * User configurable property, influences whether stack trace\n * is included in Assertion error message. Default of false\n * suppresses stack trace in the error message.\n *\n * chai.config.includeStack = true; // enable stack on error\n *\n * @param {Boolean}\n * @api public\n */\n\n includeStack: false,\n\n /**\n * ### config.showDiff\n *\n * User configurable property, influences whether or not\n * the `showDiff` flag should be included in the thrown\n * AssertionErrors. `false` will always be `false`; `true`\n * will be true when the assertion has requested a diff\n * be shown.\n *\n * @param {Boolean}\n * @api public\n */\n\n showDiff: true,\n\n /**\n * ### config.truncateThreshold\n *\n * User configurable property, sets length threshold for actual and\n * expected values in assertion errors. If this threshold is exceeded, for\n * example for large data structures, the value is replaced with something\n * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`.\n *\n * Set it to zero if you want to disable truncating altogether.\n *\n * This is especially userful when doing assertions on arrays: having this\n * set to a reasonable large value makes the failure messages readily\n * inspectable.\n *\n * chai.config.truncateThreshold = 0; // disable truncating\n *\n * @param {Number}\n * @api public\n */\n\n truncateThreshold: 40\n\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/config.js\n// module id = 23\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/config.js?");
268
269/***/ },
270/* 24 */
271/*!************************************************!*\
272 !*** ./~/chai/lib/chai/utils/transferFlags.js ***!
273 \************************************************/
274/***/ function(module, exports) {
275
276 eval("/*!\n * Chai - transferFlags utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/**\n * ### transferFlags(assertion, object, includeAll = true)\n *\n * Transfer all the flags for `assertion` to `object`. If\n * `includeAll` is set to `false`, then the base Chai\n * assertion flags (namely `object`, `ssfi`, and `message`)\n * will not be transferred.\n *\n *\n * var newAssertion = new Assertion();\n * utils.transferFlags(assertion, newAssertion);\n *\n * var anotherAsseriton = new Assertion(myObj);\n * utils.transferFlags(assertion, anotherAssertion, false);\n *\n * @param {Assertion} assertion the assertion to transfer the flags from\n * @param {Object} object the object to transfer the flags to; usually a new assertion\n * @param {Boolean} includeAll\n * @namespace Utils\n * @name transferFlags\n * @api private\n */\n\nmodule.exports = function (assertion, object, includeAll) {\n var flags = assertion.__flags || (assertion.__flags = Object.create(null));\n\n if (!object.__flags) {\n object.__flags = Object.create(null);\n }\n\n includeAll = arguments.length === 3 ? includeAll : true;\n\n for (var flag in flags) {\n if (includeAll ||\n (flag !== 'object' && flag !== 'ssfi' && flag != 'message')) {\n object.__flags[flag] = flags[flag];\n }\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/transferFlags.js\n// module id = 24\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/transferFlags.js?");
277
278/***/ },
279/* 25 */
280/*!*****************************!*\
281 !*** ./~/deep-eql/index.js ***!
282 \*****************************/
283/***/ function(module, exports, __webpack_require__) {
284
285 eval("module.exports = __webpack_require__(/*! ./lib/eql */ 26);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/deep-eql/index.js\n// module id = 25\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/deep-eql/index.js?");
286
287/***/ },
288/* 26 */
289/*!*******************************!*\
290 !*** ./~/deep-eql/lib/eql.js ***!
291 \*******************************/
292/***/ function(module, exports, __webpack_require__) {
293
294 eval("/*!\n * deep-eql\n * Copyright(c) 2013 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar type = __webpack_require__(/*! type-detect */ 27);\n\n/*!\n * Buffer.isBuffer browser shim\n */\n\nvar Buffer;\ntry { Buffer = __webpack_require__(/*! buffer */ 29).Buffer; }\ncatch(ex) {\n Buffer = {};\n Buffer.isBuffer = function() { return false; }\n}\n\n/*!\n * Primary Export\n */\n\nmodule.exports = deepEqual;\n\n/**\n * Assert super-strict (egal) equality between\n * two objects of any type.\n *\n * @param {Mixed} a\n * @param {Mixed} b\n * @param {Array} memoised (optional)\n * @return {Boolean} equal match\n */\n\nfunction deepEqual(a, b, m) {\n if (sameValue(a, b)) {\n return true;\n } else if ('date' === type(a)) {\n return dateEqual(a, b);\n } else if ('regexp' === type(a)) {\n return regexpEqual(a, b);\n } else if (Buffer.isBuffer(a)) {\n return bufferEqual(a, b);\n } else if ('arguments' === type(a)) {\n return argumentsEqual(a, b, m);\n } else if (!typeEqual(a, b)) {\n return false;\n } else if (('object' !== type(a) && 'object' !== type(b))\n && ('array' !== type(a) && 'array' !== type(b))) {\n return sameValue(a, b);\n } else {\n return objectEqual(a, b, m);\n }\n}\n\n/*!\n * Strict (egal) equality test. Ensures that NaN always\n * equals NaN and `-0` does not equal `+0`.\n *\n * @param {Mixed} a\n * @param {Mixed} b\n * @return {Boolean} equal match\n */\n\nfunction sameValue(a, b) {\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n return a !== a && b !== b;\n}\n\n/*!\n * Compare the types of two given objects and\n * return if they are equal. Note that an Array\n * has a type of `array` (not `object`) and arguments\n * have a type of `arguments` (not `array`/`object`).\n *\n * @param {Mixed} a\n * @param {Mixed} b\n * @return {Boolean} result\n */\n\nfunction typeEqual(a, b) {\n return type(a) === type(b);\n}\n\n/*!\n * Compare two Date objects by asserting that\n * the time values are equal using `saveValue`.\n *\n * @param {Date} a\n * @param {Date} b\n * @return {Boolean} result\n */\n\nfunction dateEqual(a, b) {\n if ('date' !== type(b)) return false;\n return sameValue(a.getTime(), b.getTime());\n}\n\n/*!\n * Compare two regular expressions by converting them\n * to string and checking for `sameValue`.\n *\n * @param {RegExp} a\n * @param {RegExp} b\n * @return {Boolean} result\n */\n\nfunction regexpEqual(a, b) {\n if ('regexp' !== type(b)) return false;\n return sameValue(a.toString(), b.toString());\n}\n\n/*!\n * Assert deep equality of two `arguments` objects.\n * Unfortunately, these must be sliced to arrays\n * prior to test to ensure no bad behavior.\n *\n * @param {Arguments} a\n * @param {Arguments} b\n * @param {Array} memoize (optional)\n * @return {Boolean} result\n */\n\nfunction argumentsEqual(a, b, m) {\n if ('arguments' !== type(b)) return false;\n a = [].slice.call(a);\n b = [].slice.call(b);\n return deepEqual(a, b, m);\n}\n\n/*!\n * Get enumerable properties of a given object.\n *\n * @param {Object} a\n * @return {Array} property names\n */\n\nfunction enumerable(a) {\n var res = [];\n for (var key in a) res.push(key);\n return res;\n}\n\n/*!\n * Simple equality for flat iterable objects\n * such as Arrays or Node.js buffers.\n *\n * @param {Iterable} a\n * @param {Iterable} b\n * @return {Boolean} result\n */\n\nfunction iterableEqual(a, b) {\n if (a.length !== b.length) return false;\n\n var i = 0;\n var match = true;\n\n for (; i < a.length; i++) {\n if (a[i] !== b[i]) {\n match = false;\n break;\n }\n }\n\n return match;\n}\n\n/*!\n * Extension to `iterableEqual` specifically\n * for Node.js Buffers.\n *\n * @param {Buffer} a\n * @param {Mixed} b\n * @return {Boolean} result\n */\n\nfunction bufferEqual(a, b) {\n if (!Buffer.isBuffer(b)) return false;\n return iterableEqual(a, b);\n}\n\n/*!\n * Block for `objectEqual` ensuring non-existing\n * values don't get in.\n *\n * @param {Mixed} object\n * @return {Boolean} result\n */\n\nfunction isValue(a) {\n return a !== null && a !== undefined;\n}\n\n/*!\n * Recursively check the equality of two objects.\n * Once basic sameness has been established it will\n * defer to `deepEqual` for each enumerable key\n * in the object.\n *\n * @param {Mixed} a\n * @param {Mixed} b\n * @return {Boolean} result\n */\n\nfunction objectEqual(a, b, m) {\n if (!isValue(a) || !isValue(b)) {\n return false;\n }\n\n if (a.prototype !== b.prototype) {\n return false;\n }\n\n var i;\n if (m) {\n for (i = 0; i < m.length; i++) {\n if ((m[i][0] === a && m[i][1] === b)\n || (m[i][0] === b && m[i][1] === a)) {\n return true;\n }\n }\n } else {\n m = [];\n }\n\n try {\n var ka = enumerable(a);\n var kb = enumerable(b);\n } catch (ex) {\n return false;\n }\n\n ka.sort();\n kb.sort();\n\n if (!iterableEqual(ka, kb)) {\n return false;\n }\n\n m.push([ a, b ]);\n\n var key;\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], m)) {\n return false;\n }\n }\n\n return true;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/deep-eql/lib/eql.js\n// module id = 26\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/deep-eql/lib/eql.js?");
295
296/***/ },
297/* 27 */
298/*!*******************************************!*\
299 !*** ./~/deep-eql/~/type-detect/index.js ***!
300 \*******************************************/
301/***/ function(module, exports, __webpack_require__) {
302
303 eval("module.exports = __webpack_require__(/*! ./lib/type */ 28);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/deep-eql/~/type-detect/index.js\n// module id = 27\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/deep-eql/~/type-detect/index.js?");
304
305/***/ },
306/* 28 */
307/*!**********************************************!*\
308 !*** ./~/deep-eql/~/type-detect/lib/type.js ***!
309 \**********************************************/
310/***/ function(module, exports) {
311
312 eval("/*!\n * type-detect\n * Copyright(c) 2013 jake luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/*!\n * Primary Exports\n */\n\nvar exports = module.exports = getType;\n\n/*!\n * Detectable javascript natives\n */\n\nvar natives = {\n '[object Array]': 'array'\n , '[object RegExp]': 'regexp'\n , '[object Function]': 'function'\n , '[object Arguments]': 'arguments'\n , '[object Date]': 'date'\n};\n\n/**\n * ### typeOf (obj)\n *\n * Use several different techniques to determine\n * the type of object being tested.\n *\n *\n * @param {Mixed} object\n * @return {String} object type\n * @api public\n */\n\nfunction getType (obj) {\n var str = Object.prototype.toString.call(obj);\n if (natives[str]) return natives[str];\n if (obj === null) return 'null';\n if (obj === undefined) return 'undefined';\n if (obj === Object(obj)) return 'object';\n return typeof obj;\n}\n\nexports.Library = Library;\n\n/**\n * ### Library\n *\n * Create a repository for custom type detection.\n *\n * ```js\n * var lib = new type.Library;\n * ```\n *\n */\n\nfunction Library () {\n this.tests = {};\n}\n\n/**\n * #### .of (obj)\n *\n * Expose replacement `typeof` detection to the library.\n *\n * ```js\n * if ('string' === lib.of('hello world')) {\n * // ...\n * }\n * ```\n *\n * @param {Mixed} object to test\n * @return {String} type\n */\n\nLibrary.prototype.of = getType;\n\n/**\n * #### .define (type, test)\n *\n * Add a test to for the `.test()` assertion.\n *\n * Can be defined as a regular expression:\n *\n * ```js\n * lib.define('int', /^[0-9]+$/);\n * ```\n *\n * ... or as a function:\n *\n * ```js\n * lib.define('bln', function (obj) {\n * if ('boolean' === lib.of(obj)) return true;\n * var blns = [ 'yes', 'no', 'true', 'false', 1, 0 ];\n * if ('string' === lib.of(obj)) obj = obj.toLowerCase();\n * return !! ~blns.indexOf(obj);\n * });\n * ```\n *\n * @param {String} type\n * @param {RegExp|Function} test\n * @api public\n */\n\nLibrary.prototype.define = function (type, test) {\n if (arguments.length === 1) return this.tests[type];\n this.tests[type] = test;\n return this;\n};\n\n/**\n * #### .test (obj, test)\n *\n * Assert that an object is of type. Will first\n * check natives, and if that does not pass it will\n * use the user defined custom tests.\n *\n * ```js\n * assert(lib.test('1', 'int'));\n * assert(lib.test('yes', 'bln'));\n * ```\n *\n * @param {Mixed} object\n * @param {String} type\n * @return {Boolean} result\n * @api public\n */\n\nLibrary.prototype.test = function (obj, type) {\n if (type === getType(obj)) return true;\n var test = this.tests[type];\n\n if (test && 'regexp' === getType(test)) {\n return test.test(obj);\n } else if (test && 'function' === getType(test)) {\n return test(obj);\n } else {\n throw new ReferenceError('Type test \"' + type + '\" not defined or invalid.');\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/deep-eql/~/type-detect/lib/type.js\n// module id = 28\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/deep-eql/~/type-detect/lib/type.js?");
313
314/***/ },
315/* 29 */
316/*!***************************!*\
317 !*** ./~/buffer/index.js ***!
318 \***************************/
319/***/ function(module, exports, __webpack_require__) {
320
321 eval("/* WEBPACK VAR INJECTION */(function(global) {/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = __webpack_require__(/*! base64-js */ 30)\nvar ieee754 = __webpack_require__(/*! ieee754 */ 31)\nvar isArray = __webpack_require__(/*! isarray */ 32)\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/buffer/index.js\n// module id = 29\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/buffer/index.js?");
322
323/***/ },
324/* 30 */
325/*!******************************!*\
326 !*** ./~/base64-js/index.js ***!
327 \******************************/
328/***/ function(module, exports) {
329
330 eval("'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return b64.length * 3 / 4 - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/base64-js/index.js\n// module id = 30\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/base64-js/index.js?");
331
332/***/ },
333/* 31 */
334/*!****************************!*\
335 !*** ./~/ieee754/index.js ***!
336 \****************************/
337/***/ function(module, exports) {
338
339 eval("exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ieee754/index.js\n// module id = 31\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/ieee754/index.js?");
340
341/***/ },
342/* 32 */
343/*!****************************!*\
344 !*** ./~/isarray/index.js ***!
345 \****************************/
346/***/ function(module, exports) {
347
348 eval("var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/isarray/index.js\n// module id = 32\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/isarray/index.js?");
349
350/***/ },
351/* 33 */
352/*!***********************************************!*\
353 !*** ./~/chai/lib/chai/utils/getPathValue.js ***!
354 \***********************************************/
355/***/ function(module, exports, __webpack_require__) {
356
357 eval("/*!\n * Chai - getPathValue utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * @see https://github.com/logicalparadox/filtr\n * MIT Licensed\n */\n\nvar getPathInfo = __webpack_require__(/*! ./getPathInfo */ 34);\n\n/**\n * ### .getPathValue(path, object)\n *\n * This allows the retrieval of values in an\n * object given a string path.\n *\n * var obj = {\n * prop1: {\n * arr: ['a', 'b', 'c']\n * , str: 'Hello'\n * }\n * , prop2: {\n * arr: [ { nested: 'Universe' } ]\n * , str: 'Hello again!'\n * }\n * }\n *\n * The following would be the results.\n *\n * getPathValue('prop1.str', obj); // Hello\n * getPathValue('prop1.att[2]', obj); // b\n * getPathValue('prop2.arr[0].nested', obj); // Universe\n *\n * @param {String} path\n * @param {Object} object\n * @returns {Object} value or `undefined`\n * @namespace Utils\n * @name getPathValue\n * @api public\n */\nmodule.exports = function(path, obj) {\n var info = getPathInfo(path, obj);\n return info.value;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/getPathValue.js\n// module id = 33\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/getPathValue.js?");
358
359/***/ },
360/* 34 */
361/*!**********************************************!*\
362 !*** ./~/chai/lib/chai/utils/getPathInfo.js ***!
363 \**********************************************/
364/***/ function(module, exports, __webpack_require__) {
365
366 eval("/*!\n * Chai - getPathInfo utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\nvar hasProperty = __webpack_require__(/*! ./hasProperty */ 35);\n\n/**\n * ### .getPathInfo(path, object)\n *\n * This allows the retrieval of property info in an\n * object given a string path.\n *\n * The path info consists of an object with the\n * following properties:\n *\n * * parent - The parent object of the property referenced by `path`\n * * name - The name of the final property, a number if it was an array indexer\n * * value - The value of the property, if it exists, otherwise `undefined`\n * * exists - Whether the property exists or not\n *\n * @param {String} path\n * @param {Object} object\n * @returns {Object} info\n * @namespace Utils\n * @name getPathInfo\n * @api public\n */\n\nmodule.exports = function getPathInfo(path, obj) {\n var parsed = parsePath(path),\n last = parsed[parsed.length - 1];\n\n var info = {\n parent: parsed.length > 1 ? _getPathValue(parsed, obj, parsed.length - 1) : obj,\n name: last.p || last.i,\n value: _getPathValue(parsed, obj)\n };\n info.exists = hasProperty(info.name, info.parent);\n\n return info;\n};\n\n\n/*!\n * ## parsePath(path)\n *\n * Helper function used to parse string object\n * paths. Use in conjunction with `_getPathValue`.\n *\n * var parsed = parsePath('myobject.property.subprop');\n *\n * ### Paths:\n *\n * * Can be as near infinitely deep and nested\n * * Arrays are also valid using the formal `myobject.document[3].property`.\n * * Literal dots and brackets (not delimiter) must be backslash-escaped.\n *\n * @param {String} path\n * @returns {Object} parsed\n * @api private\n */\n\nfunction parsePath (path) {\n var str = path.replace(/([^\\\\])\\[/g, '$1.[')\n , parts = str.match(/(\\\\\\.|[^.]+?)+/g);\n return parts.map(function (value) {\n var re = /^\\[(\\d+)\\]$/\n , mArr = re.exec(value);\n if (mArr) return { i: parseFloat(mArr[1]) };\n else return { p: value.replace(/\\\\([.\\[\\]])/g, '$1') };\n });\n}\n\n\n/*!\n * ## _getPathValue(parsed, obj)\n *\n * Helper companion function for `.parsePath` that returns\n * the value located at the parsed address.\n *\n * var value = getPathValue(parsed, obj);\n *\n * @param {Object} parsed definition from `parsePath`.\n * @param {Object} object to search against\n * @param {Number} object to search against\n * @returns {Object|Undefined} value\n * @api private\n */\n\nfunction _getPathValue (parsed, obj, index) {\n var tmp = obj\n , res;\n\n index = (index === undefined ? parsed.length : index);\n\n for (var i = 0, l = index; i < l; i++) {\n var part = parsed[i];\n if (tmp) {\n if ('undefined' !== typeof part.p)\n tmp = tmp[part.p];\n else if ('undefined' !== typeof part.i)\n tmp = tmp[part.i];\n if (i == (l - 1)) res = tmp;\n } else {\n res = undefined;\n }\n }\n return res;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/getPathInfo.js\n// module id = 34\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/getPathInfo.js?");
367
368/***/ },
369/* 35 */
370/*!**********************************************!*\
371 !*** ./~/chai/lib/chai/utils/hasProperty.js ***!
372 \**********************************************/
373/***/ function(module, exports, __webpack_require__) {
374
375 eval("/*!\n * Chai - hasProperty utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\nvar type = __webpack_require__(/*! type-detect */ 13);\n\n/**\n * ### .hasProperty(object, name)\n *\n * This allows checking whether an object has\n * named property or numeric array index.\n *\n * Basically does the same thing as the `in`\n * operator but works properly with natives\n * and null/undefined values.\n *\n * var obj = {\n * arr: ['a', 'b', 'c']\n * , str: 'Hello'\n * }\n *\n * The following would be the results.\n *\n * hasProperty('str', obj); // true\n * hasProperty('constructor', obj); // true\n * hasProperty('bar', obj); // false\n *\n * hasProperty('length', obj.str); // true\n * hasProperty(1, obj.str); // true\n * hasProperty(5, obj.str); // false\n *\n * hasProperty('length', obj.arr); // true\n * hasProperty(2, obj.arr); // true\n * hasProperty(3, obj.arr); // false\n *\n * @param {Objuect} object\n * @param {String|Number} name\n * @returns {Boolean} whether it exists\n * @namespace Utils\n * @name getPathInfo\n * @api public\n */\n\nvar literals = {\n 'number': Number\n , 'string': String\n};\n\nmodule.exports = function hasProperty(name, obj) {\n var ot = type(obj);\n\n // Bad Object, obviously no props at all\n if(ot === 'null' || ot === 'undefined')\n return false;\n\n // The `in` operator does not work with certain literals\n // box these before the check\n if(literals[ot] && typeof obj !== 'object')\n obj = new literals[ot](obj);\n\n return name in obj;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/hasProperty.js\n// module id = 35\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/hasProperty.js?");
376
377/***/ },
378/* 36 */
379/*!**********************************************!*\
380 !*** ./~/chai/lib/chai/utils/addProperty.js ***!
381 \**********************************************/
382/***/ function(module, exports, __webpack_require__) {
383
384 eval("/*!\n * Chai - addProperty utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\nvar config = __webpack_require__(/*! ../config */ 23);\nvar flag = __webpack_require__(/*! ./flag */ 12);\n\n/**\n * ### addProperty (ctx, name, getter)\n *\n * Adds a property to the prototype of an object.\n *\n * utils.addProperty(chai.Assertion.prototype, 'foo', function () {\n * var obj = utils.flag(this, 'object');\n * new chai.Assertion(obj).to.be.instanceof(Foo);\n * });\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.addProperty('foo', fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(myFoo).to.be.foo;\n *\n * @param {Object} ctx object to which the property is added\n * @param {String} name of property to add\n * @param {Function} getter function to be used for name\n * @namespace Utils\n * @name addProperty\n * @api public\n */\n\nmodule.exports = function (ctx, name, getter) {\n Object.defineProperty(ctx, name,\n { get: function addProperty() {\n var old_ssfi = flag(this, 'ssfi');\n if (old_ssfi && config.includeStack === false)\n flag(this, 'ssfi', addProperty);\n\n var result = getter.call(this);\n return result === undefined ? this : result;\n }\n , configurable: true\n });\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/addProperty.js\n// module id = 36\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/addProperty.js?");
385
386/***/ },
387/* 37 */
388/*!********************************************!*\
389 !*** ./~/chai/lib/chai/utils/addMethod.js ***!
390 \********************************************/
391/***/ function(module, exports, __webpack_require__) {
392
393 eval("/*!\n * Chai - addMethod utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\nvar config = __webpack_require__(/*! ../config */ 23);\n\n/**\n * ### .addMethod (ctx, name, method)\n *\n * Adds a method to the prototype of an object.\n *\n * utils.addMethod(chai.Assertion.prototype, 'foo', function (str) {\n * var obj = utils.flag(this, 'object');\n * new chai.Assertion(obj).to.be.equal(str);\n * });\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.addMethod('foo', fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(fooStr).to.be.foo('bar');\n *\n * @param {Object} ctx object to which the method is added\n * @param {String} name of method to add\n * @param {Function} method function to be used for name\n * @namespace Utils\n * @name addMethod\n * @api public\n */\nvar flag = __webpack_require__(/*! ./flag */ 12);\n\nmodule.exports = function (ctx, name, method) {\n ctx[name] = function () {\n var old_ssfi = flag(this, 'ssfi');\n if (old_ssfi && config.includeStack === false)\n flag(this, 'ssfi', ctx[name]);\n var result = method.apply(this, arguments);\n return result === undefined ? this : result;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/addMethod.js\n// module id = 37\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/addMethod.js?");
394
395/***/ },
396/* 38 */
397/*!****************************************************!*\
398 !*** ./~/chai/lib/chai/utils/overwriteProperty.js ***!
399 \****************************************************/
400/***/ function(module, exports) {
401
402 eval("/*!\n * Chai - overwriteProperty utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/**\n * ### overwriteProperty (ctx, name, fn)\n *\n * Overwites an already existing property getter and provides\n * access to previous value. Must return function to use as getter.\n *\n * utils.overwriteProperty(chai.Assertion.prototype, 'ok', function (_super) {\n * return function () {\n * var obj = utils.flag(this, 'object');\n * if (obj instanceof Foo) {\n * new chai.Assertion(obj.name).to.equal('bar');\n * } else {\n * _super.call(this);\n * }\n * }\n * });\n *\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.overwriteProperty('foo', fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(myFoo).to.be.ok;\n *\n * @param {Object} ctx object whose property is to be overwritten\n * @param {String} name of property to overwrite\n * @param {Function} getter function that returns a getter function to be used for name\n * @namespace Utils\n * @name overwriteProperty\n * @api public\n */\n\nmodule.exports = function (ctx, name, getter) {\n var _get = Object.getOwnPropertyDescriptor(ctx, name)\n , _super = function () {};\n\n if (_get && 'function' === typeof _get.get)\n _super = _get.get\n\n Object.defineProperty(ctx, name,\n { get: function () {\n var result = getter(_super).call(this);\n return result === undefined ? this : result;\n }\n , configurable: true\n });\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/overwriteProperty.js\n// module id = 38\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/overwriteProperty.js?");
403
404/***/ },
405/* 39 */
406/*!**************************************************!*\
407 !*** ./~/chai/lib/chai/utils/overwriteMethod.js ***!
408 \**************************************************/
409/***/ function(module, exports) {
410
411 eval("/*!\n * Chai - overwriteMethod utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/**\n * ### overwriteMethod (ctx, name, fn)\n *\n * Overwites an already existing method and provides\n * access to previous function. Must return function\n * to be used for name.\n *\n * utils.overwriteMethod(chai.Assertion.prototype, 'equal', function (_super) {\n * return function (str) {\n * var obj = utils.flag(this, 'object');\n * if (obj instanceof Foo) {\n * new chai.Assertion(obj.value).to.equal(str);\n * } else {\n * _super.apply(this, arguments);\n * }\n * }\n * });\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.overwriteMethod('foo', fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(myFoo).to.equal('bar');\n *\n * @param {Object} ctx object whose method is to be overwritten\n * @param {String} name of method to overwrite\n * @param {Function} method function that returns a function to be used for name\n * @namespace Utils\n * @name overwriteMethod\n * @api public\n */\n\nmodule.exports = function (ctx, name, method) {\n var _method = ctx[name]\n , _super = function () { return this; };\n\n if (_method && 'function' === typeof _method)\n _super = _method;\n\n ctx[name] = function () {\n var result = method(_super).apply(this, arguments);\n return result === undefined ? this : result;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/overwriteMethod.js\n// module id = 39\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/overwriteMethod.js?");
412
413/***/ },
414/* 40 */
415/*!*****************************************************!*\
416 !*** ./~/chai/lib/chai/utils/addChainableMethod.js ***!
417 \*****************************************************/
418/***/ function(module, exports, __webpack_require__) {
419
420 eval("/*!\n * Chai - addChainingMethod utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/*!\n * Module dependencies\n */\n\nvar transferFlags = __webpack_require__(/*! ./transferFlags */ 24);\nvar flag = __webpack_require__(/*! ./flag */ 12);\nvar config = __webpack_require__(/*! ../config */ 23);\n\n/*!\n * Module variables\n */\n\n// Check whether `__proto__` is supported\nvar hasProtoSupport = '__proto__' in Object;\n\n// Without `__proto__` support, this module will need to add properties to a function.\n// However, some Function.prototype methods cannot be overwritten,\n// and there seems no easy cross-platform way to detect them (@see chaijs/chai/issues/69).\nvar excludeNames = /^(?:length|name|arguments|caller)$/;\n\n// Cache `Function` properties\nvar call = Function.prototype.call,\n apply = Function.prototype.apply;\n\n/**\n * ### addChainableMethod (ctx, name, method, chainingBehavior)\n *\n * Adds a method to an object, such that the method can also be chained.\n *\n * utils.addChainableMethod(chai.Assertion.prototype, 'foo', function (str) {\n * var obj = utils.flag(this, 'object');\n * new chai.Assertion(obj).to.be.equal(str);\n * });\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.addChainableMethod('foo', fn, chainingBehavior);\n *\n * The result can then be used as both a method assertion, executing both `method` and\n * `chainingBehavior`, or as a language chain, which only executes `chainingBehavior`.\n *\n * expect(fooStr).to.be.foo('bar');\n * expect(fooStr).to.be.foo.equal('foo');\n *\n * @param {Object} ctx object to which the method is added\n * @param {String} name of method to add\n * @param {Function} method function to be used for `name`, when called\n * @param {Function} chainingBehavior function to be called every time the property is accessed\n * @namespace Utils\n * @name addChainableMethod\n * @api public\n */\n\nmodule.exports = function (ctx, name, method, chainingBehavior) {\n if (typeof chainingBehavior !== 'function') {\n chainingBehavior = function () { };\n }\n\n var chainableBehavior = {\n method: method\n , chainingBehavior: chainingBehavior\n };\n\n // save the methods so we can overwrite them later, if we need to.\n if (!ctx.__methods) {\n ctx.__methods = {};\n }\n ctx.__methods[name] = chainableBehavior;\n\n Object.defineProperty(ctx, name,\n { get: function () {\n chainableBehavior.chainingBehavior.call(this);\n\n var assert = function assert() {\n var old_ssfi = flag(this, 'ssfi');\n if (old_ssfi && config.includeStack === false)\n flag(this, 'ssfi', assert);\n var result = chainableBehavior.method.apply(this, arguments);\n return result === undefined ? this : result;\n };\n\n // Use `__proto__` if available\n if (hasProtoSupport) {\n // Inherit all properties from the object by replacing the `Function` prototype\n var prototype = assert.__proto__ = Object.create(this);\n // Restore the `call` and `apply` methods from `Function`\n prototype.call = call;\n prototype.apply = apply;\n }\n // Otherwise, redefine all properties (slow!)\n else {\n var asserterNames = Object.getOwnPropertyNames(ctx);\n asserterNames.forEach(function (asserterName) {\n if (!excludeNames.test(asserterName)) {\n var pd = Object.getOwnPropertyDescriptor(ctx, asserterName);\n Object.defineProperty(assert, asserterName, pd);\n }\n });\n }\n\n transferFlags(this, assert);\n return assert;\n }\n , configurable: true\n });\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/addChainableMethod.js\n// module id = 40\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/addChainableMethod.js?");
421
422/***/ },
423/* 41 */
424/*!***********************************************************!*\
425 !*** ./~/chai/lib/chai/utils/overwriteChainableMethod.js ***!
426 \***********************************************************/
427/***/ function(module, exports) {
428
429 eval("/*!\n * Chai - overwriteChainableMethod utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n/**\n * ### overwriteChainableMethod (ctx, name, method, chainingBehavior)\n *\n * Overwites an already existing chainable method\n * and provides access to the previous function or\n * property. Must return functions to be used for\n * name.\n *\n * utils.overwriteChainableMethod(chai.Assertion.prototype, 'length',\n * function (_super) {\n * }\n * , function (_super) {\n * }\n * );\n *\n * Can also be accessed directly from `chai.Assertion`.\n *\n * chai.Assertion.overwriteChainableMethod('foo', fn, fn);\n *\n * Then can be used as any other assertion.\n *\n * expect(myFoo).to.have.length(3);\n * expect(myFoo).to.have.length.above(3);\n *\n * @param {Object} ctx object whose method / property is to be overwritten\n * @param {String} name of method / property to overwrite\n * @param {Function} method function that returns a function to be used for name\n * @param {Function} chainingBehavior function that returns a function to be used for property\n * @namespace Utils\n * @name overwriteChainableMethod\n * @api public\n */\n\nmodule.exports = function (ctx, name, method, chainingBehavior) {\n var chainableBehavior = ctx.__methods[name];\n\n var _chainingBehavior = chainableBehavior.chainingBehavior;\n chainableBehavior.chainingBehavior = function () {\n var result = chainingBehavior(_chainingBehavior).call(this);\n return result === undefined ? this : result;\n };\n\n var _method = chainableBehavior.method;\n chainableBehavior.method = function () {\n var result = method(_method).apply(this, arguments);\n return result === undefined ? this : result;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/utils/overwriteChainableMethod.js\n// module id = 41\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/utils/overwriteChainableMethod.js?");
430
431/***/ },
432/* 42 */
433/*!**************************************!*\
434 !*** ./~/chai/lib/chai/assertion.js ***!
435 \**************************************/
436/***/ function(module, exports, __webpack_require__) {
437
438 eval("/*!\n * chai\n * http://chaijs.com\n * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\nvar config = __webpack_require__(/*! ./config */ 23);\n\nmodule.exports = function (_chai, util) {\n /*!\n * Module dependencies.\n */\n\n var AssertionError = _chai.AssertionError\n , flag = util.flag;\n\n /*!\n * Module export.\n */\n\n _chai.Assertion = Assertion;\n\n /*!\n * Assertion Constructor\n *\n * Creates object for chaining.\n *\n * @api private\n */\n\n function Assertion (obj, msg, stack) {\n flag(this, 'ssfi', stack || arguments.callee);\n flag(this, 'object', obj);\n flag(this, 'message', msg);\n }\n\n Object.defineProperty(Assertion, 'includeStack', {\n get: function() {\n console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.');\n return config.includeStack;\n },\n set: function(value) {\n console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.');\n config.includeStack = value;\n }\n });\n\n Object.defineProperty(Assertion, 'showDiff', {\n get: function() {\n console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.');\n return config.showDiff;\n },\n set: function(value) {\n console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.');\n config.showDiff = value;\n }\n });\n\n Assertion.addProperty = function (name, fn) {\n util.addProperty(this.prototype, name, fn);\n };\n\n Assertion.addMethod = function (name, fn) {\n util.addMethod(this.prototype, name, fn);\n };\n\n Assertion.addChainableMethod = function (name, fn, chainingBehavior) {\n util.addChainableMethod(this.prototype, name, fn, chainingBehavior);\n };\n\n Assertion.overwriteProperty = function (name, fn) {\n util.overwriteProperty(this.prototype, name, fn);\n };\n\n Assertion.overwriteMethod = function (name, fn) {\n util.overwriteMethod(this.prototype, name, fn);\n };\n\n Assertion.overwriteChainableMethod = function (name, fn, chainingBehavior) {\n util.overwriteChainableMethod(this.prototype, name, fn, chainingBehavior);\n };\n\n /**\n * ### .assert(expression, message, negateMessage, expected, actual, showDiff)\n *\n * Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass.\n *\n * @name assert\n * @param {Philosophical} expression to be tested\n * @param {String|Function} message or function that returns message to display if expression fails\n * @param {String|Function} negatedMessage or function that returns negatedMessage to display if negated expression fails\n * @param {Mixed} expected value (remember to check for negation)\n * @param {Mixed} actual (optional) will default to `this.obj`\n * @param {Boolean} showDiff (optional) when set to `true`, assert will display a diff in addition to the message if expression fails\n * @api private\n */\n\n Assertion.prototype.assert = function (expr, msg, negateMsg, expected, _actual, showDiff) {\n var ok = util.test(this, arguments);\n if (true !== showDiff) showDiff = false;\n if (true !== config.showDiff) showDiff = false;\n\n if (!ok) {\n var msg = util.getMessage(this, arguments)\n , actual = util.getActual(this, arguments);\n throw new AssertionError(msg, {\n actual: actual\n , expected: expected\n , showDiff: showDiff\n }, (config.includeStack) ? this.assert : flag(this, 'ssfi'));\n }\n };\n\n /*!\n * ### ._obj\n *\n * Quick reference to stored `actual` value for plugin developers.\n *\n * @api private\n */\n\n Object.defineProperty(Assertion.prototype, '_obj',\n { get: function () {\n return flag(this, 'object');\n }\n , set: function (val) {\n flag(this, 'object', val);\n }\n });\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/assertion.js\n// module id = 42\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/assertion.js?");
439
440/***/ },
441/* 43 */
442/*!********************************************!*\
443 !*** ./~/chai/lib/chai/core/assertions.js ***!
444 \********************************************/
445/***/ function(module, exports) {
446
447 eval("/*!\n * chai\n * http://chaijs.com\n * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\nmodule.exports = function (chai, _) {\n var Assertion = chai.Assertion\n , toString = Object.prototype.toString\n , flag = _.flag;\n\n /**\n * ### Language Chains\n *\n * The following are provided as chainable getters to\n * improve the readability of your assertions. They\n * do not provide testing capabilities unless they\n * have been overwritten by a plugin.\n *\n * **Chains**\n *\n * - to\n * - be\n * - been\n * - is\n * - that\n * - which\n * - and\n * - has\n * - have\n * - with\n * - at\n * - of\n * - same\n *\n * @name language chains\n * @namespace BDD\n * @api public\n */\n\n [ 'to', 'be', 'been'\n , 'is', 'and', 'has', 'have'\n , 'with', 'that', 'which', 'at'\n , 'of', 'same' ].forEach(function (chain) {\n Assertion.addProperty(chain, function () {\n return this;\n });\n });\n\n /**\n * ### .not\n *\n * Negates any of assertions following in the chain.\n *\n * expect(foo).to.not.equal('bar');\n * expect(goodFn).to.not.throw(Error);\n * expect({ foo: 'baz' }).to.have.property('foo')\n * .and.not.equal('bar');\n *\n * @name not\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('not', function () {\n flag(this, 'negate', true);\n });\n\n /**\n * ### .deep\n *\n * Sets the `deep` flag, later used by the `equal` and\n * `property` assertions.\n *\n * expect(foo).to.deep.equal({ bar: 'baz' });\n * expect({ foo: { bar: { baz: 'quux' } } })\n * .to.have.deep.property('foo.bar.baz', 'quux');\n *\n * `.deep.property` special characters can be escaped\n * by adding two slashes before the `.` or `[]`.\n *\n * var deepCss = { '.link': { '[target]': 42 }};\n * expect(deepCss).to.have.deep.property('\\\\.link.\\\\[target\\\\]', 42);\n *\n * @name deep\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('deep', function () {\n flag(this, 'deep', true);\n });\n\n /**\n * ### .any\n *\n * Sets the `any` flag, (opposite of the `all` flag)\n * later used in the `keys` assertion.\n *\n * expect(foo).to.have.any.keys('bar', 'baz');\n *\n * @name any\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('any', function () {\n flag(this, 'any', true);\n flag(this, 'all', false)\n });\n\n\n /**\n * ### .all\n *\n * Sets the `all` flag (opposite of the `any` flag)\n * later used by the `keys` assertion.\n *\n * expect(foo).to.have.all.keys('bar', 'baz');\n *\n * @name all\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('all', function () {\n flag(this, 'all', true);\n flag(this, 'any', false);\n });\n\n /**\n * ### .a(type)\n *\n * The `a` and `an` assertions are aliases that can be\n * used either as language chains or to assert a value's\n * type.\n *\n * // typeof\n * expect('test').to.be.a('string');\n * expect({ foo: 'bar' }).to.be.an('object');\n * expect(null).to.be.a('null');\n * expect(undefined).to.be.an('undefined');\n * expect(new Error).to.be.an('error');\n * expect(new Promise).to.be.a('promise');\n * expect(new Float32Array()).to.be.a('float32array');\n * expect(Symbol()).to.be.a('symbol');\n *\n * // es6 overrides\n * expect({[Symbol.toStringTag]:()=>'foo'}).to.be.a('foo');\n *\n * // language chain\n * expect(foo).to.be.an.instanceof(Foo);\n *\n * @name a\n * @alias an\n * @param {String} type\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function an (type, msg) {\n if (msg) flag(this, 'message', msg);\n type = type.toLowerCase();\n var obj = flag(this, 'object')\n , article = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(type.charAt(0)) ? 'an ' : 'a ';\n\n this.assert(\n type === _.type(obj)\n , 'expected #{this} to be ' + article + type\n , 'expected #{this} not to be ' + article + type\n );\n }\n\n Assertion.addChainableMethod('an', an);\n Assertion.addChainableMethod('a', an);\n\n /**\n * ### .include(value)\n *\n * The `include` and `contain` assertions can be used as either property\n * based language chains or as methods to assert the inclusion of an object\n * in an array or a substring in a string. When used as language chains,\n * they toggle the `contains` flag for the `keys` assertion.\n *\n * expect([1,2,3]).to.include(2);\n * expect('foobar').to.contain('foo');\n * expect({ foo: 'bar', hello: 'universe' }).to.include.keys('foo');\n *\n * @name include\n * @alias contain\n * @alias includes\n * @alias contains\n * @param {Object|String|Number} obj\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function includeChainingBehavior () {\n flag(this, 'contains', true);\n }\n\n function include (val, msg) {\n _.expectTypes(this, ['array', 'object', 'string']);\n\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n var expected = false;\n\n if (_.type(obj) === 'array' && _.type(val) === 'object') {\n for (var i in obj) {\n if (_.eql(obj[i], val)) {\n expected = true;\n break;\n }\n }\n } else if (_.type(val) === 'object') {\n if (!flag(this, 'negate')) {\n for (var k in val) new Assertion(obj).property(k, val[k]);\n return;\n }\n var subset = {};\n for (var k in val) subset[k] = obj[k];\n expected = _.eql(subset, val);\n } else {\n expected = (obj != undefined) && ~obj.indexOf(val);\n }\n this.assert(\n expected\n , 'expected #{this} to include ' + _.inspect(val)\n , 'expected #{this} to not include ' + _.inspect(val));\n }\n\n Assertion.addChainableMethod('include', include, includeChainingBehavior);\n Assertion.addChainableMethod('contain', include, includeChainingBehavior);\n Assertion.addChainableMethod('contains', include, includeChainingBehavior);\n Assertion.addChainableMethod('includes', include, includeChainingBehavior);\n\n /**\n * ### .ok\n *\n * Asserts that the target is truthy.\n *\n * expect('everything').to.be.ok;\n * expect(1).to.be.ok;\n * expect(false).to.not.be.ok;\n * expect(undefined).to.not.be.ok;\n * expect(null).to.not.be.ok;\n *\n * @name ok\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('ok', function () {\n this.assert(\n flag(this, 'object')\n , 'expected #{this} to be truthy'\n , 'expected #{this} to be falsy');\n });\n\n /**\n * ### .true\n *\n * Asserts that the target is `true`.\n *\n * expect(true).to.be.true;\n * expect(1).to.not.be.true;\n *\n * @name true\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('true', function () {\n this.assert(\n true === flag(this, 'object')\n , 'expected #{this} to be true'\n , 'expected #{this} to be false'\n , this.negate ? false : true\n );\n });\n\n /**\n * ### .false\n *\n * Asserts that the target is `false`.\n *\n * expect(false).to.be.false;\n * expect(0).to.not.be.false;\n *\n * @name false\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('false', function () {\n this.assert(\n false === flag(this, 'object')\n , 'expected #{this} to be false'\n , 'expected #{this} to be true'\n , this.negate ? true : false\n );\n });\n\n /**\n * ### .null\n *\n * Asserts that the target is `null`.\n *\n * expect(null).to.be.null;\n * expect(undefined).to.not.be.null;\n *\n * @name null\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('null', function () {\n this.assert(\n null === flag(this, 'object')\n , 'expected #{this} to be null'\n , 'expected #{this} not to be null'\n );\n });\n\n /**\n * ### .undefined\n *\n * Asserts that the target is `undefined`.\n *\n * expect(undefined).to.be.undefined;\n * expect(null).to.not.be.undefined;\n *\n * @name undefined\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('undefined', function () {\n this.assert(\n undefined === flag(this, 'object')\n , 'expected #{this} to be undefined'\n , 'expected #{this} not to be undefined'\n );\n });\n\n /**\n * ### .NaN\n * Asserts that the target is `NaN`.\n *\n * expect('foo').to.be.NaN;\n * expect(4).not.to.be.NaN;\n *\n * @name NaN\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('NaN', function () {\n this.assert(\n isNaN(flag(this, 'object'))\n , 'expected #{this} to be NaN'\n , 'expected #{this} not to be NaN'\n );\n });\n\n /**\n * ### .exist\n *\n * Asserts that the target is neither `null` nor `undefined`.\n *\n * var foo = 'hi'\n * , bar = null\n * , baz;\n *\n * expect(foo).to.exist;\n * expect(bar).to.not.exist;\n * expect(baz).to.not.exist;\n *\n * @name exist\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('exist', function () {\n this.assert(\n null != flag(this, 'object')\n , 'expected #{this} to exist'\n , 'expected #{this} to not exist'\n );\n });\n\n\n /**\n * ### .empty\n *\n * Asserts that the target's length is `0`. For arrays and strings, it checks\n * the `length` property. For objects, it gets the count of\n * enumerable keys.\n *\n * expect([]).to.be.empty;\n * expect('').to.be.empty;\n * expect({}).to.be.empty;\n *\n * @name empty\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('empty', function () {\n var obj = flag(this, 'object')\n , expected = obj;\n\n if (Array.isArray(obj) || 'string' === typeof object) {\n expected = obj.length;\n } else if (typeof obj === 'object') {\n expected = Object.keys(obj).length;\n }\n\n this.assert(\n !expected\n , 'expected #{this} to be empty'\n , 'expected #{this} not to be empty'\n );\n });\n\n /**\n * ### .arguments\n *\n * Asserts that the target is an arguments object.\n *\n * function test () {\n * expect(arguments).to.be.arguments;\n * }\n *\n * @name arguments\n * @alias Arguments\n * @namespace BDD\n * @api public\n */\n\n function checkArguments () {\n var obj = flag(this, 'object')\n , type = Object.prototype.toString.call(obj);\n this.assert(\n '[object Arguments]' === type\n , 'expected #{this} to be arguments but got ' + type\n , 'expected #{this} to not be arguments'\n );\n }\n\n Assertion.addProperty('arguments', checkArguments);\n Assertion.addProperty('Arguments', checkArguments);\n\n /**\n * ### .equal(value)\n *\n * Asserts that the target is strictly equal (`===`) to `value`.\n * Alternately, if the `deep` flag is set, asserts that\n * the target is deeply equal to `value`.\n *\n * expect('hello').to.equal('hello');\n * expect(42).to.equal(42);\n * expect(1).to.not.equal(true);\n * expect({ foo: 'bar' }).to.not.equal({ foo: 'bar' });\n * expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });\n *\n * @name equal\n * @alias equals\n * @alias eq\n * @alias deep.equal\n * @param {Mixed} value\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertEqual (val, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n if (flag(this, 'deep')) {\n return this.eql(val);\n } else {\n this.assert(\n val === obj\n , 'expected #{this} to equal #{exp}'\n , 'expected #{this} to not equal #{exp}'\n , val\n , this._obj\n , true\n );\n }\n }\n\n Assertion.addMethod('equal', assertEqual);\n Assertion.addMethod('equals', assertEqual);\n Assertion.addMethod('eq', assertEqual);\n\n /**\n * ### .eql(value)\n *\n * Asserts that the target is deeply equal to `value`.\n *\n * expect({ foo: 'bar' }).to.eql({ foo: 'bar' });\n * expect([ 1, 2, 3 ]).to.eql([ 1, 2, 3 ]);\n *\n * @name eql\n * @alias eqls\n * @param {Mixed} value\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertEql(obj, msg) {\n if (msg) flag(this, 'message', msg);\n this.assert(\n _.eql(obj, flag(this, 'object'))\n , 'expected #{this} to deeply equal #{exp}'\n , 'expected #{this} to not deeply equal #{exp}'\n , obj\n , this._obj\n , true\n );\n }\n\n Assertion.addMethod('eql', assertEql);\n Assertion.addMethod('eqls', assertEql);\n\n /**\n * ### .above(value)\n *\n * Asserts that the target is greater than `value`.\n *\n * expect(10).to.be.above(5);\n *\n * Can also be used in conjunction with `length` to\n * assert a minimum length. The benefit being a\n * more informative error message than if the length\n * was supplied directly.\n *\n * expect('foo').to.have.length.above(2);\n * expect([ 1, 2, 3 ]).to.have.length.above(2);\n *\n * @name above\n * @alias gt\n * @alias greaterThan\n * @param {Number} value\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertAbove (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n if (flag(this, 'doLength')) {\n new Assertion(obj, msg).to.have.property('length');\n var len = obj.length;\n this.assert(\n len > n\n , 'expected #{this} to have a length above #{exp} but got #{act}'\n , 'expected #{this} to not have a length above #{exp}'\n , n\n , len\n );\n } else {\n this.assert(\n obj > n\n , 'expected #{this} to be above ' + n\n , 'expected #{this} to be at most ' + n\n );\n }\n }\n\n Assertion.addMethod('above', assertAbove);\n Assertion.addMethod('gt', assertAbove);\n Assertion.addMethod('greaterThan', assertAbove);\n\n /**\n * ### .least(value)\n *\n * Asserts that the target is greater than or equal to `value`.\n *\n * expect(10).to.be.at.least(10);\n *\n * Can also be used in conjunction with `length` to\n * assert a minimum length. The benefit being a\n * more informative error message than if the length\n * was supplied directly.\n *\n * expect('foo').to.have.length.of.at.least(2);\n * expect([ 1, 2, 3 ]).to.have.length.of.at.least(3);\n *\n * @name least\n * @alias gte\n * @param {Number} value\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertLeast (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n if (flag(this, 'doLength')) {\n new Assertion(obj, msg).to.have.property('length');\n var len = obj.length;\n this.assert(\n len >= n\n , 'expected #{this} to have a length at least #{exp} but got #{act}'\n , 'expected #{this} to have a length below #{exp}'\n , n\n , len\n );\n } else {\n this.assert(\n obj >= n\n , 'expected #{this} to be at least ' + n\n , 'expected #{this} to be below ' + n\n );\n }\n }\n\n Assertion.addMethod('least', assertLeast);\n Assertion.addMethod('gte', assertLeast);\n\n /**\n * ### .below(value)\n *\n * Asserts that the target is less than `value`.\n *\n * expect(5).to.be.below(10);\n *\n * Can also be used in conjunction with `length` to\n * assert a maximum length. The benefit being a\n * more informative error message than if the length\n * was supplied directly.\n *\n * expect('foo').to.have.length.below(4);\n * expect([ 1, 2, 3 ]).to.have.length.below(4);\n *\n * @name below\n * @alias lt\n * @alias lessThan\n * @param {Number} value\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertBelow (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n if (flag(this, 'doLength')) {\n new Assertion(obj, msg).to.have.property('length');\n var len = obj.length;\n this.assert(\n len < n\n , 'expected #{this} to have a length below #{exp} but got #{act}'\n , 'expected #{this} to not have a length below #{exp}'\n , n\n , len\n );\n } else {\n this.assert(\n obj < n\n , 'expected #{this} to be below ' + n\n , 'expected #{this} to be at least ' + n\n );\n }\n }\n\n Assertion.addMethod('below', assertBelow);\n Assertion.addMethod('lt', assertBelow);\n Assertion.addMethod('lessThan', assertBelow);\n\n /**\n * ### .most(value)\n *\n * Asserts that the target is less than or equal to `value`.\n *\n * expect(5).to.be.at.most(5);\n *\n * Can also be used in conjunction with `length` to\n * assert a maximum length. The benefit being a\n * more informative error message than if the length\n * was supplied directly.\n *\n * expect('foo').to.have.length.of.at.most(4);\n * expect([ 1, 2, 3 ]).to.have.length.of.at.most(3);\n *\n * @name most\n * @alias lte\n * @param {Number} value\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertMost (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n if (flag(this, 'doLength')) {\n new Assertion(obj, msg).to.have.property('length');\n var len = obj.length;\n this.assert(\n len <= n\n , 'expected #{this} to have a length at most #{exp} but got #{act}'\n , 'expected #{this} to have a length above #{exp}'\n , n\n , len\n );\n } else {\n this.assert(\n obj <= n\n , 'expected #{this} to be at most ' + n\n , 'expected #{this} to be above ' + n\n );\n }\n }\n\n Assertion.addMethod('most', assertMost);\n Assertion.addMethod('lte', assertMost);\n\n /**\n * ### .within(start, finish)\n *\n * Asserts that the target is within a range.\n *\n * expect(7).to.be.within(5,10);\n *\n * Can also be used in conjunction with `length` to\n * assert a length range. The benefit being a\n * more informative error message than if the length\n * was supplied directly.\n *\n * expect('foo').to.have.length.within(2,4);\n * expect([ 1, 2, 3 ]).to.have.length.within(2,4);\n *\n * @name within\n * @param {Number} start lowerbound inclusive\n * @param {Number} finish upperbound inclusive\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n Assertion.addMethod('within', function (start, finish, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , range = start + '..' + finish;\n if (flag(this, 'doLength')) {\n new Assertion(obj, msg).to.have.property('length');\n var len = obj.length;\n this.assert(\n len >= start && len <= finish\n , 'expected #{this} to have a length within ' + range\n , 'expected #{this} to not have a length within ' + range\n );\n } else {\n this.assert(\n obj >= start && obj <= finish\n , 'expected #{this} to be within ' + range\n , 'expected #{this} to not be within ' + range\n );\n }\n });\n\n /**\n * ### .instanceof(constructor)\n *\n * Asserts that the target is an instance of `constructor`.\n *\n * var Tea = function (name) { this.name = name; }\n * , Chai = new Tea('chai');\n *\n * expect(Chai).to.be.an.instanceof(Tea);\n * expect([ 1, 2, 3 ]).to.be.instanceof(Array);\n *\n * @name instanceof\n * @param {Constructor} constructor\n * @param {String} message _optional_\n * @alias instanceOf\n * @namespace BDD\n * @api public\n */\n\n function assertInstanceOf (constructor, msg) {\n if (msg) flag(this, 'message', msg);\n var name = _.getName(constructor);\n this.assert(\n flag(this, 'object') instanceof constructor\n , 'expected #{this} to be an instance of ' + name\n , 'expected #{this} to not be an instance of ' + name\n );\n };\n\n Assertion.addMethod('instanceof', assertInstanceOf);\n Assertion.addMethod('instanceOf', assertInstanceOf);\n\n /**\n * ### .property(name, [value])\n *\n * Asserts that the target has a property `name`, optionally asserting that\n * the value of that property is strictly equal to `value`.\n * If the `deep` flag is set, you can use dot- and bracket-notation for deep\n * references into objects and arrays.\n *\n * // simple referencing\n * var obj = { foo: 'bar' };\n * expect(obj).to.have.property('foo');\n * expect(obj).to.have.property('foo', 'bar');\n *\n * // deep referencing\n * var deepObj = {\n * green: { tea: 'matcha' }\n * , teas: [ 'chai', 'matcha', { tea: 'konacha' } ]\n * };\n *\n * expect(deepObj).to.have.deep.property('green.tea', 'matcha');\n * expect(deepObj).to.have.deep.property('teas[1]', 'matcha');\n * expect(deepObj).to.have.deep.property('teas[2].tea', 'konacha');\n *\n * You can also use an array as the starting point of a `deep.property`\n * assertion, or traverse nested arrays.\n *\n * var arr = [\n * [ 'chai', 'matcha', 'konacha' ]\n * , [ { tea: 'chai' }\n * , { tea: 'matcha' }\n * , { tea: 'konacha' } ]\n * ];\n *\n * expect(arr).to.have.deep.property('[0][1]', 'matcha');\n * expect(arr).to.have.deep.property('[1][2].tea', 'konacha');\n *\n * Furthermore, `property` changes the subject of the assertion\n * to be the value of that property from the original object. This\n * permits for further chainable assertions on that property.\n *\n * expect(obj).to.have.property('foo')\n * .that.is.a('string');\n * expect(deepObj).to.have.property('green')\n * .that.is.an('object')\n * .that.deep.equals({ tea: 'matcha' });\n * expect(deepObj).to.have.property('teas')\n * .that.is.an('array')\n * .with.deep.property('[2]')\n * .that.deep.equals({ tea: 'konacha' });\n *\n * Note that dots and bracket in `name` must be backslash-escaped when\n * the `deep` flag is set, while they must NOT be escaped when the `deep`\n * flag is not set.\n *\n * // simple referencing\n * var css = { '.link[target]': 42 };\n * expect(css).to.have.property('.link[target]', 42);\n *\n * // deep referencing\n * var deepCss = { '.link': { '[target]': 42 }};\n * expect(deepCss).to.have.deep.property('\\\\.link.\\\\[target\\\\]', 42);\n *\n * @name property\n * @alias deep.property\n * @param {String} name\n * @param {Mixed} value (optional)\n * @param {String} message _optional_\n * @returns value of property for chaining\n * @namespace BDD\n * @api public\n */\n\n Assertion.addMethod('property', function (name, val, msg) {\n if (msg) flag(this, 'message', msg);\n\n var isDeep = !!flag(this, 'deep')\n , descriptor = isDeep ? 'deep property ' : 'property '\n , negate = flag(this, 'negate')\n , obj = flag(this, 'object')\n , pathInfo = isDeep ? _.getPathInfo(name, obj) : null\n , hasProperty = isDeep\n ? pathInfo.exists\n : _.hasProperty(name, obj)\n , value = isDeep\n ? pathInfo.value\n : obj[name];\n\n if (negate && arguments.length > 1) {\n if (undefined === value) {\n msg = (msg != null) ? msg + ': ' : '';\n throw new Error(msg + _.inspect(obj) + ' has no ' + descriptor + _.inspect(name));\n }\n } else {\n this.assert(\n hasProperty\n , 'expected #{this} to have a ' + descriptor + _.inspect(name)\n , 'expected #{this} to not have ' + descriptor + _.inspect(name));\n }\n\n if (arguments.length > 1) {\n this.assert(\n val === value\n , 'expected #{this} to have a ' + descriptor + _.inspect(name) + ' of #{exp}, but got #{act}'\n , 'expected #{this} to not have a ' + descriptor + _.inspect(name) + ' of #{act}'\n , val\n , value\n );\n }\n\n flag(this, 'object', value);\n });\n\n\n /**\n * ### .ownProperty(name)\n *\n * Asserts that the target has an own property `name`.\n *\n * expect('test').to.have.ownProperty('length');\n *\n * @name ownProperty\n * @alias haveOwnProperty\n * @param {String} name\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertOwnProperty (name, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n this.assert(\n obj.hasOwnProperty(name)\n , 'expected #{this} to have own property ' + _.inspect(name)\n , 'expected #{this} to not have own property ' + _.inspect(name)\n );\n }\n\n Assertion.addMethod('ownProperty', assertOwnProperty);\n Assertion.addMethod('haveOwnProperty', assertOwnProperty);\n\n /**\n * ### .ownPropertyDescriptor(name[, descriptor[, message]])\n *\n * Asserts that the target has an own property descriptor `name`, that optionally matches `descriptor`.\n *\n * expect('test').to.have.ownPropertyDescriptor('length');\n * expect('test').to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 4 });\n * expect('test').not.to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 3 });\n * expect('test').ownPropertyDescriptor('length').to.have.property('enumerable', false);\n * expect('test').ownPropertyDescriptor('length').to.have.keys('value');\n *\n * @name ownPropertyDescriptor\n * @alias haveOwnPropertyDescriptor\n * @param {String} name\n * @param {Object} descriptor _optional_\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertOwnPropertyDescriptor (name, descriptor, msg) {\n if (typeof descriptor === 'string') {\n msg = descriptor;\n descriptor = null;\n }\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n var actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name);\n if (actualDescriptor && descriptor) {\n this.assert(\n _.eql(descriptor, actualDescriptor)\n , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to match ' + _.inspect(descriptor) + ', got ' + _.inspect(actualDescriptor)\n , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to not match ' + _.inspect(descriptor)\n , descriptor\n , actualDescriptor\n , true\n );\n } else {\n this.assert(\n actualDescriptor\n , 'expected #{this} to have an own property descriptor for ' + _.inspect(name)\n , 'expected #{this} to not have an own property descriptor for ' + _.inspect(name)\n );\n }\n flag(this, 'object', actualDescriptor);\n }\n\n Assertion.addMethod('ownPropertyDescriptor', assertOwnPropertyDescriptor);\n Assertion.addMethod('haveOwnPropertyDescriptor', assertOwnPropertyDescriptor);\n\n /**\n * ### .length\n *\n * Sets the `doLength` flag later used as a chain precursor to a value\n * comparison for the `length` property.\n *\n * expect('foo').to.have.length.above(2);\n * expect([ 1, 2, 3 ]).to.have.length.above(2);\n * expect('foo').to.have.length.below(4);\n * expect([ 1, 2, 3 ]).to.have.length.below(4);\n * expect('foo').to.have.length.within(2,4);\n * expect([ 1, 2, 3 ]).to.have.length.within(2,4);\n *\n * *Deprecation notice:* Using `length` as an assertion will be deprecated\n * in version 2.4.0 and removed in 3.0.0. Code using the old style of\n * asserting for `length` property value using `length(value)` should be\n * switched to use `lengthOf(value)` instead.\n *\n * @name length\n * @namespace BDD\n * @api public\n */\n\n /**\n * ### .lengthOf(value[, message])\n *\n * Asserts that the target's `length` property has\n * the expected value.\n *\n * expect([ 1, 2, 3]).to.have.lengthOf(3);\n * expect('foobar').to.have.lengthOf(6);\n *\n * @name lengthOf\n * @param {Number} length\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertLengthChain () {\n flag(this, 'doLength', true);\n }\n\n function assertLength (n, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n new Assertion(obj, msg).to.have.property('length');\n var len = obj.length;\n\n this.assert(\n len == n\n , 'expected #{this} to have a length of #{exp} but got #{act}'\n , 'expected #{this} to not have a length of #{act}'\n , n\n , len\n );\n }\n\n Assertion.addChainableMethod('length', assertLength, assertLengthChain);\n Assertion.addMethod('lengthOf', assertLength);\n\n /**\n * ### .match(regexp)\n *\n * Asserts that the target matches a regular expression.\n *\n * expect('foobar').to.match(/^foo/);\n *\n * @name match\n * @alias matches\n * @param {RegExp} RegularExpression\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n function assertMatch(re, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n this.assert(\n re.exec(obj)\n , 'expected #{this} to match ' + re\n , 'expected #{this} not to match ' + re\n );\n }\n\n Assertion.addMethod('match', assertMatch);\n Assertion.addMethod('matches', assertMatch);\n\n /**\n * ### .string(string)\n *\n * Asserts that the string target contains another string.\n *\n * expect('foobar').to.have.string('bar');\n *\n * @name string\n * @param {String} string\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n Assertion.addMethod('string', function (str, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n new Assertion(obj, msg).is.a('string');\n\n this.assert(\n ~obj.indexOf(str)\n , 'expected #{this} to contain ' + _.inspect(str)\n , 'expected #{this} to not contain ' + _.inspect(str)\n );\n });\n\n\n /**\n * ### .keys(key1, [key2], [...])\n *\n * Asserts that the target contains any or all of the passed-in keys.\n * Use in combination with `any`, `all`, `contains`, or `have` will affect\n * what will pass.\n *\n * When used in conjunction with `any`, at least one key that is passed\n * in must exist in the target object. This is regardless whether or not\n * the `have` or `contain` qualifiers are used. Note, either `any` or `all`\n * should be used in the assertion. If neither are used, the assertion is\n * defaulted to `all`.\n *\n * When both `all` and `contain` are used, the target object must have at\n * least all of the passed-in keys but may have more keys not listed.\n *\n * When both `all` and `have` are used, the target object must both contain\n * all of the passed-in keys AND the number of keys in the target object must\n * match the number of keys passed in (in other words, a target object must\n * have all and only all of the passed-in keys).\n *\n * expect({ foo: 1, bar: 2 }).to.have.any.keys('foo', 'baz');\n * expect({ foo: 1, bar: 2 }).to.have.any.keys('foo');\n * expect({ foo: 1, bar: 2 }).to.contain.any.keys('bar', 'baz');\n * expect({ foo: 1, bar: 2 }).to.contain.any.keys(['foo']);\n * expect({ foo: 1, bar: 2 }).to.contain.any.keys({'foo': 6});\n * expect({ foo: 1, bar: 2 }).to.have.all.keys(['bar', 'foo']);\n * expect({ foo: 1, bar: 2 }).to.have.all.keys({'bar': 6, 'foo': 7});\n * expect({ foo: 1, bar: 2, baz: 3 }).to.contain.all.keys(['bar', 'foo']);\n * expect({ foo: 1, bar: 2, baz: 3 }).to.contain.all.keys({'bar': 6});\n *\n *\n * @name keys\n * @alias key\n * @param {...String|Array|Object} keys\n * @namespace BDD\n * @api public\n */\n\n function assertKeys (keys) {\n var obj = flag(this, 'object')\n , str\n , ok = true\n , mixedArgsMsg = 'keys must be given single argument of Array|Object|String, or multiple String arguments';\n\n switch (_.type(keys)) {\n case \"array\":\n if (arguments.length > 1) throw (new Error(mixedArgsMsg));\n break;\n case \"object\":\n if (arguments.length > 1) throw (new Error(mixedArgsMsg));\n keys = Object.keys(keys);\n break;\n default:\n keys = Array.prototype.slice.call(arguments);\n }\n\n if (!keys.length) throw new Error('keys required');\n\n var actual = Object.keys(obj)\n , expected = keys\n , len = keys.length\n , any = flag(this, 'any')\n , all = flag(this, 'all');\n\n if (!any && !all) {\n all = true;\n }\n\n // Has any\n if (any) {\n var intersection = expected.filter(function(key) {\n return ~actual.indexOf(key);\n });\n ok = intersection.length > 0;\n }\n\n // Has all\n if (all) {\n ok = keys.every(function(key){\n return ~actual.indexOf(key);\n });\n if (!flag(this, 'negate') && !flag(this, 'contains')) {\n ok = ok && keys.length == actual.length;\n }\n }\n\n // Key string\n if (len > 1) {\n keys = keys.map(function(key){\n return _.inspect(key);\n });\n var last = keys.pop();\n if (all) {\n str = keys.join(', ') + ', and ' + last;\n }\n if (any) {\n str = keys.join(', ') + ', or ' + last;\n }\n } else {\n str = _.inspect(keys[0]);\n }\n\n // Form\n str = (len > 1 ? 'keys ' : 'key ') + str;\n\n // Have / include\n str = (flag(this, 'contains') ? 'contain ' : 'have ') + str;\n\n // Assertion\n this.assert(\n ok\n , 'expected #{this} to ' + str\n , 'expected #{this} to not ' + str\n , expected.slice(0).sort()\n , actual.sort()\n , true\n );\n }\n\n Assertion.addMethod('keys', assertKeys);\n Assertion.addMethod('key', assertKeys);\n\n /**\n * ### .throw(constructor)\n *\n * Asserts that the function target will throw a specific error, or specific type of error\n * (as determined using `instanceof`), optionally with a RegExp or string inclusion test\n * for the error's message.\n *\n * var err = new ReferenceError('This is a bad function.');\n * var fn = function () { throw err; }\n * expect(fn).to.throw(ReferenceError);\n * expect(fn).to.throw(Error);\n * expect(fn).to.throw(/bad function/);\n * expect(fn).to.not.throw('good function');\n * expect(fn).to.throw(ReferenceError, /bad function/);\n * expect(fn).to.throw(err);\n *\n * Please note that when a throw expectation is negated, it will check each\n * parameter independently, starting with error constructor type. The appropriate way\n * to check for the existence of a type of error but for a message that does not match\n * is to use `and`.\n *\n * expect(fn).to.throw(ReferenceError)\n * .and.not.throw(/good function/);\n *\n * @name throw\n * @alias throws\n * @alias Throw\n * @param {ErrorConstructor} constructor\n * @param {String|RegExp} expected error message\n * @param {String} message _optional_\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @returns error for chaining (null if no error)\n * @namespace BDD\n * @api public\n */\n\n function assertThrows (constructor, errMsg, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n new Assertion(obj, msg).is.a('function');\n\n var thrown = false\n , desiredError = null\n , name = null\n , thrownError = null;\n\n if (arguments.length === 0) {\n errMsg = null;\n constructor = null;\n } else if (constructor && (constructor instanceof RegExp || 'string' === typeof constructor)) {\n errMsg = constructor;\n constructor = null;\n } else if (constructor && constructor instanceof Error) {\n desiredError = constructor;\n constructor = null;\n errMsg = null;\n } else if (typeof constructor === 'function') {\n name = constructor.prototype.name;\n if (!name || (name === 'Error' && constructor !== Error)) {\n name = constructor.name || (new constructor()).name;\n }\n } else {\n constructor = null;\n }\n\n try {\n obj();\n } catch (err) {\n // first, check desired error\n if (desiredError) {\n this.assert(\n err === desiredError\n , 'expected #{this} to throw #{exp} but #{act} was thrown'\n , 'expected #{this} to not throw #{exp}'\n , (desiredError instanceof Error ? desiredError.toString() : desiredError)\n , (err instanceof Error ? err.toString() : err)\n );\n\n flag(this, 'object', err);\n return this;\n }\n\n // next, check constructor\n if (constructor) {\n this.assert(\n err instanceof constructor\n , 'expected #{this} to throw #{exp} but #{act} was thrown'\n , 'expected #{this} to not throw #{exp} but #{act} was thrown'\n , name\n , (err instanceof Error ? err.toString() : err)\n );\n\n if (!errMsg) {\n flag(this, 'object', err);\n return this;\n }\n }\n\n // next, check message\n var message = 'error' === _.type(err) && \"message\" in err\n ? err.message\n : '' + err;\n\n if ((message != null) && errMsg && errMsg instanceof RegExp) {\n this.assert(\n errMsg.exec(message)\n , 'expected #{this} to throw error matching #{exp} but got #{act}'\n , 'expected #{this} to throw error not matching #{exp}'\n , errMsg\n , message\n );\n\n flag(this, 'object', err);\n return this;\n } else if ((message != null) && errMsg && 'string' === typeof errMsg) {\n this.assert(\n ~message.indexOf(errMsg)\n , 'expected #{this} to throw error including #{exp} but got #{act}'\n , 'expected #{this} to throw error not including #{act}'\n , errMsg\n , message\n );\n\n flag(this, 'object', err);\n return this;\n } else {\n thrown = true;\n thrownError = err;\n }\n }\n\n var actuallyGot = ''\n , expectedThrown = name !== null\n ? name\n : desiredError\n ? '#{exp}' //_.inspect(desiredError)\n : 'an error';\n\n if (thrown) {\n actuallyGot = ' but #{act} was thrown'\n }\n\n this.assert(\n thrown === true\n , 'expected #{this} to throw ' + expectedThrown + actuallyGot\n , 'expected #{this} to not throw ' + expectedThrown + actuallyGot\n , (desiredError instanceof Error ? desiredError.toString() : desiredError)\n , (thrownError instanceof Error ? thrownError.toString() : thrownError)\n );\n\n flag(this, 'object', thrownError);\n };\n\n Assertion.addMethod('throw', assertThrows);\n Assertion.addMethod('throws', assertThrows);\n Assertion.addMethod('Throw', assertThrows);\n\n /**\n * ### .respondTo(method)\n *\n * Asserts that the object or class target will respond to a method.\n *\n * Klass.prototype.bar = function(){};\n * expect(Klass).to.respondTo('bar');\n * expect(obj).to.respondTo('bar');\n *\n * To check if a constructor will respond to a static function,\n * set the `itself` flag.\n *\n * Klass.baz = function(){};\n * expect(Klass).itself.to.respondTo('baz');\n *\n * @name respondTo\n * @alias respondsTo\n * @param {String} method\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function respondTo (method, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object')\n , itself = flag(this, 'itself')\n , context = ('function' === _.type(obj) && !itself)\n ? obj.prototype[method]\n : obj[method];\n\n this.assert(\n 'function' === typeof context\n , 'expected #{this} to respond to ' + _.inspect(method)\n , 'expected #{this} to not respond to ' + _.inspect(method)\n );\n }\n\n Assertion.addMethod('respondTo', respondTo);\n Assertion.addMethod('respondsTo', respondTo);\n\n /**\n * ### .itself\n *\n * Sets the `itself` flag, later used by the `respondTo` assertion.\n *\n * function Foo() {}\n * Foo.bar = function() {}\n * Foo.prototype.baz = function() {}\n *\n * expect(Foo).itself.to.respondTo('bar');\n * expect(Foo).itself.not.to.respondTo('baz');\n *\n * @name itself\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('itself', function () {\n flag(this, 'itself', true);\n });\n\n /**\n * ### .satisfy(method)\n *\n * Asserts that the target passes a given truth test.\n *\n * expect(1).to.satisfy(function(num) { return num > 0; });\n *\n * @name satisfy\n * @alias satisfies\n * @param {Function} matcher\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function satisfy (matcher, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n var result = matcher(obj);\n this.assert(\n result\n , 'expected #{this} to satisfy ' + _.objDisplay(matcher)\n , 'expected #{this} to not satisfy' + _.objDisplay(matcher)\n , this.negate ? false : true\n , result\n );\n }\n\n Assertion.addMethod('satisfy', satisfy);\n Assertion.addMethod('satisfies', satisfy);\n\n /**\n * ### .closeTo(expected, delta)\n *\n * Asserts that the target is equal `expected`, to within a +/- `delta` range.\n *\n * expect(1.5).to.be.closeTo(1, 0.5);\n *\n * @name closeTo\n * @alias approximately\n * @param {Number} expected\n * @param {Number} delta\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function closeTo(expected, delta, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n\n new Assertion(obj, msg).is.a('number');\n if (_.type(expected) !== 'number' || _.type(delta) !== 'number') {\n throw new Error('the arguments to closeTo or approximately must be numbers');\n }\n\n this.assert(\n Math.abs(obj - expected) <= delta\n , 'expected #{this} to be close to ' + expected + ' +/- ' + delta\n , 'expected #{this} not to be close to ' + expected + ' +/- ' + delta\n );\n }\n\n Assertion.addMethod('closeTo', closeTo);\n Assertion.addMethod('approximately', closeTo);\n\n function isSubsetOf(subset, superset, cmp) {\n return subset.every(function(elem) {\n if (!cmp) return superset.indexOf(elem) !== -1;\n\n return superset.some(function(elem2) {\n return cmp(elem, elem2);\n });\n })\n }\n\n /**\n * ### .members(set)\n *\n * Asserts that the target is a superset of `set`,\n * or that the target and `set` have the same strictly-equal (===) members.\n * Alternately, if the `deep` flag is set, set members are compared for deep\n * equality.\n *\n * expect([1, 2, 3]).to.include.members([3, 2]);\n * expect([1, 2, 3]).to.not.include.members([3, 2, 8]);\n *\n * expect([4, 2]).to.have.members([2, 4]);\n * expect([5, 2]).to.not.have.members([5, 2, 1]);\n *\n * expect([{ id: 1 }]).to.deep.include.members([{ id: 1 }]);\n *\n * @name members\n * @param {Array} set\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n Assertion.addMethod('members', function (subset, msg) {\n if (msg) flag(this, 'message', msg);\n var obj = flag(this, 'object');\n\n new Assertion(obj).to.be.an('array');\n new Assertion(subset).to.be.an('array');\n\n var cmp = flag(this, 'deep') ? _.eql : undefined;\n\n if (flag(this, 'contains')) {\n return this.assert(\n isSubsetOf(subset, obj, cmp)\n , 'expected #{this} to be a superset of #{act}'\n , 'expected #{this} to not be a superset of #{act}'\n , obj\n , subset\n );\n }\n\n this.assert(\n isSubsetOf(obj, subset, cmp) && isSubsetOf(subset, obj, cmp)\n , 'expected #{this} to have the same members as #{act}'\n , 'expected #{this} to not have the same members as #{act}'\n , obj\n , subset\n );\n });\n\n /**\n * ### .oneOf(list)\n *\n * Assert that a value appears somewhere in the top level of array `list`.\n *\n * expect('a').to.be.oneOf(['a', 'b', 'c']);\n * expect(9).to.not.be.oneOf(['z']);\n * expect([3]).to.not.be.oneOf([1, 2, [3]]);\n *\n * var three = [3];\n * // for object-types, contents are not compared\n * expect(three).to.not.be.oneOf([1, 2, [3]]);\n * // comparing references works\n * expect(three).to.be.oneOf([1, 2, three]);\n *\n * @name oneOf\n * @param {Array<*>} list\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function oneOf (list, msg) {\n if (msg) flag(this, 'message', msg);\n var expected = flag(this, 'object');\n new Assertion(list).to.be.an('array');\n\n this.assert(\n list.indexOf(expected) > -1\n , 'expected #{this} to be one of #{exp}'\n , 'expected #{this} to not be one of #{exp}'\n , list\n , expected\n );\n }\n\n Assertion.addMethod('oneOf', oneOf);\n\n\n /**\n * ### .change(function)\n *\n * Asserts that a function changes an object property\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val += 3 };\n * var noChangeFn = function() { return 'foo' + 'bar'; }\n * expect(fn).to.change(obj, 'val');\n * expect(noChangeFn).to.not.change(obj, 'val')\n *\n * @name change\n * @alias changes\n * @alias Change\n * @param {String} object\n * @param {String} property name\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertChanges (object, prop, msg) {\n if (msg) flag(this, 'message', msg);\n var fn = flag(this, 'object');\n new Assertion(object, msg).to.have.property(prop);\n new Assertion(fn).is.a('function');\n\n var initial = object[prop];\n fn();\n\n this.assert(\n initial !== object[prop]\n , 'expected .' + prop + ' to change'\n , 'expected .' + prop + ' to not change'\n );\n }\n\n Assertion.addChainableMethod('change', assertChanges);\n Assertion.addChainableMethod('changes', assertChanges);\n\n /**\n * ### .increase(function)\n *\n * Asserts that a function increases an object property\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 15 };\n * expect(fn).to.increase(obj, 'val');\n *\n * @name increase\n * @alias increases\n * @alias Increase\n * @param {String} object\n * @param {String} property name\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertIncreases (object, prop, msg) {\n if (msg) flag(this, 'message', msg);\n var fn = flag(this, 'object');\n new Assertion(object, msg).to.have.property(prop);\n new Assertion(fn).is.a('function');\n\n var initial = object[prop];\n fn();\n\n this.assert(\n object[prop] - initial > 0\n , 'expected .' + prop + ' to increase'\n , 'expected .' + prop + ' to not increase'\n );\n }\n\n Assertion.addChainableMethod('increase', assertIncreases);\n Assertion.addChainableMethod('increases', assertIncreases);\n\n /**\n * ### .decrease(function)\n *\n * Asserts that a function decreases an object property\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 5 };\n * expect(fn).to.decrease(obj, 'val');\n *\n * @name decrease\n * @alias decreases\n * @alias Decrease\n * @param {String} object\n * @param {String} property name\n * @param {String} message _optional_\n * @namespace BDD\n * @api public\n */\n\n function assertDecreases (object, prop, msg) {\n if (msg) flag(this, 'message', msg);\n var fn = flag(this, 'object');\n new Assertion(object, msg).to.have.property(prop);\n new Assertion(fn).is.a('function');\n\n var initial = object[prop];\n fn();\n\n this.assert(\n object[prop] - initial < 0\n , 'expected .' + prop + ' to decrease'\n , 'expected .' + prop + ' to not decrease'\n );\n }\n\n Assertion.addChainableMethod('decrease', assertDecreases);\n Assertion.addChainableMethod('decreases', assertDecreases);\n\n /**\n * ### .extensible\n *\n * Asserts that the target is extensible (can have new properties added to\n * it).\n *\n * var nonExtensibleObject = Object.preventExtensions({});\n * var sealedObject = Object.seal({});\n * var frozenObject = Object.freeze({});\n *\n * expect({}).to.be.extensible;\n * expect(nonExtensibleObject).to.not.be.extensible;\n * expect(sealedObject).to.not.be.extensible;\n * expect(frozenObject).to.not.be.extensible;\n *\n * @name extensible\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('extensible', function() {\n var obj = flag(this, 'object');\n\n // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError.\n // In ES6, a non-object argument will be treated as if it was a non-extensible ordinary object, simply return false.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible\n // The following provides ES6 behavior when a TypeError is thrown under ES5.\n\n var isExtensible;\n\n try {\n isExtensible = Object.isExtensible(obj);\n } catch (err) {\n if (err instanceof TypeError) isExtensible = false;\n else throw err;\n }\n\n this.assert(\n isExtensible\n , 'expected #{this} to be extensible'\n , 'expected #{this} to not be extensible'\n );\n });\n\n /**\n * ### .sealed\n *\n * Asserts that the target is sealed (cannot have new properties added to it\n * and its existing properties cannot be removed).\n *\n * var sealedObject = Object.seal({});\n * var frozenObject = Object.freeze({});\n *\n * expect(sealedObject).to.be.sealed;\n * expect(frozenObject).to.be.sealed;\n * expect({}).to.not.be.sealed;\n *\n * @name sealed\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('sealed', function() {\n var obj = flag(this, 'object');\n\n // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError.\n // In ES6, a non-object argument will be treated as if it was a sealed ordinary object, simply return true.\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed\n // The following provides ES6 behavior when a TypeError is thrown under ES5.\n\n var isSealed;\n\n try {\n isSealed = Object.isSealed(obj);\n } catch (err) {\n if (err instanceof TypeError) isSealed = true;\n else throw err;\n }\n\n this.assert(\n isSealed\n , 'expected #{this} to be sealed'\n , 'expected #{this} to not be sealed'\n );\n });\n\n /**\n * ### .frozen\n *\n * Asserts that the target is frozen (cannot have new properties added to it\n * and its existing properties cannot be modified).\n *\n * var frozenObject = Object.freeze({});\n *\n * expect(frozenObject).to.be.frozen;\n * expect({}).to.not.be.frozen;\n *\n * @name frozen\n * @namespace BDD\n * @api public\n */\n\n Assertion.addProperty('frozen', function() {\n var obj = flag(this, 'object');\n\n // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError.\n // In ES6, a non-object argument will be treated as if it was a frozen ordinary object, simply return true.\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen\n // The following provides ES6 behavior when a TypeError is thrown under ES5.\n\n var isFrozen;\n\n try {\n isFrozen = Object.isFrozen(obj);\n } catch (err) {\n if (err instanceof TypeError) isFrozen = true;\n else throw err;\n }\n\n this.assert(\n isFrozen\n , 'expected #{this} to be frozen'\n , 'expected #{this} to not be frozen'\n );\n });\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/core/assertions.js\n// module id = 43\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/core/assertions.js?");
448
449/***/ },
450/* 44 */
451/*!*********************************************!*\
452 !*** ./~/chai/lib/chai/interface/expect.js ***!
453 \*********************************************/
454/***/ function(module, exports) {
455
456 eval("/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\nmodule.exports = function (chai, util) {\n chai.expect = function (val, message) {\n return new chai.Assertion(val, message);\n };\n\n /**\n * ### .fail(actual, expected, [message], [operator])\n *\n * Throw a failure.\n *\n * @name fail\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @param {String} operator\n * @namespace Expect\n * @api public\n */\n\n chai.expect.fail = function (actual, expected, message, operator) {\n message = message || 'expect.fail()';\n throw new chai.AssertionError(message, {\n actual: actual\n , expected: expected\n , operator: operator\n }, chai.expect.fail);\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/interface/expect.js\n// module id = 44\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/interface/expect.js?");
457
458/***/ },
459/* 45 */
460/*!*********************************************!*\
461 !*** ./~/chai/lib/chai/interface/should.js ***!
462 \*********************************************/
463/***/ function(module, exports) {
464
465 eval("/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\nmodule.exports = function (chai, util) {\n var Assertion = chai.Assertion;\n\n function loadShould () {\n // explicitly define this method as function as to have it's name to include as `ssfi`\n function shouldGetter() {\n if (this instanceof String || this instanceof Number || this instanceof Boolean ) {\n return new Assertion(this.valueOf(), null, shouldGetter);\n }\n return new Assertion(this, null, shouldGetter);\n }\n function shouldSetter(value) {\n // See https://github.com/chaijs/chai/issues/86: this makes\n // `whatever.should = someValue` actually set `someValue`, which is\n // especially useful for `global.should = require('chai').should()`.\n //\n // Note that we have to use [[DefineProperty]] instead of [[Put]]\n // since otherwise we would trigger this very setter!\n Object.defineProperty(this, 'should', {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n // modify Object.prototype to have `should`\n Object.defineProperty(Object.prototype, 'should', {\n set: shouldSetter\n , get: shouldGetter\n , configurable: true\n });\n\n var should = {};\n\n /**\n * ### .fail(actual, expected, [message], [operator])\n *\n * Throw a failure.\n *\n * @name fail\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @param {String} operator\n * @namespace Should\n * @api public\n */\n\n should.fail = function (actual, expected, message, operator) {\n message = message || 'should.fail()';\n throw new chai.AssertionError(message, {\n actual: actual\n , expected: expected\n , operator: operator\n }, should.fail);\n };\n\n /**\n * ### .equal(actual, expected, [message])\n *\n * Asserts non-strict equality (`==`) of `actual` and `expected`.\n *\n * should.equal(3, '3', '== coerces values to strings');\n *\n * @name equal\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Should\n * @api public\n */\n\n should.equal = function (val1, val2, msg) {\n new Assertion(val1, msg).to.equal(val2);\n };\n\n /**\n * ### .throw(function, [constructor/string/regexp], [string/regexp], [message])\n *\n * Asserts that `function` will throw an error that is an instance of\n * `constructor`, or alternately that it will throw an error with message\n * matching `regexp`.\n *\n * should.throw(fn, 'function throws a reference error');\n * should.throw(fn, /function throws a reference error/);\n * should.throw(fn, ReferenceError);\n * should.throw(fn, ReferenceError, 'function throws a reference error');\n * should.throw(fn, ReferenceError, /function throws a reference error/);\n *\n * @name throw\n * @alias Throw\n * @param {Function} function\n * @param {ErrorConstructor} constructor\n * @param {RegExp} regexp\n * @param {String} message\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @namespace Should\n * @api public\n */\n\n should.Throw = function (fn, errt, errs, msg) {\n new Assertion(fn, msg).to.Throw(errt, errs);\n };\n\n /**\n * ### .exist\n *\n * Asserts that the target is neither `null` nor `undefined`.\n *\n * var foo = 'hi';\n *\n * should.exist(foo, 'foo exists');\n *\n * @name exist\n * @namespace Should\n * @api public\n */\n\n should.exist = function (val, msg) {\n new Assertion(val, msg).to.exist;\n }\n\n // negation\n should.not = {}\n\n /**\n * ### .not.equal(actual, expected, [message])\n *\n * Asserts non-strict inequality (`!=`) of `actual` and `expected`.\n *\n * should.not.equal(3, 4, 'these numbers are not equal');\n *\n * @name not.equal\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Should\n * @api public\n */\n\n should.not.equal = function (val1, val2, msg) {\n new Assertion(val1, msg).to.not.equal(val2);\n };\n\n /**\n * ### .throw(function, [constructor/regexp], [message])\n *\n * Asserts that `function` will _not_ throw an error that is an instance of\n * `constructor`, or alternately that it will not throw an error with message\n * matching `regexp`.\n *\n * should.not.throw(fn, Error, 'function does not throw');\n *\n * @name not.throw\n * @alias not.Throw\n * @param {Function} function\n * @param {ErrorConstructor} constructor\n * @param {RegExp} regexp\n * @param {String} message\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @namespace Should\n * @api public\n */\n\n should.not.Throw = function (fn, errt, errs, msg) {\n new Assertion(fn, msg).to.not.Throw(errt, errs);\n };\n\n /**\n * ### .not.exist\n *\n * Asserts that the target is neither `null` nor `undefined`.\n *\n * var bar = null;\n *\n * should.not.exist(bar, 'bar does not exist');\n *\n * @name not.exist\n * @namespace Should\n * @api public\n */\n\n should.not.exist = function (val, msg) {\n new Assertion(val, msg).to.not.exist;\n }\n\n should['throw'] = should['Throw'];\n should.not['throw'] = should.not['Throw'];\n\n return should;\n };\n\n chai.should = loadShould;\n chai.Should = loadShould;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/interface/should.js\n// module id = 45\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/interface/should.js?");
466
467/***/ },
468/* 46 */
469/*!*********************************************!*\
470 !*** ./~/chai/lib/chai/interface/assert.js ***!
471 \*********************************************/
472/***/ function(module, exports) {
473
474 eval("/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n\n\nmodule.exports = function (chai, util) {\n\n /*!\n * Chai dependencies.\n */\n\n var Assertion = chai.Assertion\n , flag = util.flag;\n\n /*!\n * Module export.\n */\n\n /**\n * ### assert(expression, message)\n *\n * Write your own test expressions.\n *\n * assert('foo' !== 'bar', 'foo is not bar');\n * assert(Array.isArray([]), 'empty arrays are arrays');\n *\n * @param {Mixed} expression to test for truthiness\n * @param {String} message to display on error\n * @name assert\n * @namespace Assert\n * @api public\n */\n\n var assert = chai.assert = function (express, errmsg) {\n var test = new Assertion(null, null, chai.assert);\n test.assert(\n express\n , errmsg\n , '[ negation message unavailable ]'\n );\n };\n\n /**\n * ### .fail(actual, expected, [message], [operator])\n *\n * Throw a failure. Node.js `assert` module-compatible.\n *\n * @name fail\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @param {String} operator\n * @namespace Assert\n * @api public\n */\n\n assert.fail = function (actual, expected, message, operator) {\n message = message || 'assert.fail()';\n throw new chai.AssertionError(message, {\n actual: actual\n , expected: expected\n , operator: operator\n }, assert.fail);\n };\n\n /**\n * ### .isOk(object, [message])\n *\n * Asserts that `object` is truthy.\n *\n * assert.isOk('everything', 'everything is ok');\n * assert.isOk(false, 'this will fail');\n *\n * @name isOk\n * @alias ok\n * @param {Mixed} object to test\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isOk = function (val, msg) {\n new Assertion(val, msg).is.ok;\n };\n\n /**\n * ### .isNotOk(object, [message])\n *\n * Asserts that `object` is falsy.\n *\n * assert.isNotOk('everything', 'this will fail');\n * assert.isNotOk(false, 'this will pass');\n *\n * @name isNotOk\n * @alias notOk\n * @param {Mixed} object to test\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotOk = function (val, msg) {\n new Assertion(val, msg).is.not.ok;\n };\n\n /**\n * ### .equal(actual, expected, [message])\n *\n * Asserts non-strict equality (`==`) of `actual` and `expected`.\n *\n * assert.equal(3, '3', '== coerces values to strings');\n *\n * @name equal\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.equal = function (act, exp, msg) {\n var test = new Assertion(act, msg, assert.equal);\n\n test.assert(\n exp == flag(test, 'object')\n , 'expected #{this} to equal #{exp}'\n , 'expected #{this} to not equal #{act}'\n , exp\n , act\n );\n };\n\n /**\n * ### .notEqual(actual, expected, [message])\n *\n * Asserts non-strict inequality (`!=`) of `actual` and `expected`.\n *\n * assert.notEqual(3, 4, 'these numbers are not equal');\n *\n * @name notEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notEqual = function (act, exp, msg) {\n var test = new Assertion(act, msg, assert.notEqual);\n\n test.assert(\n exp != flag(test, 'object')\n , 'expected #{this} to not equal #{exp}'\n , 'expected #{this} to equal #{act}'\n , exp\n , act\n );\n };\n\n /**\n * ### .strictEqual(actual, expected, [message])\n *\n * Asserts strict equality (`===`) of `actual` and `expected`.\n *\n * assert.strictEqual(true, true, 'these booleans are strictly equal');\n *\n * @name strictEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.strictEqual = function (act, exp, msg) {\n new Assertion(act, msg).to.equal(exp);\n };\n\n /**\n * ### .notStrictEqual(actual, expected, [message])\n *\n * Asserts strict inequality (`!==`) of `actual` and `expected`.\n *\n * assert.notStrictEqual(3, '3', 'no coercion for strict equality');\n *\n * @name notStrictEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notStrictEqual = function (act, exp, msg) {\n new Assertion(act, msg).to.not.equal(exp);\n };\n\n /**\n * ### .deepEqual(actual, expected, [message])\n *\n * Asserts that `actual` is deeply equal to `expected`.\n *\n * assert.deepEqual({ tea: 'green' }, { tea: 'green' });\n *\n * @name deepEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepEqual = function (act, exp, msg) {\n new Assertion(act, msg).to.eql(exp);\n };\n\n /**\n * ### .notDeepEqual(actual, expected, [message])\n *\n * Assert that `actual` is not deeply equal to `expected`.\n *\n * assert.notDeepEqual({ tea: 'green' }, { tea: 'jasmine' });\n *\n * @name notDeepEqual\n * @param {Mixed} actual\n * @param {Mixed} expected\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepEqual = function (act, exp, msg) {\n new Assertion(act, msg).to.not.eql(exp);\n };\n\n /**\n * ### .isAbove(valueToCheck, valueToBeAbove, [message])\n *\n * Asserts `valueToCheck` is strictly greater than (>) `valueToBeAbove`\n *\n * assert.isAbove(5, 2, '5 is strictly greater than 2');\n *\n * @name isAbove\n * @param {Mixed} valueToCheck\n * @param {Mixed} valueToBeAbove\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isAbove = function (val, abv, msg) {\n new Assertion(val, msg).to.be.above(abv);\n };\n\n /**\n * ### .isAtLeast(valueToCheck, valueToBeAtLeast, [message])\n *\n * Asserts `valueToCheck` is greater than or equal to (>=) `valueToBeAtLeast`\n *\n * assert.isAtLeast(5, 2, '5 is greater or equal to 2');\n * assert.isAtLeast(3, 3, '3 is greater or equal to 3');\n *\n * @name isAtLeast\n * @param {Mixed} valueToCheck\n * @param {Mixed} valueToBeAtLeast\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isAtLeast = function (val, atlst, msg) {\n new Assertion(val, msg).to.be.least(atlst);\n };\n\n /**\n * ### .isBelow(valueToCheck, valueToBeBelow, [message])\n *\n * Asserts `valueToCheck` is strictly less than (<) `valueToBeBelow`\n *\n * assert.isBelow(3, 6, '3 is strictly less than 6');\n *\n * @name isBelow\n * @param {Mixed} valueToCheck\n * @param {Mixed} valueToBeBelow\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isBelow = function (val, blw, msg) {\n new Assertion(val, msg).to.be.below(blw);\n };\n\n /**\n * ### .isAtMost(valueToCheck, valueToBeAtMost, [message])\n *\n * Asserts `valueToCheck` is less than or equal to (<=) `valueToBeAtMost`\n *\n * assert.isAtMost(3, 6, '3 is less than or equal to 6');\n * assert.isAtMost(4, 4, '4 is less than or equal to 4');\n *\n * @name isAtMost\n * @param {Mixed} valueToCheck\n * @param {Mixed} valueToBeAtMost\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isAtMost = function (val, atmst, msg) {\n new Assertion(val, msg).to.be.most(atmst);\n };\n\n /**\n * ### .isTrue(value, [message])\n *\n * Asserts that `value` is true.\n *\n * var teaServed = true;\n * assert.isTrue(teaServed, 'the tea has been served');\n *\n * @name isTrue\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isTrue = function (val, msg) {\n new Assertion(val, msg).is['true'];\n };\n\n /**\n * ### .isNotTrue(value, [message])\n *\n * Asserts that `value` is not true.\n *\n * var tea = 'tasty chai';\n * assert.isNotTrue(tea, 'great, time for tea!');\n *\n * @name isNotTrue\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotTrue = function (val, msg) {\n new Assertion(val, msg).to.not.equal(true);\n };\n\n /**\n * ### .isFalse(value, [message])\n *\n * Asserts that `value` is false.\n *\n * var teaServed = false;\n * assert.isFalse(teaServed, 'no tea yet? hmm...');\n *\n * @name isFalse\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isFalse = function (val, msg) {\n new Assertion(val, msg).is['false'];\n };\n\n /**\n * ### .isNotFalse(value, [message])\n *\n * Asserts that `value` is not false.\n *\n * var tea = 'tasty chai';\n * assert.isNotFalse(tea, 'great, time for tea!');\n *\n * @name isNotFalse\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotFalse = function (val, msg) {\n new Assertion(val, msg).to.not.equal(false);\n };\n\n /**\n * ### .isNull(value, [message])\n *\n * Asserts that `value` is null.\n *\n * assert.isNull(err, 'there was no error');\n *\n * @name isNull\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNull = function (val, msg) {\n new Assertion(val, msg).to.equal(null);\n };\n\n /**\n * ### .isNotNull(value, [message])\n *\n * Asserts that `value` is not null.\n *\n * var tea = 'tasty chai';\n * assert.isNotNull(tea, 'great, time for tea!');\n *\n * @name isNotNull\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotNull = function (val, msg) {\n new Assertion(val, msg).to.not.equal(null);\n };\n\n /**\n * ### .isNaN\n * Asserts that value is NaN\n *\n * assert.isNaN('foo', 'foo is NaN');\n *\n * @name isNaN\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNaN = function (val, msg) {\n new Assertion(val, msg).to.be.NaN;\n };\n\n /**\n * ### .isNotNaN\n * Asserts that value is not NaN\n *\n * assert.isNotNaN(4, '4 is not NaN');\n *\n * @name isNotNaN\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n assert.isNotNaN = function (val, msg) {\n new Assertion(val, msg).not.to.be.NaN;\n };\n\n /**\n * ### .isUndefined(value, [message])\n *\n * Asserts that `value` is `undefined`.\n *\n * var tea;\n * assert.isUndefined(tea, 'no tea defined');\n *\n * @name isUndefined\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isUndefined = function (val, msg) {\n new Assertion(val, msg).to.equal(undefined);\n };\n\n /**\n * ### .isDefined(value, [message])\n *\n * Asserts that `value` is not `undefined`.\n *\n * var tea = 'cup of chai';\n * assert.isDefined(tea, 'tea has been defined');\n *\n * @name isDefined\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isDefined = function (val, msg) {\n new Assertion(val, msg).to.not.equal(undefined);\n };\n\n /**\n * ### .isFunction(value, [message])\n *\n * Asserts that `value` is a function.\n *\n * function serveTea() { return 'cup of tea'; };\n * assert.isFunction(serveTea, 'great, we can have tea now');\n *\n * @name isFunction\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isFunction = function (val, msg) {\n new Assertion(val, msg).to.be.a('function');\n };\n\n /**\n * ### .isNotFunction(value, [message])\n *\n * Asserts that `value` is _not_ a function.\n *\n * var serveTea = [ 'heat', 'pour', 'sip' ];\n * assert.isNotFunction(serveTea, 'great, we have listed the steps');\n *\n * @name isNotFunction\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotFunction = function (val, msg) {\n new Assertion(val, msg).to.not.be.a('function');\n };\n\n /**\n * ### .isObject(value, [message])\n *\n * Asserts that `value` is an object of type 'Object' (as revealed by `Object.prototype.toString`).\n * _The assertion does not match subclassed objects._\n *\n * var selection = { name: 'Chai', serve: 'with spices' };\n * assert.isObject(selection, 'tea selection is an object');\n *\n * @name isObject\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isObject = function (val, msg) {\n new Assertion(val, msg).to.be.a('object');\n };\n\n /**\n * ### .isNotObject(value, [message])\n *\n * Asserts that `value` is _not_ an object of type 'Object' (as revealed by `Object.prototype.toString`).\n *\n * var selection = 'chai'\n * assert.isNotObject(selection, 'tea selection is not an object');\n * assert.isNotObject(null, 'null is not an object');\n *\n * @name isNotObject\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotObject = function (val, msg) {\n new Assertion(val, msg).to.not.be.a('object');\n };\n\n /**\n * ### .isArray(value, [message])\n *\n * Asserts that `value` is an array.\n *\n * var menu = [ 'green', 'chai', 'oolong' ];\n * assert.isArray(menu, 'what kind of tea do we want?');\n *\n * @name isArray\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isArray = function (val, msg) {\n new Assertion(val, msg).to.be.an('array');\n };\n\n /**\n * ### .isNotArray(value, [message])\n *\n * Asserts that `value` is _not_ an array.\n *\n * var menu = 'green|chai|oolong';\n * assert.isNotArray(menu, 'what kind of tea do we want?');\n *\n * @name isNotArray\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotArray = function (val, msg) {\n new Assertion(val, msg).to.not.be.an('array');\n };\n\n /**\n * ### .isString(value, [message])\n *\n * Asserts that `value` is a string.\n *\n * var teaOrder = 'chai';\n * assert.isString(teaOrder, 'order placed');\n *\n * @name isString\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isString = function (val, msg) {\n new Assertion(val, msg).to.be.a('string');\n };\n\n /**\n * ### .isNotString(value, [message])\n *\n * Asserts that `value` is _not_ a string.\n *\n * var teaOrder = 4;\n * assert.isNotString(teaOrder, 'order placed');\n *\n * @name isNotString\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotString = function (val, msg) {\n new Assertion(val, msg).to.not.be.a('string');\n };\n\n /**\n * ### .isNumber(value, [message])\n *\n * Asserts that `value` is a number.\n *\n * var cups = 2;\n * assert.isNumber(cups, 'how many cups');\n *\n * @name isNumber\n * @param {Number} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNumber = function (val, msg) {\n new Assertion(val, msg).to.be.a('number');\n };\n\n /**\n * ### .isNotNumber(value, [message])\n *\n * Asserts that `value` is _not_ a number.\n *\n * var cups = '2 cups please';\n * assert.isNotNumber(cups, 'how many cups');\n *\n * @name isNotNumber\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotNumber = function (val, msg) {\n new Assertion(val, msg).to.not.be.a('number');\n };\n\n /**\n * ### .isBoolean(value, [message])\n *\n * Asserts that `value` is a boolean.\n *\n * var teaReady = true\n * , teaServed = false;\n *\n * assert.isBoolean(teaReady, 'is the tea ready');\n * assert.isBoolean(teaServed, 'has tea been served');\n *\n * @name isBoolean\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isBoolean = function (val, msg) {\n new Assertion(val, msg).to.be.a('boolean');\n };\n\n /**\n * ### .isNotBoolean(value, [message])\n *\n * Asserts that `value` is _not_ a boolean.\n *\n * var teaReady = 'yep'\n * , teaServed = 'nope';\n *\n * assert.isNotBoolean(teaReady, 'is the tea ready');\n * assert.isNotBoolean(teaServed, 'has tea been served');\n *\n * @name isNotBoolean\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.isNotBoolean = function (val, msg) {\n new Assertion(val, msg).to.not.be.a('boolean');\n };\n\n /**\n * ### .typeOf(value, name, [message])\n *\n * Asserts that `value`'s type is `name`, as determined by\n * `Object.prototype.toString`.\n *\n * assert.typeOf({ tea: 'chai' }, 'object', 'we have an object');\n * assert.typeOf(['chai', 'jasmine'], 'array', 'we have an array');\n * assert.typeOf('tea', 'string', 'we have a string');\n * assert.typeOf(/tea/, 'regexp', 'we have a regular expression');\n * assert.typeOf(null, 'null', 'we have a null');\n * assert.typeOf(undefined, 'undefined', 'we have an undefined');\n *\n * @name typeOf\n * @param {Mixed} value\n * @param {String} name\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.typeOf = function (val, type, msg) {\n new Assertion(val, msg).to.be.a(type);\n };\n\n /**\n * ### .notTypeOf(value, name, [message])\n *\n * Asserts that `value`'s type is _not_ `name`, as determined by\n * `Object.prototype.toString`.\n *\n * assert.notTypeOf('tea', 'number', 'strings are not numbers');\n *\n * @name notTypeOf\n * @param {Mixed} value\n * @param {String} typeof name\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notTypeOf = function (val, type, msg) {\n new Assertion(val, msg).to.not.be.a(type);\n };\n\n /**\n * ### .instanceOf(object, constructor, [message])\n *\n * Asserts that `value` is an instance of `constructor`.\n *\n * var Tea = function (name) { this.name = name; }\n * , chai = new Tea('chai');\n *\n * assert.instanceOf(chai, Tea, 'chai is an instance of tea');\n *\n * @name instanceOf\n * @param {Object} object\n * @param {Constructor} constructor\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.instanceOf = function (val, type, msg) {\n new Assertion(val, msg).to.be.instanceOf(type);\n };\n\n /**\n * ### .notInstanceOf(object, constructor, [message])\n *\n * Asserts `value` is not an instance of `constructor`.\n *\n * var Tea = function (name) { this.name = name; }\n * , chai = new String('chai');\n *\n * assert.notInstanceOf(chai, Tea, 'chai is not an instance of tea');\n *\n * @name notInstanceOf\n * @param {Object} object\n * @param {Constructor} constructor\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notInstanceOf = function (val, type, msg) {\n new Assertion(val, msg).to.not.be.instanceOf(type);\n };\n\n /**\n * ### .include(haystack, needle, [message])\n *\n * Asserts that `haystack` includes `needle`. Works\n * for strings and arrays.\n *\n * assert.include('foobar', 'bar', 'foobar contains string \"bar\"');\n * assert.include([ 1, 2, 3 ], 3, 'array contains value');\n *\n * @name include\n * @param {Array|String} haystack\n * @param {Mixed} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.include = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.include).include(inc);\n };\n\n /**\n * ### .notInclude(haystack, needle, [message])\n *\n * Asserts that `haystack` does not include `needle`. Works\n * for strings and arrays.\n *\n * assert.notInclude('foobar', 'baz', 'string not include substring');\n * assert.notInclude([ 1, 2, 3 ], 4, 'array not include contain value');\n *\n * @name notInclude\n * @param {Array|String} haystack\n * @param {Mixed} needle\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notInclude = function (exp, inc, msg) {\n new Assertion(exp, msg, assert.notInclude).not.include(inc);\n };\n\n /**\n * ### .match(value, regexp, [message])\n *\n * Asserts that `value` matches the regular expression `regexp`.\n *\n * assert.match('foobar', /^foo/, 'regexp matches');\n *\n * @name match\n * @param {Mixed} value\n * @param {RegExp} regexp\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.match = function (exp, re, msg) {\n new Assertion(exp, msg).to.match(re);\n };\n\n /**\n * ### .notMatch(value, regexp, [message])\n *\n * Asserts that `value` does not match the regular expression `regexp`.\n *\n * assert.notMatch('foobar', /^foo/, 'regexp does not match');\n *\n * @name notMatch\n * @param {Mixed} value\n * @param {RegExp} regexp\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notMatch = function (exp, re, msg) {\n new Assertion(exp, msg).to.not.match(re);\n };\n\n /**\n * ### .property(object, property, [message])\n *\n * Asserts that `object` has a property named by `property`.\n *\n * assert.property({ tea: { green: 'matcha' }}, 'tea');\n *\n * @name property\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.property = function (obj, prop, msg) {\n new Assertion(obj, msg).to.have.property(prop);\n };\n\n /**\n * ### .notProperty(object, property, [message])\n *\n * Asserts that `object` does _not_ have a property named by `property`.\n *\n * assert.notProperty({ tea: { green: 'matcha' }}, 'coffee');\n *\n * @name notProperty\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notProperty = function (obj, prop, msg) {\n new Assertion(obj, msg).to.not.have.property(prop);\n };\n\n /**\n * ### .deepProperty(object, property, [message])\n *\n * Asserts that `object` has a property named by `property`, which can be a\n * string using dot- and bracket-notation for deep reference.\n *\n * assert.deepProperty({ tea: { green: 'matcha' }}, 'tea.green');\n *\n * @name deepProperty\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepProperty = function (obj, prop, msg) {\n new Assertion(obj, msg).to.have.deep.property(prop);\n };\n\n /**\n * ### .notDeepProperty(object, property, [message])\n *\n * Asserts that `object` does _not_ have a property named by `property`, which\n * can be a string using dot- and bracket-notation for deep reference.\n *\n * assert.notDeepProperty({ tea: { green: 'matcha' }}, 'tea.oolong');\n *\n * @name notDeepProperty\n * @param {Object} object\n * @param {String} property\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.notDeepProperty = function (obj, prop, msg) {\n new Assertion(obj, msg).to.not.have.deep.property(prop);\n };\n\n /**\n * ### .propertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a property named by `property` with value given\n * by `value`.\n *\n * assert.propertyVal({ tea: 'is good' }, 'tea', 'is good');\n *\n * @name propertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.propertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg).to.have.property(prop, val);\n };\n\n /**\n * ### .propertyNotVal(object, property, value, [message])\n *\n * Asserts that `object` has a property named by `property`, but with a value\n * different from that given by `value`.\n *\n * assert.propertyNotVal({ tea: 'is good' }, 'tea', 'is bad');\n *\n * @name propertyNotVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.propertyNotVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg).to.not.have.property(prop, val);\n };\n\n /**\n * ### .deepPropertyVal(object, property, value, [message])\n *\n * Asserts that `object` has a property named by `property` with value given\n * by `value`. `property` can use dot- and bracket-notation for deep\n * reference.\n *\n * assert.deepPropertyVal({ tea: { green: 'matcha' }}, 'tea.green', 'matcha');\n *\n * @name deepPropertyVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepPropertyVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg).to.have.deep.property(prop, val);\n };\n\n /**\n * ### .deepPropertyNotVal(object, property, value, [message])\n *\n * Asserts that `object` has a property named by `property`, but with a value\n * different from that given by `value`. `property` can use dot- and\n * bracket-notation for deep reference.\n *\n * assert.deepPropertyNotVal({ tea: { green: 'matcha' }}, 'tea.green', 'konacha');\n *\n * @name deepPropertyNotVal\n * @param {Object} object\n * @param {String} property\n * @param {Mixed} value\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.deepPropertyNotVal = function (obj, prop, val, msg) {\n new Assertion(obj, msg).to.not.have.deep.property(prop, val);\n };\n\n /**\n * ### .lengthOf(object, length, [message])\n *\n * Asserts that `object` has a `length` property with the expected value.\n *\n * assert.lengthOf([1,2,3], 3, 'array has length of 3');\n * assert.lengthOf('foobar', 6, 'string has length of 6');\n *\n * @name lengthOf\n * @param {Mixed} object\n * @param {Number} length\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.lengthOf = function (exp, len, msg) {\n new Assertion(exp, msg).to.have.length(len);\n };\n\n /**\n * ### .throws(function, [constructor/string/regexp], [string/regexp], [message])\n *\n * Asserts that `function` will throw an error that is an instance of\n * `constructor`, or alternately that it will throw an error with message\n * matching `regexp`.\n *\n * assert.throws(fn, 'function throws a reference error');\n * assert.throws(fn, /function throws a reference error/);\n * assert.throws(fn, ReferenceError);\n * assert.throws(fn, ReferenceError, 'function throws a reference error');\n * assert.throws(fn, ReferenceError, /function throws a reference error/);\n *\n * @name throws\n * @alias throw\n * @alias Throw\n * @param {Function} function\n * @param {ErrorConstructor} constructor\n * @param {RegExp} regexp\n * @param {String} message\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @namespace Assert\n * @api public\n */\n\n assert.throws = function (fn, errt, errs, msg) {\n if ('string' === typeof errt || errt instanceof RegExp) {\n errs = errt;\n errt = null;\n }\n\n var assertErr = new Assertion(fn, msg).to.throw(errt, errs);\n return flag(assertErr, 'object');\n };\n\n /**\n * ### .doesNotThrow(function, [constructor/regexp], [message])\n *\n * Asserts that `function` will _not_ throw an error that is an instance of\n * `constructor`, or alternately that it will not throw an error with message\n * matching `regexp`.\n *\n * assert.doesNotThrow(fn, Error, 'function does not throw');\n *\n * @name doesNotThrow\n * @param {Function} function\n * @param {ErrorConstructor} constructor\n * @param {RegExp} regexp\n * @param {String} message\n * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotThrow = function (fn, type, msg) {\n if ('string' === typeof type) {\n msg = type;\n type = null;\n }\n\n new Assertion(fn, msg).to.not.Throw(type);\n };\n\n /**\n * ### .operator(val1, operator, val2, [message])\n *\n * Compares two values using `operator`.\n *\n * assert.operator(1, '<', 2, 'everything is ok');\n * assert.operator(1, '>', 2, 'this will fail');\n *\n * @name operator\n * @param {Mixed} val1\n * @param {String} operator\n * @param {Mixed} val2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.operator = function (val, operator, val2, msg) {\n var ok;\n switch(operator) {\n case '==':\n ok = val == val2;\n break;\n case '===':\n ok = val === val2;\n break;\n case '>':\n ok = val > val2;\n break;\n case '>=':\n ok = val >= val2;\n break;\n case '<':\n ok = val < val2;\n break;\n case '<=':\n ok = val <= val2;\n break;\n case '!=':\n ok = val != val2;\n break;\n case '!==':\n ok = val !== val2;\n break;\n default:\n throw new Error('Invalid operator \"' + operator + '\"');\n }\n var test = new Assertion(ok, msg);\n test.assert(\n true === flag(test, 'object')\n , 'expected ' + util.inspect(val) + ' to be ' + operator + ' ' + util.inspect(val2)\n , 'expected ' + util.inspect(val) + ' to not be ' + operator + ' ' + util.inspect(val2) );\n };\n\n /**\n * ### .closeTo(actual, expected, delta, [message])\n *\n * Asserts that the target is equal `expected`, to within a +/- `delta` range.\n *\n * assert.closeTo(1.5, 1, 0.5, 'numbers are close');\n *\n * @name closeTo\n * @param {Number} actual\n * @param {Number} expected\n * @param {Number} delta\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.closeTo = function (act, exp, delta, msg) {\n new Assertion(act, msg).to.be.closeTo(exp, delta);\n };\n\n /**\n * ### .approximately(actual, expected, delta, [message])\n *\n * Asserts that the target is equal `expected`, to within a +/- `delta` range.\n *\n * assert.approximately(1.5, 1, 0.5, 'numbers are close');\n *\n * @name approximately\n * @param {Number} actual\n * @param {Number} expected\n * @param {Number} delta\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.approximately = function (act, exp, delta, msg) {\n new Assertion(act, msg).to.be.approximately(exp, delta);\n };\n\n /**\n * ### .sameMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` have the same members.\n * Order is not taken into account.\n *\n * assert.sameMembers([ 1, 2, 3 ], [ 2, 1, 3 ], 'same members');\n *\n * @name sameMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.sameMembers = function (set1, set2, msg) {\n new Assertion(set1, msg).to.have.same.members(set2);\n }\n\n /**\n * ### .sameDeepMembers(set1, set2, [message])\n *\n * Asserts that `set1` and `set2` have the same members - using a deep equality checking.\n * Order is not taken into account.\n *\n * assert.sameDeepMembers([ {b: 3}, {a: 2}, {c: 5} ], [ {c: 5}, {b: 3}, {a: 2} ], 'same deep members');\n *\n * @name sameDeepMembers\n * @param {Array} set1\n * @param {Array} set2\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.sameDeepMembers = function (set1, set2, msg) {\n new Assertion(set1, msg).to.have.same.deep.members(set2);\n }\n\n /**\n * ### .includeMembers(superset, subset, [message])\n *\n * Asserts that `subset` is included in `superset`.\n * Order is not taken into account.\n *\n * assert.includeMembers([ 1, 2, 3 ], [ 2, 1 ], 'include members');\n *\n * @name includeMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.includeMembers = function (superset, subset, msg) {\n new Assertion(superset, msg).to.include.members(subset);\n }\n\n /**\n * ### .includeDeepMembers(superset, subset, [message])\n *\n * Asserts that `subset` is included in `superset` - using deep equality checking.\n * Order is not taken into account.\n * Duplicates are ignored.\n *\n * assert.includeDeepMembers([ {a: 1}, {b: 2}, {c: 3} ], [ {b: 2}, {a: 1}, {b: 2} ], 'include deep members');\n *\n * @name includeDeepMembers\n * @param {Array} superset\n * @param {Array} subset\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.includeDeepMembers = function (superset, subset, msg) {\n new Assertion(superset, msg).to.include.deep.members(subset);\n }\n\n /**\n * ### .oneOf(inList, list, [message])\n *\n * Asserts that non-object, non-array value `inList` appears in the flat array `list`.\n *\n * assert.oneOf(1, [ 2, 1 ], 'Not found in list');\n *\n * @name oneOf\n * @param {*} inList\n * @param {Array<*>} list\n * @param {String} message\n * @namespace Assert\n * @api public\n */\n\n assert.oneOf = function (inList, list, msg) {\n new Assertion(inList, msg).to.be.oneOf(list);\n }\n\n /**\n * ### .changes(function, object, property)\n *\n * Asserts that a function changes the value of a property\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 22 };\n * assert.changes(fn, obj, 'val');\n *\n * @name changes\n * @param {Function} modifier function\n * @param {Object} object\n * @param {String} property name\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.changes = function (fn, obj, prop) {\n new Assertion(fn).to.change(obj, prop);\n }\n\n /**\n * ### .doesNotChange(function, object, property)\n *\n * Asserts that a function does not changes the value of a property\n *\n * var obj = { val: 10 };\n * var fn = function() { console.log('foo'); };\n * assert.doesNotChange(fn, obj, 'val');\n *\n * @name doesNotChange\n * @param {Function} modifier function\n * @param {Object} object\n * @param {String} property name\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotChange = function (fn, obj, prop) {\n new Assertion(fn).to.not.change(obj, prop);\n }\n\n /**\n * ### .increases(function, object, property)\n *\n * Asserts that a function increases an object property\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 13 };\n * assert.increases(fn, obj, 'val');\n *\n * @name increases\n * @param {Function} modifier function\n * @param {Object} object\n * @param {String} property name\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.increases = function (fn, obj, prop) {\n new Assertion(fn).to.increase(obj, prop);\n }\n\n /**\n * ### .doesNotIncrease(function, object, property)\n *\n * Asserts that a function does not increase object property\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 8 };\n * assert.doesNotIncrease(fn, obj, 'val');\n *\n * @name doesNotIncrease\n * @param {Function} modifier function\n * @param {Object} object\n * @param {String} property name\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotIncrease = function (fn, obj, prop) {\n new Assertion(fn).to.not.increase(obj, prop);\n }\n\n /**\n * ### .decreases(function, object, property)\n *\n * Asserts that a function decreases an object property\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 5 };\n * assert.decreases(fn, obj, 'val');\n *\n * @name decreases\n * @param {Function} modifier function\n * @param {Object} object\n * @param {String} property name\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.decreases = function (fn, obj, prop) {\n new Assertion(fn).to.decrease(obj, prop);\n }\n\n /**\n * ### .doesNotDecrease(function, object, property)\n *\n * Asserts that a function does not decreases an object property\n *\n * var obj = { val: 10 };\n * var fn = function() { obj.val = 15 };\n * assert.doesNotDecrease(fn, obj, 'val');\n *\n * @name doesNotDecrease\n * @param {Function} modifier function\n * @param {Object} object\n * @param {String} property name\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.doesNotDecrease = function (fn, obj, prop) {\n new Assertion(fn).to.not.decrease(obj, prop);\n }\n\n /*!\n * ### .ifError(object)\n *\n * Asserts if value is not a false value, and throws if it is a true value.\n * This is added to allow for chai to be a drop-in replacement for Node's\n * assert class.\n *\n * var err = new Error('I am a custom error');\n * assert.ifError(err); // Rethrows err!\n *\n * @name ifError\n * @param {Object} object\n * @namespace Assert\n * @api public\n */\n\n assert.ifError = function (val) {\n if (val) {\n throw(val);\n }\n };\n\n /**\n * ### .isExtensible(object)\n *\n * Asserts that `object` is extensible (can have new properties added to it).\n *\n * assert.isExtensible({});\n *\n * @name isExtensible\n * @alias extensible\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isExtensible = function (obj, msg) {\n new Assertion(obj, msg).to.be.extensible;\n };\n\n /**\n * ### .isNotExtensible(object)\n *\n * Asserts that `object` is _not_ extensible.\n *\n * var nonExtensibleObject = Object.preventExtensions({});\n * var sealedObject = Object.seal({});\n * var frozenObject = Object.freese({});\n *\n * assert.isNotExtensible(nonExtensibleObject);\n * assert.isNotExtensible(sealedObject);\n * assert.isNotExtensible(frozenObject);\n *\n * @name isNotExtensible\n * @alias notExtensible\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isNotExtensible = function (obj, msg) {\n new Assertion(obj, msg).to.not.be.extensible;\n };\n\n /**\n * ### .isSealed(object)\n *\n * Asserts that `object` is sealed (cannot have new properties added to it\n * and its existing properties cannot be removed).\n *\n * var sealedObject = Object.seal({});\n * var frozenObject = Object.seal({});\n *\n * assert.isSealed(sealedObject);\n * assert.isSealed(frozenObject);\n *\n * @name isSealed\n * @alias sealed\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isSealed = function (obj, msg) {\n new Assertion(obj, msg).to.be.sealed;\n };\n\n /**\n * ### .isNotSealed(object)\n *\n * Asserts that `object` is _not_ sealed.\n *\n * assert.isNotSealed({});\n *\n * @name isNotSealed\n * @alias notSealed\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isNotSealed = function (obj, msg) {\n new Assertion(obj, msg).to.not.be.sealed;\n };\n\n /**\n * ### .isFrozen(object)\n *\n * Asserts that `object` is frozen (cannot have new properties added to it\n * and its existing properties cannot be modified).\n *\n * var frozenObject = Object.freeze({});\n * assert.frozen(frozenObject);\n *\n * @name isFrozen\n * @alias frozen\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isFrozen = function (obj, msg) {\n new Assertion(obj, msg).to.be.frozen;\n };\n\n /**\n * ### .isNotFrozen(object)\n *\n * Asserts that `object` is _not_ frozen.\n *\n * assert.isNotFrozen({});\n *\n * @name isNotFrozen\n * @alias notFrozen\n * @param {Object} object\n * @param {String} message _optional_\n * @namespace Assert\n * @api public\n */\n\n assert.isNotFrozen = function (obj, msg) {\n new Assertion(obj, msg).to.not.be.frozen;\n };\n\n /*!\n * Aliases.\n */\n\n (function alias(name, as){\n assert[as] = assert[name];\n return alias;\n })\n ('isOk', 'ok')\n ('isNotOk', 'notOk')\n ('throws', 'throw')\n ('throws', 'Throw')\n ('isExtensible', 'extensible')\n ('isNotExtensible', 'notExtensible')\n ('isSealed', 'sealed')\n ('isNotSealed', 'notSealed')\n ('isFrozen', 'frozen')\n ('isNotFrozen', 'notFrozen');\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/chai/lib/chai/interface/assert.js\n// module id = 46\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/chai/lib/chai/interface/assert.js?");
475
476/***/ },
477/* 47 */
478/*!*******************************************!*\
479 !*** ./~/bluebird/js/release/bluebird.js ***!
480 \*******************************************/
481/***/ function(module, exports, __webpack_require__) {
482
483 eval("\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = __webpack_require__(/*! ./promise */ 48)();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/bluebird.js\n// module id = 47\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/bluebird.js?");
484
485/***/ },
486/* 48 */
487/*!******************************************!*\
488 !*** ./~/bluebird/js/release/promise.js ***!
489 \******************************************/
490/***/ function(module, exports, __webpack_require__) {
491
492 eval("/* WEBPACK VAR INJECTION */(function(process) {\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = __webpack_require__(/*! ./util */ 50);\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = __webpack_require__(/*! ./es5 */ 51);\nvar Async = __webpack_require__(/*! ./async */ 52);\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = __webpack_require__(/*! ./errors */ 57);\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = __webpack_require__(/*! ./thenables */ 58)(Promise, INTERNAL);\nvar PromiseArray =\n __webpack_require__(/*! ./promise_array */ 59)(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = __webpack_require__(/*! ./context */ 60)(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = __webpack_require__(/*! ./debuggability */ 61)(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n __webpack_require__(/*! ./finally */ 62)(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = __webpack_require__(/*! ./catch_filter */ 63)(NEXT_FILTER);\nvar nodebackForPromise = __webpack_require__(/*! ./nodeback */ 64);\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n__webpack_require__(/*! ./method */ 65)(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n__webpack_require__(/*! ./bind */ 66)(Promise, INTERNAL, tryConvertToPromise, debug);\n__webpack_require__(/*! ./cancel */ 67)(Promise, PromiseArray, apiRejection, debug);\n__webpack_require__(/*! ./direct_resolve */ 68)(Promise);\n__webpack_require__(/*! ./synchronous_inspection */ 69)(Promise);\n__webpack_require__(/*! ./join */ 70)(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.0\";\n__webpack_require__(/*! ./map.js */ 71)(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n__webpack_require__(/*! ./call_get.js */ 72)(Promise);\n__webpack_require__(/*! ./using.js */ 73)(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n__webpack_require__(/*! ./timers.js */ 74)(Promise, INTERNAL, debug);\n__webpack_require__(/*! ./generators.js */ 75)(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n__webpack_require__(/*! ./nodeify.js */ 76)(Promise);\n__webpack_require__(/*! ./promisify.js */ 77)(Promise, INTERNAL);\n__webpack_require__(/*! ./props.js */ 78)(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n__webpack_require__(/*! ./race.js */ 79)(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n__webpack_require__(/*! ./reduce.js */ 80)(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n__webpack_require__(/*! ./settle.js */ 81)(Promise, PromiseArray, debug);\n__webpack_require__(/*! ./some.js */ 82)(Promise, PromiseArray, apiRejection);\n__webpack_require__(/*! ./filter.js */ 83)(Promise, INTERNAL);\n__webpack_require__(/*! ./each.js */ 84)(Promise, INTERNAL);\n__webpack_require__(/*! ./any.js */ 85)(Promise);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/promise.js\n// module id = 48\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/promise.js?");
493
494/***/ },
495/* 49 */
496/*!******************************!*\
497 !*** ./~/process/browser.js ***!
498 \******************************/
499/***/ function(module, exports) {
500
501 eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 49\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/process/browser.js?");
502
503/***/ },
504/* 50 */
505/*!***************************************!*\
506 !*** ./~/bluebird/js/release/util.js ***!
507 \***************************************/
508/***/ function(module, exports, __webpack_require__) {
509
510 eval("/* WEBPACK VAR INJECTION */(function(global, process) {\"use strict\";\nvar es5 = __webpack_require__(/*! ./es5 */ 51);\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var l = 8;\n while (l--) new FakeConstructor();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\";\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version = process.versions.node.split(\".\").map(Number);\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(/*! ./../../../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/util.js\n// module id = 50\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/util.js?");
511
512/***/ },
513/* 51 */
514/*!**************************************!*\
515 !*** ./~/bluebird/js/release/es5.js ***!
516 \**************************************/
517/***/ function(module, exports) {
518
519 eval("var isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/es5.js\n// module id = 51\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/es5.js?");
520
521/***/ },
522/* 52 */
523/*!****************************************!*\
524 !*** ./~/bluebird/js/release/async.js ***!
525 \****************************************/
526/***/ function(module, exports, __webpack_require__) {
527
528 eval("/* WEBPACK VAR INJECTION */(function(process) {\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = __webpack_require__(/*! ./schedule */ 53);\nvar Queue = __webpack_require__(/*! ./queue */ 56);\nvar util = __webpack_require__(/*! ./util */ 50);\n\nfunction Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n this.drainQueues = function () {\n self._drainQueues();\n };\n this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n return this._customScheduler;\n};\n\nAsync.prototype.enableTrampoline = function() {\n this._trampolineEnabled = true;\n};\n\nAsync.prototype.disableTrampolineIfNecessary = function() {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n};\n\nAsync.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n fn = function () { throw arg; };\n }\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function() {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function() {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n this._queueTick();\n}\n\nif (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n} else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n setTimeout(function() {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function(promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function() {\n promise._settlePromises();\n });\n }\n };\n}\n\nAsync.prototype._drainQueue = function(queue) {\n while (queue.length() > 0) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n continue;\n }\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n};\n\nAsync.prototype._drainQueues = function () {\n this._drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n this._drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/async.js\n// module id = 52\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/async.js?");
529
530/***/ },
531/* 53 */
532/*!*******************************************!*\
533 !*** ./~/bluebird/js/release/schedule.js ***!
534 \*******************************************/
535/***/ function(module, exports, __webpack_require__) {
536
537 eval("/* WEBPACK VAR INJECTION */(function(global, process, setImmediate) {\"use strict\";\nvar util = __webpack_require__(/*! ./util */ 50);\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(/*! ./../../../process/browser.js */ 49), __webpack_require__(/*! ./../../../timers-browserify/main.js */ 54).setImmediate))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/schedule.js\n// module id = 53\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/schedule.js?");
538
539/***/ },
540/* 54 */
541/*!*************************************!*\
542 !*** ./~/timers-browserify/main.js ***!
543 \*************************************/
544/***/ function(module, exports, __webpack_require__) {
545
546 eval("var apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(/*! setimmediate */ 55);\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/timers-browserify/main.js\n// module id = 54\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/timers-browserify/main.js?");
547
548/***/ },
549/* 55 */
550/*!****************************************!*\
551 !*** ./~/setimmediate/setImmediate.js ***!
552 \****************************************/
553/***/ function(module, exports, __webpack_require__) {
554
555 eval("/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(/*! ./../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/setimmediate/setImmediate.js\n// module id = 55\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/setimmediate/setImmediate.js?");
556
557/***/ },
558/* 56 */
559/*!****************************************!*\
560 !*** ./~/bluebird/js/release/queue.js ***!
561 \****************************************/
562/***/ function(module, exports) {
563
564 eval("\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/queue.js\n// module id = 56\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/queue.js?");
565
566/***/ },
567/* 57 */
568/*!*****************************************!*\
569 !*** ./~/bluebird/js/release/errors.js ***!
570 \*****************************************/
571/***/ function(module, exports, __webpack_require__) {
572
573 eval("\"use strict\";\nvar es5 = __webpack_require__(/*! ./es5 */ 51);\nvar Objectfreeze = es5.freeze;\nvar util = __webpack_require__(/*! ./util */ 50);\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/errors.js\n// module id = 57\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/errors.js?");
574
575/***/ },
576/* 58 */
577/*!********************************************!*\
578 !*** ./~/bluebird/js/release/thenables.js ***!
579 \********************************************/
580/***/ function(module, exports, __webpack_require__) {
581
582 eval("\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = __webpack_require__(/*! ./util */ 50);\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/thenables.js\n// module id = 58\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/thenables.js?");
583
584/***/ },
585/* 59 */
586/*!************************************************!*\
587 !*** ./~/bluebird/js/release/promise_array.js ***!
588 \************************************************/
589/***/ function(module, exports, __webpack_require__) {
590
591 eval("\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = __webpack_require__(/*! ./util */ 50);\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/promise_array.js\n// module id = 59\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/promise_array.js?");
592
593/***/ },
594/* 60 */
595/*!******************************************!*\
596 !*** ./~/bluebird/js/release/context.js ***!
597 \******************************************/
598/***/ function(module, exports) {
599
600 eval("\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/context.js\n// module id = 60\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/context.js?");
601
602/***/ },
603/* 61 */
604/*!************************************************!*\
605 !*** ./~/bluebird/js/release/debuggability.js ***!
606 \************************************************/
607/***/ function(module, exports, __webpack_require__) {
608
609 eval("/* WEBPACK VAR INJECTION */(function(process) {\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = __webpack_require__(/*! ./errors */ 57).Warning;\nvar util = __webpack_require__(/*! ./util */ 50);\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (false ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n async.invokeLater(this._notifyUnhandledRejection, this, undefined);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new CustomEvent(name.toLowerCase(), {\n detail: event,\n cancelable: true\n });\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/debuggability.js\n// module id = 61\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/debuggability.js?");
610
611/***/ },
612/* 62 */
613/*!******************************************!*\
614 !*** ./~/bluebird/js/release/finally.js ***!
615 \******************************************/
616/***/ function(module, exports, __webpack_require__) {
617
618 eval("\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = __webpack_require__(/*! ./util */ 50);\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = __webpack_require__(/*! ./catch_filter */ 63)(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/finally.js\n// module id = 62\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/finally.js?");
619
620/***/ },
621/* 63 */
622/*!***********************************************!*\
623 !*** ./~/bluebird/js/release/catch_filter.js ***!
624 \***********************************************/
625/***/ function(module, exports, __webpack_require__) {
626
627 eval("\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = __webpack_require__(/*! ./util */ 50);\nvar getKeys = __webpack_require__(/*! ./es5 */ 51).keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/catch_filter.js\n// module id = 63\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/catch_filter.js?");
628
629/***/ },
630/* 64 */
631/*!*******************************************!*\
632 !*** ./~/bluebird/js/release/nodeback.js ***!
633 \*******************************************/
634/***/ function(module, exports, __webpack_require__) {
635
636 eval("\"use strict\";\nvar util = __webpack_require__(/*! ./util */ 50);\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = __webpack_require__(/*! ./errors */ 57);\nvar OperationalError = errors.OperationalError;\nvar es5 = __webpack_require__(/*! ./es5 */ 51);\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var $_len = arguments.length;var args = new Array(Math.max($_len - 1, 0)); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];};\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/nodeback.js\n// module id = 64\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/nodeback.js?");
637
638/***/ },
639/* 65 */
640/*!*****************************************!*\
641 !*** ./~/bluebird/js/release/method.js ***!
642 \*****************************************/
643/***/ function(module, exports, __webpack_require__) {
644
645 eval("\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = __webpack_require__(/*! ./util */ 50);\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/method.js\n// module id = 65\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/method.js?");
646
647/***/ },
648/* 66 */
649/*!***************************************!*\
650 !*** ./~/bluebird/js/release/bind.js ***!
651 \***************************************/
652/***/ function(module, exports) {
653
654 eval("\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/bind.js\n// module id = 66\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/bind.js?");
655
656/***/ },
657/* 67 */
658/*!*****************************************!*\
659 !*** ./~/bluebird/js/release/cancel.js ***!
660 \*****************************************/
661/***/ function(module, exports, __webpack_require__) {
662
663 eval("\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = __webpack_require__(/*! ./util */ 50);\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/cancel.js\n// module id = 67\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/cancel.js?");
664
665/***/ },
666/* 68 */
667/*!*************************************************!*\
668 !*** ./~/bluebird/js/release/direct_resolve.js ***!
669 \*************************************************/
670/***/ function(module, exports) {
671
672 eval("\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/direct_resolve.js\n// module id = 68\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/direct_resolve.js?");
673
674/***/ },
675/* 69 */
676/*!*********************************************************!*\
677 !*** ./~/bluebird/js/release/synchronous_inspection.js ***!
678 \*********************************************************/
679/***/ function(module, exports) {
680
681 eval("\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/synchronous_inspection.js\n// module id = 69\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/synchronous_inspection.js?");
682
683/***/ },
684/* 70 */
685/*!***************************************!*\
686 !*** ./~/bluebird/js/release/join.js ***!
687 \***************************************/
688/***/ function(module, exports, __webpack_require__) {
689
690 eval("\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = __webpack_require__(/*! ./util */ 50);\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len; ++$_i) {args[$_i] = arguments[$_i];};\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/join.js\n// module id = 70\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/join.js?");
691
692/***/ },
693/* 71 */
694/*!**************************************!*\
695 !*** ./~/bluebird/js/release/map.js ***!
696 \**************************************/
697/***/ function(module, exports, __webpack_require__) {
698
699 eval("\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = __webpack_require__(/*! ./util */ 50);\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/map.js\n// module id = 71\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/map.js?");
700
701/***/ },
702/* 72 */
703/*!*******************************************!*\
704 !*** ./~/bluebird/js/release/call_get.js ***!
705 \*******************************************/
706/***/ function(module, exports, __webpack_require__) {
707
708 eval("\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = __webpack_require__(/*! ./util */ 50);\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var $_len = arguments.length;var args = new Array(Math.max($_len - 1, 0)); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];};\n if (true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/call_get.js\n// module id = 72\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/call_get.js?");
709
710/***/ },
711/* 73 */
712/*!****************************************!*\
713 !*** ./~/bluebird/js/release/using.js ***!
714 \****************************************/
715/***/ function(module, exports, __webpack_require__) {
716
717 eval("\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = __webpack_require__(/*! ./util */ 50);\n var TypeError = __webpack_require__(/*! ./errors */ 57).TypeError;\n var inherits = __webpack_require__(/*! ./util */ 50).inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/using.js\n// module id = 73\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/using.js?");
718
719/***/ },
720/* 74 */
721/*!*****************************************!*\
722 !*** ./~/bluebird/js/release/timers.js ***!
723 \*****************************************/
724/***/ function(module, exports, __webpack_require__) {
725
726 eval("\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = __webpack_require__(/*! ./util */ 50);\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/timers.js\n// module id = 74\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/timers.js?");
727
728/***/ },
729/* 75 */
730/*!*********************************************!*\
731 !*** ./~/bluebird/js/release/generators.js ***!
732 \*********************************************/
733/***/ function(module, exports, __webpack_require__) {
734
735 eval("\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = __webpack_require__(/*! ./errors */ 57);\nvar TypeError = errors.TypeError;\nvar util = __webpack_require__(/*! ./util */ 50);\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/generators.js\n// module id = 75\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/generators.js?");
736
737/***/ },
738/* 76 */
739/*!******************************************!*\
740 !*** ./~/bluebird/js/release/nodeify.js ***!
741 \******************************************/
742/***/ function(module, exports, __webpack_require__) {
743
744 eval("\"use strict\";\nmodule.exports = function(Promise) {\nvar util = __webpack_require__(/*! ./util */ 50);\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/nodeify.js\n// module id = 76\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/nodeify.js?");
745
746/***/ },
747/* 77 */
748/*!********************************************!*\
749 !*** ./~/bluebird/js/release/promisify.js ***!
750 \********************************************/
751/***/ function(module, exports, __webpack_require__) {
752
753 eval("\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = __webpack_require__(/*! ./util */ 50);\nvar nodebackForPromise = __webpack_require__(/*! ./nodeback */ 64);\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = __webpack_require__(/*! ./errors */ 57).TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/promisify.js\n// module id = 77\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/promisify.js?");
754
755/***/ },
756/* 78 */
757/*!****************************************!*\
758 !*** ./~/bluebird/js/release/props.js ***!
759 \****************************************/
760/***/ function(module, exports, __webpack_require__) {
761
762 eval("\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = __webpack_require__(/*! ./util */ 50);\nvar isObject = util.isObject;\nvar es5 = __webpack_require__(/*! ./es5 */ 51);\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/props.js\n// module id = 78\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/props.js?");
763
764/***/ },
765/* 79 */
766/*!***************************************!*\
767 !*** ./~/bluebird/js/release/race.js ***!
768 \***************************************/
769/***/ function(module, exports, __webpack_require__) {
770
771 eval("\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = __webpack_require__(/*! ./util */ 50);\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/race.js\n// module id = 79\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/race.js?");
772
773/***/ },
774/* 80 */
775/*!*****************************************!*\
776 !*** ./~/bluebird/js/release/reduce.js ***!
777 \*****************************************/
778/***/ function(module, exports, __webpack_require__) {
779
780 eval("\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = __webpack_require__(/*! ./util */ 50);\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/reduce.js\n// module id = 80\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/reduce.js?");
781
782/***/ },
783/* 81 */
784/*!*****************************************!*\
785 !*** ./~/bluebird/js/release/settle.js ***!
786 \*****************************************/
787/***/ function(module, exports, __webpack_require__) {
788
789 eval("\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = __webpack_require__(/*! ./util */ 50);\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/settle.js\n// module id = 81\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/settle.js?");
790
791/***/ },
792/* 82 */
793/*!***************************************!*\
794 !*** ./~/bluebird/js/release/some.js ***!
795 \***************************************/
796/***/ function(module, exports, __webpack_require__) {
797
798 eval("\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = __webpack_require__(/*! ./util */ 50);\nvar RangeError = __webpack_require__(/*! ./errors */ 57).RangeError;\nvar AggregateError = __webpack_require__(/*! ./errors */ 57).AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/some.js\n// module id = 82\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/some.js?");
799
800/***/ },
801/* 83 */
802/*!*****************************************!*\
803 !*** ./~/bluebird/js/release/filter.js ***!
804 \*****************************************/
805/***/ function(module, exports) {
806
807 eval("\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/filter.js\n// module id = 83\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/filter.js?");
808
809/***/ },
810/* 84 */
811/*!***************************************!*\
812 !*** ./~/bluebird/js/release/each.js ***!
813 \***************************************/
814/***/ function(module, exports) {
815
816 eval("\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/each.js\n// module id = 84\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/each.js?");
817
818/***/ },
819/* 85 */
820/*!**************************************!*\
821 !*** ./~/bluebird/js/release/any.js ***!
822 \**************************************/
823/***/ function(module, exports) {
824
825 eval("\"use strict\";\nmodule.exports = function(Promise) {\nvar SomePromiseArray = Promise._SomePromiseArray;\nfunction any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n}\n\nPromise.any = function (promises) {\n return any(promises);\n};\n\nPromise.prototype.any = function () {\n return any(this);\n};\n\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird/js/release/any.js\n// module id = 85\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird/js/release/any.js?");
826
827/***/ },
828/* 86 */
829/*!********************************!*\
830 !*** ./test/memory-fs.spec.ts ***!
831 \********************************/
832/***/ function(module, exports, __webpack_require__) {
833
834 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Promise = __webpack_require__(/*! bluebird */ 47);\nvar implementation_suite_1 = __webpack_require__(/*! ./implementation-suite */ 87);\nvar universal_1 = __webpack_require__(/*! ../src/universal */ 88);\ndescribe('the in memory implementation', function () {\n implementation_suite_1.assertFileSystemContract(function () { return Promise.resolve(new universal_1.MemoryFileSystem(undefined, [implementation_suite_1.ignoredDir, implementation_suite_1.ignoredFile])); }, { interval: 1, noExtraEventsGrace: 10, timeout: 30 });\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./test/memory-fs.spec.ts\n// module id = 86\n// module chunks = 0 1\n//# sourceURL=webpack:///./test/memory-fs.spec.ts?");
835
836/***/ },
837/* 87 */
838/*!**************************************!*\
839 !*** ./test/implementation-suite.ts ***!
840 \**************************************/
841/***/ function(module, exports, __webpack_require__) {
842
843 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chai_1 = __webpack_require__(/*! chai */ 7);\nvar universal_1 = __webpack_require__(/*! ../src/universal */ 88);\nvar events_matcher_1 = __webpack_require__(/*! ../test-kit/drivers/events-matcher */ 308);\nexports.dirName = 'foo';\nexports.fileName = 'bar.txt';\nexports.content = 'content';\nexports.ignoredDir = 'ignored';\nexports.ignoredFile = \"\" + exports.dirName + universal_1.pathSeparator + \"ignored.txt\";\nfunction assertFileSystemContract(fsProvider, options) {\n describe(\"filesystem contract\", function () {\n var fs;\n var matcher;\n beforeEach(function () {\n matcher = new events_matcher_1.EventsMatcher(options);\n return fsProvider()\n .then(function (newFs) {\n fs = newFs;\n matcher.track.apply(matcher, [fs.events].concat(universal_1.fileSystemEventNames));\n });\n });\n it(\"initially empty\", function () {\n return chai_1.expect(fs.loadDirectoryTree()).to.become({ type: 'dir', name: '', fullPath: '', children: [] });\n });\n it(\"loading a non-existing file - fails\", function () {\n return chai_1.expect(fs.loadTextFile(exports.fileName)).to.be.rejectedWith(Error);\n });\n it(\"loading a directory as a file - fails\", function () {\n return fs.ensureDirectory(exports.dirName)\n .then(function () {\n return matcher.expect([{ type: 'directoryCreated', fullPath: exports.dirName }]);\n })\n .then(function () { return chai_1.expect(fs.loadTextFile(exports.dirName)).to.be.rejectedWith(Error); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"saving an illegal file name - fails\", function () {\n return chai_1.expect(fs.saveFile('', exports.content)).to.be.rejectedWith(Error)\n .then(function () { return matcher.expect([]); });\n });\n it(\"ensuring existence of directory\", function () {\n var dirName = exports.fileName;\n var expectedStructure = {\n type: 'dir', name: '', fullPath: '', children: [\n { type: 'dir', name: dirName, fullPath: dirName, children: [] }\n ]\n };\n return fs.ensureDirectory(dirName)\n .then(function () { return matcher.expect([{ type: 'directoryCreated', fullPath: dirName }]); })\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.become(expectedStructure); })\n .then(function () { return fs.ensureDirectory(dirName); }) //2nd time does nothing\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.become(expectedStructure); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"saving a file over a directory - fails\", function () {\n return fs.ensureDirectory(exports.dirName)\n .then(function () { return matcher.expect([{ type: 'directoryCreated', fullPath: exports.dirName }]); })\n .then(function () { return chai_1.expect(fs.saveFile(exports.dirName, exports.content)).to.be.rejectedWith(Error); })\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.become({\n type: 'dir', name: '', fullPath: '', children: [\n { type: 'dir', name: exports.dirName, fullPath: exports.dirName, children: [] }\n ]\n }); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"saving a file over a file in its path - fails\", function () {\n var fileNameAsDir = exports.dirName;\n return fs.saveFile(fileNameAsDir, exports.content)\n .then(function () { return matcher.expect([{ type: 'fileCreated', fullPath: fileNameAsDir, newContent: exports.content }]); })\n .then(function () { return chai_1.expect(fs.saveFile(fileNameAsDir + \"/\" + exports.fileName, '_${content}')).to.be.rejectedWith(Error); })\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.become({\n type: 'dir', name: '', fullPath: '', children: [\n { type: 'file', name: fileNameAsDir, fullPath: fileNameAsDir }\n ]\n }); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"saving a new file (and a new directory to hold it)\", function () {\n return fs.saveFile(exports.dirName + \"/\" + exports.fileName, exports.content)\n .then(function () { return matcher.expect([{ type: 'directoryCreated', fullPath: exports.dirName }, { type: 'fileCreated', fullPath: exports.dirName + \"/\" + exports.fileName, newContent: exports.content }]); })\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.become({\n type: 'dir', name: '', fullPath: '', children: [\n { type: 'dir', name: exports.dirName, fullPath: exports.dirName, children: [\n { type: 'file', name: exports.fileName, fullPath: exports.dirName + \"/\" + exports.fileName }\n ] }\n ]\n }); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"saving a file with different content\", function () {\n var newContent = \"_\" + exports.content;\n return fs.saveFile(exports.fileName, exports.content)\n .then(function () { return matcher.expect([{ type: 'fileCreated', fullPath: exports.fileName, newContent: exports.content }]); })\n .then(function () { return chai_1.expect(fs.loadTextFile(exports.fileName)).to.become(exports.content); })\n .then(function () { return fs.saveFile(exports.fileName, newContent); })\n .then(function () { return matcher.expect([{ type: 'fileChanged', fullPath: exports.fileName, newContent: newContent }]); })\n .then(function () { return chai_1.expect(fs.loadTextFile(exports.fileName)).to.become(newContent); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"saving a file with same content\", function () {\n var expectedStructure = {\n type: 'dir', name: '', fullPath: '', children: [\n { name: exports.fileName, fullPath: exports.fileName, type: 'file' }\n ]\n };\n return fs.saveFile(exports.fileName, exports.content)\n .then(function () { return matcher.expect([{ type: 'fileCreated', fullPath: exports.fileName, newContent: exports.content }]); })\n .then(function () { return chai_1.expect(fs.loadTextFile(exports.fileName)).to.become(exports.content); })\n .then(function () { return fs.saveFile(exports.fileName, exports.content); }) // may or may not trigger an event\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.become(expectedStructure); })\n .then(function () { return chai_1.expect(fs.loadTextFile(exports.fileName)).to.become(exports.content); });\n });\n it(\"deleting root directory - fails\", function () {\n return chai_1.expect(fs.deleteDirectory('')).to.be.rejectedWith(Error)\n .then(function () { return matcher.expect([]); });\n });\n it(\"deleting a directory\", function () {\n return fs.ensureDirectory(exports.dirName + \"/_\" + exports.dirName)\n .then(function () { return matcher.expect([\n { type: 'directoryCreated', fullPath: exports.dirName },\n { type: 'directoryCreated', fullPath: exports.dirName + \"/_\" + exports.dirName }\n ]); })\n .then(function () { return fs.deleteDirectory(exports.dirName + \"/_\" + exports.dirName); })\n .then(function () { return matcher.expect([{ type: 'directoryDeleted', fullPath: exports.dirName + \"/_\" + exports.dirName }]); })\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.eventually.have.property('children').eql([\n { children: [], fullPath: exports.dirName, name: exports.dirName, type: 'dir' }\n ]); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"deleting non existing directory succeeds\", function () {\n return fs.deleteDirectory(exports.dirName + \"/_\" + exports.dirName)\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.eventually.have.property('children').eql([]); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"deleting directory which is actually a file - fails\", function () {\n return fs.saveFile(exports.fileName, exports.content)\n .then(function () { return matcher.expect([{ type: 'fileCreated', fullPath: exports.fileName, newContent: exports.content }]); })\n .then(function () { return chai_1.expect(fs.deleteDirectory(exports.fileName)).to.be.rejectedWith(Error); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"deleting non-empty directory without recursive flag - fails\", function () {\n return fs.saveFile(exports.dirName + \"/_\" + exports.dirName + \"/\" + exports.fileName, exports.content)\n .then(function () { return matcher.expect([\n { type: 'directoryCreated', fullPath: exports.dirName },\n { type: 'directoryCreated', fullPath: exports.dirName + \"/_\" + exports.dirName },\n { type: 'fileCreated', fullPath: exports.dirName + \"/_\" + exports.dirName + \"/\" + exports.fileName, newContent: exports.content }\n ]); })\n .then(function () { return chai_1.expect(fs.deleteDirectory(exports.dirName + \"/_\" + exports.dirName)).to.be.rejectedWith(Error); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"deleting non-empty directory with recursive flag\", function () {\n var filePath = exports.dirName + \"/_\" + exports.dirName + \"/\" + exports.fileName;\n return fs.saveFile(filePath, exports.content)\n .then(function () { return matcher.expect([\n { type: 'directoryCreated', fullPath: exports.dirName },\n { type: 'directoryCreated', fullPath: exports.dirName + \"/_\" + exports.dirName },\n { type: 'fileCreated', fullPath: filePath, newContent: exports.content }\n ]); })\n .then(function () { return fs.deleteDirectory(exports.dirName, true); })\n .then(function () { return matcher.expect([\n { type: 'directoryDeleted', fullPath: exports.dirName },\n { type: 'fileDeleted', fullPath: filePath }\n ]); })\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.eventually.have.property('children').eql([]); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"deleting file which is actually a directory - fails\", function () {\n var dirNameAsFileName = exports.fileName;\n return fs.ensureDirectory(dirNameAsFileName)\n .then(function () { return matcher.expect([{ type: 'directoryCreated', fullPath: dirNameAsFileName }]); })\n .then(function () { return chai_1.expect(fs.deleteFile(dirNameAsFileName)).to.be.rejectedWith(Error); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"deleting only one file\", function () {\n return fs.saveFile(exports.fileName, exports.content)\n .then(function () { return matcher.expect([{ type: 'fileCreated', fullPath: exports.fileName, newContent: exports.content }]); })\n .then(function () { return fs.saveFile(\"_\" + exports.fileName, \"_\" + exports.content); })\n .then(function () { return matcher.expect([{ type: 'fileCreated', fullPath: \"_\" + exports.fileName, newContent: \"_\" + exports.content }]); })\n .then(function () { return fs.deleteFile(\"_\" + exports.fileName); })\n .then(function () { return matcher.expect([{ type: 'fileDeleted', fullPath: \"_\" + exports.fileName }]); })\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.eventually.have.property('children').eql([{ fullPath: exports.fileName, name: exports.fileName, type: 'file' }]); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"deleting non existing file succeeds\", function () {\n return fs.deleteFile(exports.fileName)\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.eventually.have.property('children').eql([]); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"deleting non existing file (deep path) succeeds\", function () {\n return fs.deleteFile(exports.dirName + \"/\" + exports.fileName)\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.eventually.have.property('children').eql([]); })\n .then(function () { return matcher.expect([]); });\n });\n it(\"deleting ignored file succeeds\", function () {\n return fs.deleteFile(exports.ignoredFile)\n .then(function () { return matcher.expect([]); })\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.eventually.have.property('children').eql([]); });\n });\n it(\"deleting ignored directory succeeds\", function () {\n return fs.deleteDirectory(exports.ignoredDir)\n .then(function () { return matcher.expect([]); })\n .then(function () { return chai_1.expect(fs.loadDirectoryTree()).to.eventually.have.property('children').eql([]); });\n });\n it(\"saving ignored file - fails\", function () {\n return chai_1.expect(fs.saveFile(exports.ignoredFile, 'foo')).to.be.rejectedWith(Error);\n });\n it(\"saving ignored dir - fails\", function () {\n return chai_1.expect(fs.ensureDirectory(exports.ignoredDir)).to.be.rejectedWith(Error);\n });\n it(\"loading existed ignored file - fails\", function () {\n return fs.ensureDirectory(exports.dirName)\n .then(function () { return chai_1.expect(fs.loadTextFile(exports.ignoredFile)).to.be.rejectedWith(Error); });\n });\n });\n}\nexports.assertFileSystemContract = assertFileSystemContract;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./test/implementation-suite.ts\n// module id = 87\n// module chunks = 0 1\n//# sourceURL=webpack:///./test/implementation-suite.ts?");
844
845/***/ },
846/* 88 */
847/*!**************************!*\
848 !*** ./src/universal.ts ***!
849 \**************************/
850/***/ function(module, exports, __webpack_require__) {
851
852 eval("\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(/*! ./api */ 89));\n__export(__webpack_require__(/*! ./constants */ 90));\nvar memory_fs_1 = __webpack_require__(/*! ./memory-fs */ 91);\nexports.MemoryFileSystem = memory_fs_1.MemoryFileSystem;\nvar cache_fs_1 = __webpack_require__(/*! ./cache-fs */ 143);\nexports.CacheFileSystem = cache_fs_1.CacheFileSystem;\nvar wamp_client_fs_1 = __webpack_require__(/*! ./wamp-client-fs */ 144);\nexports.WampClientFileSystem = wamp_client_fs_1.WampClientFileSystem;\nvar timeout_fs_1 = __webpack_require__(/*! ./timeout-fs */ 307);\nexports.TimeoutFileSystem = timeout_fs_1.TimeoutFileSystem;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/universal.ts\n// module id = 88\n// module chunks = 0 1\n//# sourceURL=webpack:///./src/universal.ts?");
853
854/***/ },
855/* 89 */
856/*!********************!*\
857 !*** ./src/api.ts ***!
858 \********************/
859/***/ function(module, exports) {
860
861 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pathSeparator = '/';\nvar Directory = (function () {\n function Directory(name, fullPath, children) {\n if (children === void 0) { children = []; }\n this.name = name;\n this.fullPath = fullPath;\n this.children = children;\n this.type = 'dir';\n }\n return Directory;\n}());\nexports.Directory = Directory;\nvar File = (function () {\n function File(name, fullPath, content) {\n this.name = name;\n this.fullPath = fullPath;\n this.type = 'file';\n if (content)\n this.content = content;\n }\n return File;\n}());\nexports.File = File;\nfunction isFile(node) {\n if (!node)\n return false;\n return node.type === 'file';\n}\nexports.isFile = isFile;\nfunction isDir(node) {\n if (!node)\n return false;\n return node.type === 'dir';\n}\nexports.isDir = isDir;\nfunction isDisposable(fs) {\n return !!fs && typeof fs.dispose === 'function';\n}\nexports.isDisposable = isDisposable;\nexports.fileSystemEventNames = ['unexpectedError', 'fileCreated', 'fileChanged', 'fileDeleted', 'directoryCreated', 'directoryDeleted'];\nexports.fileSystemMethods = ['saveFile', 'deleteFile', 'deleteDirectory', 'loadTextFile', 'loadDirectoryTree', 'ensureDirectory'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/api.ts\n// module id = 89\n// module chunks = 0 1\n//# sourceURL=webpack:///./src/api.ts?");
862
863/***/ },
864/* 90 */
865/*!**************************!*\
866 !*** ./src/constants.ts ***!
867 \**************************/
868/***/ function(module, exports) {
869
870 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wampRealmPrefix = 'com.kissfs.';\nexports.wampRealm = exports.wampRealmPrefix + \"driver\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/constants.ts\n// module id = 90\n// module chunks = 0 1\n//# sourceURL=webpack:///./src/constants.ts?");
871
872/***/ },
873/* 91 */
874/*!**************************!*\
875 !*** ./src/memory-fs.ts ***!
876 \**************************/
877/***/ function(module, exports, __webpack_require__) {
878
879 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Promise = __webpack_require__(/*! bluebird */ 47);\nvar lodash_1 = __webpack_require__(/*! lodash */ 92);\nvar api_1 = __webpack_require__(/*! ./api */ 89);\nvar utils_1 = __webpack_require__(/*! ./utils */ 94);\nvar id = 0;\nvar MemoryFileSystem = (function () {\n function MemoryFileSystem(baseUrl, ignore) {\n if (baseUrl === void 0) { baseUrl = \"memory-\" + id++; }\n this.baseUrl = baseUrl;\n this.events = utils_1.makeEventsEmitter();\n this.root = new api_1.Directory('', '');\n this.ignore = [];\n this.isIgnored = function (path) { return false; };\n this.baseUrl += '/';\n if (ignore) {\n this.isIgnored = utils_1.getIsIgnored(ignore);\n }\n ;\n }\n MemoryFileSystem.prototype.getPathTarget = function (pathArr) {\n var current = this.root;\n while (pathArr.length) {\n var name_1 = pathArr.shift();\n if (name_1 && current.children) {\n var node = lodash_1.find(current.children, { name: name_1 });\n current = api_1.isDir(node) ? node : current;\n }\n else {\n return null;\n }\n }\n return current;\n };\n MemoryFileSystem.prototype.saveFile = function (fullPath, newContent) {\n var _this = this;\n return Promise.try(function () { return _this.saveFileSync(fullPath, newContent); });\n };\n MemoryFileSystem.prototype.deleteFile = function (fullPath) {\n var _this = this;\n return Promise.try(function () { return _this.deleteFileSync(fullPath); });\n };\n MemoryFileSystem.prototype.deleteDirectory = function (fullPath, recursive) {\n var _this = this;\n return Promise.try(function () { return _this.deleteDirectorySync(fullPath, recursive); });\n };\n MemoryFileSystem.prototype.ensureDirectory = function (fullPath) {\n var _this = this;\n return Promise.try(function () { return _this.ensureDirectorySync(fullPath); });\n };\n MemoryFileSystem.prototype.loadTextFile = function (fullPath) {\n var _this = this;\n return Promise.try(function () { return _this.loadTextFileSync(fullPath); });\n };\n MemoryFileSystem.prototype.loadDirectoryTree = function () {\n return Promise.resolve(this.loadDirectoryTreeSync());\n };\n MemoryFileSystem.prototype.saveFileSync = function (fullPath, newContent) {\n if (this.isIgnored(fullPath)) {\n throw new Error(\"Unable to save ignored path: '\" + fullPath + \"'\");\n }\n var pathArr = utils_1.getPathNodes(fullPath);\n var name = pathArr.pop();\n if (!name) {\n throw new Error(\"root is not a legal file name\");\n }\n this.ensureDirectorySync(pathArr.join(api_1.pathSeparator));\n var parent = this.getPathTarget(pathArr);\n if (!parent) {\n // we get here if findNode couldn't resolve the parent and the node is not the root dir.\n // this should not happen after running ensureDirectory()\n throw new Error(\"unexpected error: not a legal file name? '\" + fullPath + \"'\");\n }\n var type;\n var existingChild = lodash_1.find(parent.children, { name: name });\n if (api_1.isDir(existingChild)) {\n throw new Error(\"file save error for path '\" + fullPath + \"'\");\n }\n if (api_1.isFile(existingChild)) {\n if (existingChild.content !== newContent) {\n existingChild.content = newContent;\n type = 'fileChanged';\n }\n }\n else {\n type = 'fileCreated';\n parent.children.push(new api_1.File(name, fullPath, newContent));\n }\n this.events.emit(type, { type: type, fullPath: fullPath, newContent: newContent });\n };\n MemoryFileSystem.prototype.deleteFileSync = function (fullPath) {\n var pathArr = utils_1.getPathNodes(fullPath);\n var parent = pathArr.length ? this.getPathTarget(pathArr.slice(0, pathArr.length - 1)) : null;\n if (api_1.isDir(parent) && !this.isIgnored(fullPath)) {\n var node_1 = lodash_1.find(parent.children, { name: lodash_1.last(pathArr) });\n if (api_1.isFile(node_1)) {\n parent.children = parent.children.filter(function (_a) {\n var name = _a.name;\n return name !== node_1.name;\n });\n this.events.emit('fileDeleted', { type: 'fileDeleted', fullPath: fullPath });\n }\n else if (api_1.isDir(node_1)) {\n throw new Error(\"Directory is not a file '\" + fullPath + \"'\");\n }\n }\n };\n MemoryFileSystem.prototype.deleteDirectorySync = function (fullPath, recursive) {\n var pathArr = utils_1.getPathNodes(fullPath);\n if (pathArr.length === 0) {\n throw new Error(\"Can't delete root directory\");\n }\n var parent = this.getPathTarget(pathArr.slice(0, pathArr.length - 1));\n if (api_1.isDir(parent) && !this.isIgnored(fullPath)) {\n var node_2 = lodash_1.find(parent.children, { name: lodash_1.last(pathArr) });\n if (api_1.isFile(node_2)) {\n throw new Error(\"File is not a directory '\" + fullPath + \"'\");\n }\n else if (api_1.isDir(node_2)) {\n if (!recursive && node_2.children.length) {\n throw new Error(\"Directory is not empty '\" + fullPath + \"'\");\n }\n else {\n parent.children = parent.children.filter(function (_a) {\n var name = _a.name;\n return name !== node_2.name;\n });\n this.recursiveEmitDeletion(node_2);\n }\n }\n }\n };\n MemoryFileSystem.prototype.ensureDirectorySync = function (fullPath) {\n var _this = this;\n if (this.isIgnored(fullPath)) {\n throw new Error(\"Unable to read and write ignored path: '\" + fullPath + \"'\");\n }\n utils_1.getPathNodes(fullPath).reduce(function (current, name) {\n var next = lodash_1.find(current.children, { name: name });\n if (api_1.isDir(next)) {\n return next;\n }\n if (api_1.isFile(next)) {\n throw new Error(\"File is not a directory \" + next.fullPath);\n }\n var newDir = new api_1.Directory(name, current.fullPath ? [current.fullPath, name].join(api_1.pathSeparator) : name);\n current.children.push(newDir);\n _this.events.emit('directoryCreated', {\n type: 'directoryCreated',\n fullPath: newDir.fullPath\n });\n return newDir;\n }, this.root);\n };\n MemoryFileSystem.prototype.loadTextFileSync = function (fullPath) {\n if (this.isIgnored(fullPath)) {\n throw new Error(\"Unable to read ignored path: '\" + fullPath + \"'\");\n }\n var pathArr = utils_1.getPathNodes(fullPath);\n var parent = pathArr.length ? this.getPathTarget(pathArr.slice(0, pathArr.length - 1)) : null;\n if (api_1.isDir(parent)) {\n var node = lodash_1.find(parent.children, { name: lodash_1.last(pathArr) });\n if (api_1.isFile(node)) {\n return node.content || '';\n }\n else if (api_1.isDir(node)) {\n throw new Error(\"File is a directory \" + fullPath);\n }\n }\n throw new Error(\"Cannot find file \" + fullPath);\n };\n MemoryFileSystem.prototype.loadDirectoryTreeSync = function () {\n return this.parseTree(this.root);\n };\n MemoryFileSystem.prototype.parseTree = function (node) {\n var _this = this;\n return new api_1.Directory(node.name, node.fullPath, node.children.map(function (child) { return api_1.isDir(child) ? _this.parseTree(child) : new api_1.File(child.name, child.fullPath); }));\n };\n MemoryFileSystem.prototype.recursiveEmitDeletion = function (node) {\n var _this = this;\n this.events.emit('directoryDeleted', { type: 'directoryDeleted', fullPath: node.fullPath });\n node.children.forEach(function (child) {\n if (api_1.isDir(child))\n _this.recursiveEmitDeletion(child);\n _this.events.emit('fileDeleted', { type: 'fileDeleted', fullPath: child.fullPath });\n });\n };\n return MemoryFileSystem;\n}());\nexports.MemoryFileSystem = MemoryFileSystem;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/memory-fs.ts\n// module id = 91\n// module chunks = 0 1\n//# sourceURL=webpack:///./src/memory-fs.ts?");
880
881/***/ },
882/* 92 */
883/*!****************************!*\
884 !*** ./~/lodash/lodash.js ***!
885 \****************************/
886/***/ function(module, exports, __webpack_require__) {
887
888 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.4';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:(?:1st|2nd|3rd|(?![123])\\\\dth)\\\\b)',\n rsOrdUpper = '\\\\d*(?:(?:1ST|2ND|3RD|(?![123])\\\\dTH)\\\\b)',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\n function addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n }\n\n /**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\n function addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n }\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(object[key], srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = object[key],\n srcValue = source[key],\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\n function cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), CLONE_DEEP_FLAG) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\n function cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), CLONE_DEEP_FLAG) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, &amp; pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(args) {\n args.push(undefined, customDefaultsAssignIn);\n return apply(assignInWith, undefined, args);\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, &amp; pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b>&lt;script&gt;</b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n var sourceURL = '//# sourceURL=' +\n ('sourceURL' in options\n ? options.sourceURL\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, &amp; pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = (lodashFunc.name + ''),\n names = realNames[key] || (realNames[key] = []);\n\n names.push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (true) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n !(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n return _;\n }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(/*! ./../webpack/buildin/module.js */ 93)(module)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/lodash.js\n// module id = 92\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/lodash/lodash.js?");
889
890/***/ },
891/* 93 */
892/*!***********************************!*\
893 !*** (webpack)/buildin/module.js ***!
894 \***********************************/
895/***/ function(module, exports) {
896
897 eval("module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 93\n// module chunks = 0 1\n//# sourceURL=webpack:///(webpack)/buildin/module.js?");
898
899/***/ },
900/* 94 */
901/*!**********************!*\
902 !*** ./src/utils.ts ***!
903 \**********************/
904/***/ function(module, exports, __webpack_require__) {
905
906 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventemitter3_1 = __webpack_require__(/*! eventemitter3 */ 95);\nvar isGlob = __webpack_require__(/*! is-glob */ 96);\nvar micromatch = __webpack_require__(/*! micromatch */ 98);\nvar api_1 = __webpack_require__(/*! ./api */ 89);\n// utility logic for filesystem implementations\nfunction getPathNodes(path) {\n return path.split(api_1.pathSeparator).filter(function (n) { return n.length !== 0; });\n}\nexports.getPathNodes = getPathNodes;\nfunction extendMatchersWithGlob(paths) {\n return paths.reduce(function (extended, path) {\n extended.push(path);\n if (!isGlob(path)) {\n extended.push(path + \"/**\", \"**/\" + path, \"**/\" + path + \"/**\");\n }\n return extended;\n }, []);\n}\nfunction getIsIgnored(matchers, options) {\n if (options === void 0) { options = { dot: true }; }\n var patterns = extendMatchersWithGlob(matchers);\n return function (path) { return micromatch.any(path, patterns, options); };\n}\nexports.getIsIgnored = getIsIgnored;\nfunction makeEventsEmitter() {\n return (new eventemitter3_1.EventEmitter());\n}\nexports.makeEventsEmitter = makeEventsEmitter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/utils.ts\n// module id = 94\n// module chunks = 0 1\n//# sourceURL=webpack:///./src/utils.ts?");
907
908/***/ },
909/* 95 */
910/*!**********************************!*\
911 !*** ./~/eventemitter3/index.js ***!
912 \**********************************/
913/***/ function(module, exports, __webpack_require__) {
914
915 eval("'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif (true) {\n module.exports = EventEmitter;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/eventemitter3/index.js\n// module id = 95\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/eventemitter3/index.js?");
916
917/***/ },
918/* 96 */
919/*!****************************!*\
920 !*** ./~/is-glob/index.js ***!
921 \****************************/
922/***/ function(module, exports, __webpack_require__) {
923
924 eval("/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nvar isExtglob = __webpack_require__(/*! is-extglob */ 97);\n\nmodule.exports = function isGlob(str) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n if (isExtglob(str)) return true;\n\n var regex = /(\\\\).|([*?]|\\[.*\\]|\\{.*\\}|\\(.*\\|.*\\)|^!)/;\n var match;\n\n while ((match = regex.exec(str))) {\n if (match[2]) return true;\n str = str.slice(match.index + match[0].length);\n }\n return false;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-glob/index.js\n// module id = 96\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/is-glob/index.js?");
925
926/***/ },
927/* 97 */
928/*!*****************************************!*\
929 !*** ./~/is-glob/~/is-extglob/index.js ***!
930 \*****************************************/
931/***/ function(module, exports) {
932
933 eval("/*!\n * is-extglob <https://github.com/jonschlinkert/is-extglob>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n var match;\n while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n if (match[2]) return true;\n str = str.slice(match.index + match[0].length);\n }\n\n return false;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-glob/~/is-extglob/index.js\n// module id = 97\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/is-glob/~/is-extglob/index.js?");
934
935/***/ },
936/* 98 */
937/*!*******************************!*\
938 !*** ./~/micromatch/index.js ***!
939 \*******************************/
940/***/ function(module, exports, __webpack_require__) {
941
942 eval("/*!\n * micromatch <https://github.com/jonschlinkert/micromatch>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar expand = __webpack_require__(/*! ./lib/expand */ 99);\nvar utils = __webpack_require__(/*! ./lib/utils */ 100);\n\n/**\n * The main function. Pass an array of filepaths,\n * and a string or array of glob patterns\n *\n * @param {Array|String} `files`\n * @param {Array|String} `patterns`\n * @param {Object} `opts`\n * @return {Array} Array of matches\n */\n\nfunction micromatch(files, patterns, opts) {\n if (!files || !patterns) return [];\n opts = opts || {};\n\n if (typeof opts.cache === 'undefined') {\n opts.cache = true;\n }\n\n if (!Array.isArray(patterns)) {\n return match(files, patterns, opts);\n }\n\n var len = patterns.length, i = 0;\n var omit = [], keep = [];\n\n while (len--) {\n var glob = patterns[i++];\n if (typeof glob === 'string' && glob.charCodeAt(0) === 33 /* ! */) {\n omit.push.apply(omit, match(files, glob.slice(1), opts));\n } else {\n keep.push.apply(keep, match(files, glob, opts));\n }\n }\n return utils.diff(keep, omit);\n}\n\n/**\n * Return an array of files that match the given glob pattern.\n *\n * This function is called by the main `micromatch` function If you only\n * need to pass a single pattern you might get very minor speed improvements\n * using this function.\n *\n * @param {Array} `files`\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Array}\n */\n\nfunction match(files, pattern, opts) {\n if (utils.typeOf(files) !== 'string' && !Array.isArray(files)) {\n throw new Error(msg('match', 'files', 'a string or array'));\n }\n\n files = utils.arrayify(files);\n opts = opts || {};\n\n var negate = opts.negate || false;\n var orig = pattern;\n\n if (typeof pattern === 'string') {\n negate = pattern.charAt(0) === '!';\n if (negate) {\n pattern = pattern.slice(1);\n }\n\n // we need to remove the character regardless,\n // so the above logic is still needed\n if (opts.nonegate === true) {\n negate = false;\n }\n }\n\n var _isMatch = matcher(pattern, opts);\n var len = files.length, i = 0;\n var res = [];\n\n while (i < len) {\n var file = files[i++];\n var fp = utils.unixify(file, opts);\n\n if (!_isMatch(fp)) { continue; }\n res.push(fp);\n }\n\n if (res.length === 0) {\n if (opts.failglob === true) {\n throw new Error('micromatch.match() found no matches for: \"' + orig + '\".');\n }\n\n if (opts.nonull || opts.nullglob) {\n res.push(utils.unescapeGlob(orig));\n }\n }\n\n // if `negate` was defined, diff negated files\n if (negate) { res = utils.diff(files, res); }\n\n // if `ignore` was defined, diff ignored filed\n if (opts.ignore && opts.ignore.length) {\n pattern = opts.ignore;\n opts = utils.omit(opts, ['ignore']);\n res = utils.diff(res, micromatch(res, pattern, opts));\n }\n\n if (opts.nodupes) {\n return utils.unique(res);\n }\n return res;\n}\n\n/**\n * Returns a function that takes a glob pattern or array of glob patterns\n * to be used with `Array#filter()`. (Internally this function generates\n * the matching function using the [matcher] method).\n *\n * ```js\n * var fn = mm.filter('[a-c]');\n * ['a', 'b', 'c', 'd', 'e'].filter(fn);\n * //=> ['a', 'b', 'c']\n * ```\n * @param {String|Array} `patterns` Can be a glob or array of globs.\n * @param {Options} `opts` Options to pass to the [matcher] method.\n * @return {Function} Filter function to be passed to `Array#filter()`.\n */\n\nfunction filter(patterns, opts) {\n if (!Array.isArray(patterns) && typeof patterns !== 'string') {\n throw new TypeError(msg('filter', 'patterns', 'a string or array'));\n }\n\n patterns = utils.arrayify(patterns);\n var len = patterns.length, i = 0;\n var patternMatchers = Array(len);\n while (i < len) {\n patternMatchers[i] = matcher(patterns[i++], opts);\n }\n\n return function(fp) {\n if (fp == null) return [];\n var len = patternMatchers.length, i = 0;\n var res = true;\n\n fp = utils.unixify(fp, opts);\n while (i < len) {\n var fn = patternMatchers[i++];\n if (!fn(fp)) {\n res = false;\n break;\n }\n }\n return res;\n };\n}\n\n/**\n * Returns true if the filepath contains the given\n * pattern. Can also return a function for matching.\n *\n * ```js\n * isMatch('foo.md', '*.md', {});\n * //=> true\n *\n * isMatch('*.md', {})('foo.md')\n * //=> true\n * ```\n * @param {String} `fp`\n * @param {String} `pattern`\n * @param {Object} `opts`\n * @return {Boolean}\n */\n\nfunction isMatch(fp, pattern, opts) {\n if (typeof fp !== 'string') {\n throw new TypeError(msg('isMatch', 'filepath', 'a string'));\n }\n\n fp = utils.unixify(fp, opts);\n if (utils.typeOf(pattern) === 'object') {\n return matcher(fp, pattern);\n }\n return matcher(pattern, opts)(fp);\n}\n\n/**\n * Returns true if the filepath matches the\n * given pattern.\n */\n\nfunction contains(fp, pattern, opts) {\n if (typeof fp !== 'string') {\n throw new TypeError(msg('contains', 'pattern', 'a string'));\n }\n\n opts = opts || {};\n opts.contains = (pattern !== '');\n fp = utils.unixify(fp, opts);\n\n if (opts.contains && !utils.isGlob(pattern)) {\n return fp.indexOf(pattern) !== -1;\n }\n return matcher(pattern, opts)(fp);\n}\n\n/**\n * Returns true if a file path matches any of the\n * given patterns.\n *\n * @param {String} `fp` The filepath to test.\n * @param {String|Array} `patterns` Glob patterns to use.\n * @param {Object} `opts` Options to pass to the `matcher()` function.\n * @return {String}\n */\n\nfunction any(fp, patterns, opts) {\n if (!Array.isArray(patterns) && typeof patterns !== 'string') {\n throw new TypeError(msg('any', 'patterns', 'a string or array'));\n }\n\n patterns = utils.arrayify(patterns);\n var len = patterns.length;\n\n fp = utils.unixify(fp, opts);\n while (len--) {\n var isMatch = matcher(patterns[len], opts);\n if (isMatch(fp)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Filter the keys of an object with the given `glob` pattern\n * and `options`\n *\n * @param {Object} `object`\n * @param {Pattern} `object`\n * @return {Array}\n */\n\nfunction matchKeys(obj, glob, options) {\n if (utils.typeOf(obj) !== 'object') {\n throw new TypeError(msg('matchKeys', 'first argument', 'an object'));\n }\n\n var fn = matcher(glob, options);\n var res = {};\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && fn(key)) {\n res[key] = obj[key];\n }\n }\n return res;\n}\n\n/**\n * Return a function for matching based on the\n * given `pattern` and `options`.\n *\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Function}\n */\n\nfunction matcher(pattern, opts) {\n // pattern is a function\n if (typeof pattern === 'function') {\n return pattern;\n }\n // pattern is a regex\n if (pattern instanceof RegExp) {\n return function(fp) {\n return pattern.test(fp);\n };\n }\n\n if (typeof pattern !== 'string') {\n throw new TypeError(msg('matcher', 'pattern', 'a string, regex, or function'));\n }\n\n // strings, all the way down...\n pattern = utils.unixify(pattern, opts);\n\n // pattern is a non-glob string\n if (!utils.isGlob(pattern)) {\n return utils.matchPath(pattern, opts);\n }\n // pattern is a glob string\n var re = makeRe(pattern, opts);\n\n // `matchBase` is defined\n if (opts && opts.matchBase) {\n return utils.hasFilename(re, opts);\n }\n // `matchBase` is not defined\n return function(fp) {\n fp = utils.unixify(fp, opts);\n return re.test(fp);\n };\n}\n\n/**\n * Create and cache a regular expression for matching\n * file paths.\n *\n * If the leading character in the `glob` is `!`, a negation\n * regex is returned.\n *\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {RegExp}\n */\n\nfunction toRegex(glob, options) {\n // clone options to prevent mutating the original object\n var opts = Object.create(options || {});\n var flags = opts.flags || '';\n if (opts.nocase && flags.indexOf('i') === -1) {\n flags += 'i';\n }\n\n var parsed = expand(glob, opts);\n\n // pass in tokens to avoid parsing more than once\n opts.negated = opts.negated || parsed.negated;\n opts.negate = opts.negated;\n glob = wrapGlob(parsed.pattern, opts);\n var re;\n\n try {\n re = new RegExp(glob, flags);\n return re;\n } catch (err) {\n err.reason = 'micromatch invalid regex: (' + re + ')';\n if (opts.strict) throw new SyntaxError(err);\n }\n\n // we're only here if a bad pattern was used and the user\n // passed `options.silent`, so match nothing\n return /$^/;\n}\n\n/**\n * Create the regex to do the matching. If the leading\n * character in the `glob` is `!` a negation regex is returned.\n *\n * @param {String} `glob`\n * @param {Boolean} `negate`\n */\n\nfunction wrapGlob(glob, opts) {\n var prefix = (opts && !opts.contains) ? '^' : '';\n var after = (opts && !opts.contains) ? '$' : '';\n glob = ('(?:' + glob + ')' + after);\n if (opts && opts.negate) {\n return prefix + ('(?!^' + glob + ').*$');\n }\n return prefix + glob;\n}\n\n/**\n * Create and cache a regular expression for matching file paths.\n * If the leading character in the `glob` is `!`, a negation\n * regex is returned.\n *\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {RegExp}\n */\n\nfunction makeRe(glob, opts) {\n if (utils.typeOf(glob) !== 'string') {\n throw new Error(msg('makeRe', 'glob', 'a string'));\n }\n return utils.cache(toRegex, glob, opts);\n}\n\n/**\n * Make error messages consistent. Follows this format:\n *\n * ```js\n * msg(methodName, argNumber, nativeType);\n * // example:\n * msg('matchKeys', 'first', 'an object');\n * ```\n *\n * @param {String} `method`\n * @param {String} `num`\n * @param {String} `type`\n * @return {String}\n */\n\nfunction msg(method, what, type) {\n return 'micromatch.' + method + '(): ' + what + ' should be ' + type + '.';\n}\n\n/**\n * Public methods\n */\n\n/* eslint no-multi-spaces: 0 */\nmicromatch.any = any;\nmicromatch.braces = micromatch.braceExpand = utils.braces;\nmicromatch.contains = contains;\nmicromatch.expand = expand;\nmicromatch.filter = filter;\nmicromatch.isMatch = isMatch;\nmicromatch.makeRe = makeRe;\nmicromatch.match = match;\nmicromatch.matcher = matcher;\nmicromatch.matchKeys = matchKeys;\n\n/**\n * Expose `micromatch`\n */\n\nmodule.exports = micromatch;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/micromatch/index.js\n// module id = 98\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/micromatch/index.js?");
943
944/***/ },
945/* 99 */
946/*!************************************!*\
947 !*** ./~/micromatch/lib/expand.js ***!
948 \************************************/
949/***/ function(module, exports, __webpack_require__) {
950
951 eval("/*!\n * micromatch <https://github.com/jonschlinkert/micromatch>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar utils = __webpack_require__(/*! ./utils */ 100);\nvar Glob = __webpack_require__(/*! ./glob */ 141);\n\n/**\n * Expose `expand`\n */\n\nmodule.exports = expand;\n\n/**\n * Expand a glob pattern to resolve braces and\n * similar patterns before converting to regex.\n *\n * @param {String|Array} `pattern`\n * @param {Array} `files`\n * @param {Options} `opts`\n * @return {Array}\n */\n\nfunction expand(pattern, options) {\n if (typeof pattern !== 'string') {\n throw new TypeError('micromatch.expand(): argument should be a string.');\n }\n\n var glob = new Glob(pattern, options || {});\n var opts = glob.options;\n\n if (!utils.isGlob(pattern)) {\n glob.pattern = glob.pattern.replace(/([\\/.])/g, '\\\\$1');\n return glob;\n }\n\n glob.pattern = glob.pattern.replace(/(\\+)(?!\\()/g, '\\\\$1');\n glob.pattern = glob.pattern.split('$').join('\\\\$');\n\n if (typeof opts.braces !== 'boolean' && typeof opts.nobraces !== 'boolean') {\n opts.braces = true;\n }\n\n if (glob.pattern === '.*') {\n return {\n pattern: '\\\\.' + star,\n tokens: tok,\n options: opts\n };\n }\n\n if (glob.pattern === '*') {\n return {\n pattern: oneStar(opts.dot),\n tokens: tok,\n options: opts\n };\n }\n\n // parse the glob pattern into tokens\n glob.parse();\n var tok = glob.tokens;\n tok.is.negated = opts.negated;\n\n // dotfile handling\n if ((opts.dotfiles === true || tok.is.dotfile) && opts.dot !== false) {\n opts.dotfiles = true;\n opts.dot = true;\n }\n\n if ((opts.dotdirs === true || tok.is.dotdir) && opts.dot !== false) {\n opts.dotdirs = true;\n opts.dot = true;\n }\n\n // check for braces with a dotfile pattern\n if (/[{,]\\./.test(glob.pattern)) {\n opts.makeRe = false;\n opts.dot = true;\n }\n\n if (opts.nonegate !== true) {\n opts.negated = glob.negated;\n }\n\n // if the leading character is a dot or a slash, escape it\n if (glob.pattern.charAt(0) === '.' && glob.pattern.charAt(1) !== '/') {\n glob.pattern = '\\\\' + glob.pattern;\n }\n\n /**\n * Extended globs\n */\n\n // expand braces, e.g `{1..5}`\n glob.track('before braces');\n if (tok.is.braces) {\n glob.braces();\n }\n glob.track('after braces');\n\n // expand extglobs, e.g `foo/!(a|b)`\n glob.track('before extglob');\n if (tok.is.extglob) {\n glob.extglob();\n }\n glob.track('after extglob');\n\n // expand brackets, e.g `[[:alpha:]]`\n glob.track('before brackets');\n if (tok.is.brackets) {\n glob.brackets();\n }\n glob.track('after brackets');\n\n // special patterns\n glob._replace('[!', '[^');\n glob._replace('(?', '(%~');\n glob._replace(/\\[\\]/, '\\\\[\\\\]');\n glob._replace('/[', '/' + (opts.dot ? dotfiles : nodot) + '[', true);\n glob._replace('/?', '/' + (opts.dot ? dotfiles : nodot) + '[^/]', true);\n glob._replace('/.', '/(?=.)\\\\.', true);\n\n // windows drives\n glob._replace(/^(\\w):([\\\\\\/]+?)/gi, '(?=.)$1:$2', true);\n\n // negate slashes in exclusion ranges\n if (glob.pattern.indexOf('[^') !== -1) {\n glob.pattern = negateSlash(glob.pattern);\n }\n\n if (opts.globstar !== false && glob.pattern === '**') {\n glob.pattern = globstar(opts.dot);\n\n } else {\n glob.pattern = balance(glob.pattern, '[', ']');\n glob.escape(glob.pattern);\n\n // if the pattern has `**`\n if (tok.is.globstar) {\n glob.pattern = collapse(glob.pattern, '/**');\n glob.pattern = collapse(glob.pattern, '**/');\n glob._replace('/**/', '(?:/' + globstar(opts.dot) + '/|/)', true);\n glob._replace(/\\*{2,}/g, '**');\n\n // 'foo/*'\n glob._replace(/(\\w+)\\*(?!\\/)/g, '$1[^/]*?', true);\n glob._replace(/\\*\\*\\/\\*(\\w)/g, globstar(opts.dot) + '\\\\/' + (opts.dot ? dotfiles : nodot) + '[^/]*?$1', true);\n\n if (opts.dot !== true) {\n glob._replace(/\\*\\*\\/(.)/g, '(?:**\\\\/|)$1');\n }\n\n // 'foo/**' or '{**,*}', but not 'foo**'\n if (tok.path.dirname !== '' || /,\\*\\*|\\*\\*,/.test(glob.orig)) {\n glob._replace('**', globstar(opts.dot), true);\n }\n }\n\n // ends with /*\n glob._replace(/\\/\\*$/, '\\\\/' + oneStar(opts.dot), true);\n // ends with *, no slashes\n glob._replace(/(?!\\/)\\*$/, star, true);\n // has 'n*.' (partial wildcard w/ file extension)\n glob._replace(/([^\\/]+)\\*/, '$1' + oneStar(true), true);\n // has '*'\n glob._replace('*', oneStar(opts.dot), true);\n glob._replace('?.', '?\\\\.', true);\n glob._replace('?:', '?:', true);\n\n glob._replace(/\\?+/g, function(match) {\n var len = match.length;\n if (len === 1) {\n return qmark;\n }\n return qmark + '{' + len + '}';\n });\n\n // escape '.abc' => '\\\\.abc'\n glob._replace(/\\.([*\\w]+)/g, '\\\\.$1');\n // fix '[^\\\\\\\\/]'\n glob._replace(/\\[\\^[\\\\\\/]+\\]/g, qmark);\n // '///' => '\\/'\n glob._replace(/\\/+/g, '\\\\/');\n // '\\\\\\\\\\\\' => '\\\\'\n glob._replace(/\\\\{2,}/g, '\\\\');\n }\n\n // unescape previously escaped patterns\n glob.unescape(glob.pattern);\n glob._replace('__UNESC_STAR__', '*');\n\n // escape dots that follow qmarks\n glob._replace('?.', '?\\\\.');\n\n // remove unnecessary slashes in character classes\n glob._replace('[^\\\\/]', qmark);\n\n if (glob.pattern.length > 1) {\n if (/^[\\[?*]/.test(glob.pattern)) {\n // only prepend the string if we don't want to match dotfiles\n glob.pattern = (opts.dot ? dotfiles : nodot) + glob.pattern;\n }\n }\n\n return glob;\n}\n\n/**\n * Collapse repeated character sequences.\n *\n * ```js\n * collapse('a/../../../b', '../');\n * //=> 'a/../b'\n * ```\n *\n * @param {String} `str`\n * @param {String} `ch` Character sequence to collapse\n * @return {String}\n */\n\nfunction collapse(str, ch) {\n var res = str.split(ch);\n var isFirst = res[0] === '';\n var isLast = res[res.length - 1] === '';\n res = res.filter(Boolean);\n if (isFirst) res.unshift('');\n if (isLast) res.push('');\n return res.join(ch);\n}\n\n/**\n * Negate slashes in exclusion ranges, per glob spec:\n *\n * ```js\n * negateSlash('[^foo]');\n * //=> '[^\\\\/foo]'\n * ```\n *\n * @param {String} `str` glob pattern\n * @return {String}\n */\n\nfunction negateSlash(str) {\n return str.replace(/\\[\\^([^\\]]*?)\\]/g, function(match, inner) {\n if (inner.indexOf('/') === -1) {\n inner = '\\\\/' + inner;\n }\n return '[^' + inner + ']';\n });\n}\n\n/**\n * Escape imbalanced braces/bracket. This is a very\n * basic, naive implementation that only does enough\n * to serve the purpose.\n */\n\nfunction balance(str, a, b) {\n var aarr = str.split(a);\n var alen = aarr.join('').length;\n var blen = str.split(b).join('').length;\n\n if (alen !== blen) {\n str = aarr.join('\\\\' + a);\n return str.split(b).join('\\\\' + b);\n }\n return str;\n}\n\n/**\n * Special patterns to be converted to regex.\n * Heuristics are used to simplify patterns\n * and speed up processing.\n */\n\n/* eslint no-multi-spaces: 0 */\nvar qmark = '[^/]';\nvar star = qmark + '*?';\nvar nodot = '(?!\\\\.)(?=.)';\nvar dotfileGlob = '(?:\\\\/|^)\\\\.{1,2}($|\\\\/)';\nvar dotfiles = '(?!' + dotfileGlob + ')(?=.)';\nvar twoStarDot = '(?:(?!' + dotfileGlob + ').)*?';\n\n/**\n * Create a regex for `*`.\n *\n * If `dot` is true, or the pattern does not begin with\n * a leading star, then return the simpler regex.\n */\n\nfunction oneStar(dotfile) {\n return dotfile ? '(?!' + dotfileGlob + ')(?=.)' + star : (nodot + star);\n}\n\nfunction globstar(dotfile) {\n if (dotfile) { return twoStarDot; }\n return '(?:(?!(?:\\\\/|^)\\\\.).)*?';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/micromatch/lib/expand.js\n// module id = 99\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/micromatch/lib/expand.js?");
952
953/***/ },
954/* 100 */
955/*!***********************************!*\
956 !*** ./~/micromatch/lib/utils.js ***!
957 \***********************************/
958/***/ function(module, exports, __webpack_require__) {
959
960 eval("/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\nvar win32 = process && process.platform === 'win32';\nvar path = __webpack_require__(/*! path */ 101);\nvar fileRe = __webpack_require__(/*! filename-regex */ 102);\nvar utils = module.exports;\n\n/**\n * Module dependencies\n */\n\nutils.diff = __webpack_require__(/*! arr-diff */ 103);\nutils.unique = __webpack_require__(/*! array-unique */ 105);\nutils.braces = __webpack_require__(/*! braces */ 106);\nutils.brackets = __webpack_require__(/*! expand-brackets */ 120);\nutils.extglob = __webpack_require__(/*! extglob */ 122);\nutils.isExtglob = __webpack_require__(/*! is-extglob */ 123);\nutils.isGlob = __webpack_require__(/*! is-glob */ 124);\nutils.typeOf = __webpack_require__(/*! kind-of */ 111);\nutils.normalize = __webpack_require__(/*! normalize-path */ 125);\nutils.omit = __webpack_require__(/*! object.omit */ 127);\nutils.parseGlob = __webpack_require__(/*! parse-glob */ 131);\nutils.cache = __webpack_require__(/*! regex-cache */ 138);\n\n/**\n * Get the filename of a filepath\n *\n * @param {String} `string`\n * @return {String}\n */\n\nutils.filename = function filename(fp) {\n var seg = fp.match(fileRe());\n return seg && seg[0];\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern is the same as a given `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.isPath = function isPath(pattern, opts) {\n opts = opts || {};\n return function(fp) {\n var unixified = utils.unixify(fp, opts);\n if(opts.nocase){\n return pattern.toLowerCase() === unixified.toLowerCase();\n }\n return pattern === unixified;\n };\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern contains a `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.hasPath = function hasPath(pattern, opts) {\n return function(fp) {\n return utils.unixify(pattern, opts).indexOf(fp) !== -1;\n };\n};\n\n/**\n * Returns a function that returns true if the given\n * pattern matches or contains a `filepath`\n *\n * @param {String} `pattern`\n * @return {Function}\n */\n\nutils.matchPath = function matchPath(pattern, opts) {\n var fn = (opts && opts.contains)\n ? utils.hasPath(pattern, opts)\n : utils.isPath(pattern, opts);\n return fn;\n};\n\n/**\n * Returns a function that returns true if the given\n * regex matches the `filename` of a file path.\n *\n * @param {RegExp} `re`\n * @return {Boolean}\n */\n\nutils.hasFilename = function hasFilename(re) {\n return function(fp) {\n var name = utils.filename(fp);\n return name && re.test(name);\n };\n};\n\n/**\n * Coerce `val` to an array\n *\n * @param {*} val\n * @return {Array}\n */\n\nutils.arrayify = function arrayify(val) {\n return !Array.isArray(val)\n ? [val]\n : val;\n};\n\n/**\n * Normalize all slashes in a file path or glob pattern to\n * forward slashes.\n */\n\nutils.unixify = function unixify(fp, opts) {\n if (opts && opts.unixify === false) return fp;\n if (opts && opts.unixify === true || win32 || path.sep === '\\\\') {\n return utils.normalize(fp, false);\n }\n if (opts && opts.unescape === true) {\n return fp ? fp.toString().replace(/\\\\(\\w)/g, '$1') : '';\n }\n return fp;\n};\n\n/**\n * Escape/unescape utils\n */\n\nutils.escapePath = function escapePath(fp) {\n return fp.replace(/[\\\\.]/g, '\\\\$&');\n};\n\nutils.unescapeGlob = function unescapeGlob(fp) {\n return fp.replace(/[\\\\\"']/g, '');\n};\n\nutils.escapeRe = function escapeRe(str) {\n return str.replace(/[-[\\\\$*+?.#^\\s{}(|)\\]]/g, '\\\\$&');\n};\n\n/**\n * Expose `utils`\n */\n\nmodule.exports = utils;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/micromatch/lib/utils.js\n// module id = 100\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/micromatch/lib/utils.js?");
961
962/***/ },
963/* 101 */
964/*!************************************!*\
965 !*** ./~/path-browserify/index.js ***!
966 \************************************/
967/***/ function(module, exports, __webpack_require__) {
968
969 eval("/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/path-browserify/index.js\n// module id = 101\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/path-browserify/index.js?");
970
971/***/ },
972/* 102 */
973/*!***********************************!*\
974 !*** ./~/filename-regex/index.js ***!
975 \***********************************/
976/***/ function(module, exports) {
977
978 eval("/*!\n * filename-regex <https://github.com/regexps/filename-regex>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert\n * Licensed under the MIT license.\n */\n\nmodule.exports = function filenameRegex() {\n return /([^\\\\\\/]+)$/;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/filename-regex/index.js\n// module id = 102\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/filename-regex/index.js?");
979
980/***/ },
981/* 103 */
982/*!*****************************!*\
983 !*** ./~/arr-diff/index.js ***!
984 \*****************************/
985/***/ function(module, exports, __webpack_require__) {
986
987 eval("/*!\n * arr-diff <https://github.com/jonschlinkert/arr-diff>\n *\n * Copyright (c) 2014 Jon Schlinkert, contributors.\n * Licensed under the MIT License\n */\n\n'use strict';\n\nvar flatten = __webpack_require__(/*! arr-flatten */ 104);\nvar slice = [].slice;\n\n/**\n * Return the difference between the first array and\n * additional arrays.\n *\n * ```js\n * var diff = require('{%= name %}');\n *\n * var a = ['a', 'b', 'c', 'd'];\n * var b = ['b', 'c'];\n *\n * console.log(diff(a, b))\n * //=> ['a', 'd']\n * ```\n *\n * @param {Array} `a`\n * @param {Array} `b`\n * @return {Array}\n * @api public\n */\n\nfunction diff(arr, arrays) {\n var argsLen = arguments.length;\n var len = arr.length, i = -1;\n var res = [], arrays;\n\n if (argsLen === 1) {\n return arr;\n }\n\n if (argsLen > 2) {\n arrays = flatten(slice.call(arguments, 1));\n }\n\n while (++i < len) {\n if (!~arrays.indexOf(arr[i])) {\n res.push(arr[i]);\n }\n }\n return res;\n}\n\n/**\n * Expose `diff`\n */\n\nmodule.exports = diff;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/arr-diff/index.js\n// module id = 103\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/arr-diff/index.js?");
988
989/***/ },
990/* 104 */
991/*!********************************!*\
992 !*** ./~/arr-flatten/index.js ***!
993 \********************************/
994/***/ function(module, exports) {
995
996 eval("/*!\n * arr-flatten <https://github.com/jonschlinkert/arr-flatten>\n *\n * Copyright (c) 2014-2015, 2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function flatten(arr) {\n return flat(arr, []);\n};\n\nfunction flat(arr, acc) {\n var len = arr.length;\n var idx = -1;\n\n while (++idx < len) {\n var cur = arr[idx];\n if (Array.isArray(cur)) {\n flat(cur, acc);\n } else {\n acc.push(cur);\n }\n }\n return acc;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/arr-flatten/index.js\n// module id = 104\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/arr-flatten/index.js?");
997
998/***/ },
999/* 105 */
1000/*!*********************************!*\
1001 !*** ./~/array-unique/index.js ***!
1002 \*********************************/
1003/***/ function(module, exports) {
1004
1005 eval("/*!\n * array-unique <https://github.com/jonschlinkert/array-unique>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function unique(arr) {\n if (!Array.isArray(arr)) {\n throw new TypeError('array-unique expects an array.');\n }\n\n var len = arr.length;\n var i = -1;\n\n while (i++ < len) {\n var j = i + 1;\n\n for (; j < arr.length; ++j) {\n if (arr[i] === arr[j]) {\n arr.splice(j--, 1);\n }\n }\n }\n return arr;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/array-unique/index.js\n// module id = 105\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/array-unique/index.js?");
1006
1007/***/ },
1008/* 106 */
1009/*!***************************!*\
1010 !*** ./~/braces/index.js ***!
1011 \***************************/
1012/***/ function(module, exports, __webpack_require__) {
1013
1014 eval("/*!\n * braces <https://github.com/jonschlinkert/braces>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT license.\n */\n\n'use strict';\n\n/**\n * Module dependencies\n */\n\nvar expand = __webpack_require__(/*! expand-range */ 107);\nvar repeat = __webpack_require__(/*! repeat-element */ 118);\nvar tokens = __webpack_require__(/*! preserve */ 119);\n\n/**\n * Expose `braces`\n */\n\nmodule.exports = function(str, options) {\n if (typeof str !== 'string') {\n throw new Error('braces expects a string');\n }\n return braces(str, options);\n};\n\n/**\n * Expand `{foo,bar}` or `{1..5}` braces in the\n * given `string`.\n *\n * @param {String} `str`\n * @param {Array} `arr`\n * @param {Object} `options`\n * @return {Array}\n */\n\nfunction braces(str, arr, options) {\n if (str === '') {\n return [];\n }\n\n if (!Array.isArray(arr)) {\n options = arr;\n arr = [];\n }\n\n var opts = options || {};\n arr = arr || [];\n\n if (typeof opts.nodupes === 'undefined') {\n opts.nodupes = true;\n }\n\n var fn = opts.fn;\n var es6;\n\n if (typeof opts === 'function') {\n fn = opts;\n opts = {};\n }\n\n if (!(patternRe instanceof RegExp)) {\n patternRe = patternRegex();\n }\n\n var matches = str.match(patternRe) || [];\n var m = matches[0];\n\n switch(m) {\n case '\\\\,':\n return escapeCommas(str, arr, opts);\n case '\\\\.':\n return escapeDots(str, arr, opts);\n case '\\/.':\n return escapePaths(str, arr, opts);\n case ' ':\n return splitWhitespace(str);\n case '{,}':\n return exponential(str, opts, braces);\n case '{}':\n return emptyBraces(str, arr, opts);\n case '\\\\{':\n case '\\\\}':\n return escapeBraces(str, arr, opts);\n case '${':\n if (!/\\{[^{]+\\{/.test(str)) {\n return arr.concat(str);\n } else {\n es6 = true;\n str = tokens.before(str, es6Regex());\n }\n }\n\n if (!(braceRe instanceof RegExp)) {\n braceRe = braceRegex();\n }\n\n var match = braceRe.exec(str);\n if (match == null) {\n return [str];\n }\n\n var outter = match[1];\n var inner = match[2];\n if (inner === '') { return [str]; }\n\n var segs, segsLength;\n\n if (inner.indexOf('..') !== -1) {\n segs = expand(inner, opts, fn) || inner.split(',');\n segsLength = segs.length;\n\n } else if (inner[0] === '\"' || inner[0] === '\\'') {\n return arr.concat(str.split(/['\"]/).join(''));\n\n } else {\n segs = inner.split(',');\n if (opts.makeRe) {\n return braces(str.replace(outter, wrap(segs, '|')), opts);\n }\n\n segsLength = segs.length;\n if (segsLength === 1 && opts.bash) {\n segs[0] = wrap(segs[0], '\\\\');\n }\n }\n\n var len = segs.length;\n var i = 0, val;\n\n while (len--) {\n var path = segs[i++];\n\n if (/(\\.[^.\\/])/.test(path)) {\n if (segsLength > 1) {\n return segs;\n } else {\n return [str];\n }\n }\n\n val = splice(str, outter, path);\n\n if (/\\{[^{}]+?\\}/.test(val)) {\n arr = braces(val, arr, opts);\n } else if (val !== '') {\n if (opts.nodupes && arr.indexOf(val) !== -1) { continue; }\n arr.push(es6 ? tokens.after(val) : val);\n }\n }\n\n if (opts.strict) { return filter(arr, filterEmpty); }\n return arr;\n}\n\n/**\n * Expand exponential ranges\n *\n * `a{,}{,}` => ['a', 'a', 'a', 'a']\n */\n\nfunction exponential(str, options, fn) {\n if (typeof options === 'function') {\n fn = options;\n options = null;\n }\n\n var opts = options || {};\n var esc = '__ESC_EXP__';\n var exp = 0;\n var res;\n\n var parts = str.split('{,}');\n if (opts.nodupes) {\n return fn(parts.join(''), opts);\n }\n\n exp = parts.length - 1;\n res = fn(parts.join(esc), opts);\n var len = res.length;\n var arr = [];\n var i = 0;\n\n while (len--) {\n var ele = res[i++];\n var idx = ele.indexOf(esc);\n\n if (idx === -1) {\n arr.push(ele);\n\n } else {\n ele = ele.split('__ESC_EXP__').join('');\n if (!!ele && opts.nodupes !== false) {\n arr.push(ele);\n\n } else {\n var num = Math.pow(2, exp);\n arr.push.apply(arr, repeat(ele, num));\n }\n }\n }\n return arr;\n}\n\n/**\n * Wrap a value with parens, brackets or braces,\n * based on the given character/separator.\n *\n * @param {String|Array} `val`\n * @param {String} `ch`\n * @return {String}\n */\n\nfunction wrap(val, ch) {\n if (ch === '|') {\n return '(' + val.join(ch) + ')';\n }\n if (ch === ',') {\n return '{' + val.join(ch) + '}';\n }\n if (ch === '-') {\n return '[' + val.join(ch) + ']';\n }\n if (ch === '\\\\') {\n return '\\\\{' + val + '\\\\}';\n }\n}\n\n/**\n * Handle empty braces: `{}`\n */\n\nfunction emptyBraces(str, arr, opts) {\n return braces(str.split('{}').join('\\\\{\\\\}'), arr, opts);\n}\n\n/**\n * Filter out empty-ish values\n */\n\nfunction filterEmpty(ele) {\n return !!ele && ele !== '\\\\';\n}\n\n/**\n * Handle patterns with whitespace\n */\n\nfunction splitWhitespace(str) {\n var segs = str.split(' ');\n var len = segs.length;\n var res = [];\n var i = 0;\n\n while (len--) {\n res.push.apply(res, braces(segs[i++]));\n }\n return res;\n}\n\n/**\n * Handle escaped braces: `\\\\{foo,bar}`\n */\n\nfunction escapeBraces(str, arr, opts) {\n if (!/\\{[^{]+\\{/.test(str)) {\n return arr.concat(str.split('\\\\').join(''));\n } else {\n str = str.split('\\\\{').join('__LT_BRACE__');\n str = str.split('\\\\}').join('__RT_BRACE__');\n return map(braces(str, arr, opts), function(ele) {\n ele = ele.split('__LT_BRACE__').join('{');\n return ele.split('__RT_BRACE__').join('}');\n });\n }\n}\n\n/**\n * Handle escaped dots: `{1\\\\.2}`\n */\n\nfunction escapeDots(str, arr, opts) {\n if (!/[^\\\\]\\..+\\\\\\./.test(str)) {\n return arr.concat(str.split('\\\\').join(''));\n } else {\n str = str.split('\\\\.').join('__ESC_DOT__');\n return map(braces(str, arr, opts), function(ele) {\n return ele.split('__ESC_DOT__').join('.');\n });\n }\n}\n\n/**\n * Handle escaped dots: `{1\\\\.2}`\n */\n\nfunction escapePaths(str, arr, opts) {\n str = str.split('\\/.').join('__ESC_PATH__');\n return map(braces(str, arr, opts), function(ele) {\n return ele.split('__ESC_PATH__').join('\\/.');\n });\n}\n\n/**\n * Handle escaped commas: `{a\\\\,b}`\n */\n\nfunction escapeCommas(str, arr, opts) {\n if (!/\\w,/.test(str)) {\n return arr.concat(str.split('\\\\').join(''));\n } else {\n str = str.split('\\\\,').join('__ESC_COMMA__');\n return map(braces(str, arr, opts), function(ele) {\n return ele.split('__ESC_COMMA__').join(',');\n });\n }\n}\n\n/**\n * Regex for common patterns\n */\n\nfunction patternRegex() {\n return /\\${|( (?=[{,}])|(?=[{,}]) )|{}|{,}|\\\\,(?=.*[{}])|\\/\\.(?=.*[{}])|\\\\\\.(?={)|\\\\{|\\\\}/;\n}\n\n/**\n * Braces regex.\n */\n\nfunction braceRegex() {\n return /.*(\\\\?\\{([^}]+)\\})/;\n}\n\n/**\n * es6 delimiter regex.\n */\n\nfunction es6Regex() {\n return /\\$\\{([^}]+)\\}/;\n}\n\nvar braceRe;\nvar patternRe;\n\n/**\n * Faster alternative to `String.replace()` when the\n * index of the token to be replaces can't be supplied\n */\n\nfunction splice(str, token, replacement) {\n var i = str.indexOf(token);\n return str.substr(0, i) + replacement\n + str.substr(i + token.length);\n}\n\n/**\n * Fast array map\n */\n\nfunction map(arr, fn) {\n if (arr == null) {\n return [];\n }\n\n var len = arr.length;\n var res = new Array(len);\n var i = -1;\n\n while (++i < len) {\n res[i] = fn(arr[i], i, arr);\n }\n\n return res;\n}\n\n/**\n * Fast array filter\n */\n\nfunction filter(arr, cb) {\n if (arr == null) return [];\n if (typeof cb !== 'function') {\n throw new TypeError('braces: filter expects a callback function.');\n }\n\n var len = arr.length;\n var res = arr.slice();\n var i = 0;\n\n while (len--) {\n if (!cb(arr[len], i++)) {\n res.splice(len, 1);\n }\n }\n return res;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/braces/index.js\n// module id = 106\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/braces/index.js?");
1015
1016/***/ },
1017/* 107 */
1018/*!*********************************!*\
1019 !*** ./~/expand-range/index.js ***!
1020 \*********************************/
1021/***/ function(module, exports, __webpack_require__) {
1022
1023 eval("/*!\n * expand-range <https://github.com/jonschlinkert/expand-range>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT license.\n */\n\n'use strict';\n\nvar fill = __webpack_require__(/*! fill-range */ 108);\n\nmodule.exports = function expandRange(str, options, fn) {\n if (typeof str !== 'string') {\n throw new TypeError('expand-range expects a string.');\n }\n\n if (typeof options === 'function') {\n fn = options;\n options = {};\n }\n\n if (typeof options === 'boolean') {\n options = {};\n options.makeRe = true;\n }\n\n // create arguments to pass to fill-range\n var opts = options || {};\n var args = str.split('..');\n var len = args.length;\n if (len > 3) { return str; }\n\n // if only one argument, it can't expand so return it\n if (len === 1) { return args; }\n\n // if `true`, tell fill-range to regexify the string\n if (typeof fn === 'boolean' && fn === true) {\n opts.makeRe = true;\n }\n\n args.push(opts);\n return fill.apply(null, args.concat(fn));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/expand-range/index.js\n// module id = 107\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/expand-range/index.js?");
1024
1025/***/ },
1026/* 108 */
1027/*!*******************************!*\
1028 !*** ./~/fill-range/index.js ***!
1029 \*******************************/
1030/***/ function(module, exports, __webpack_require__) {
1031
1032 eval("/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isObject = __webpack_require__(/*! isobject */ 109);\nvar isNumber = __webpack_require__(/*! is-number */ 110);\nvar randomize = __webpack_require__(/*! randomatic */ 113);\nvar repeatStr = __webpack_require__(/*! repeat-string */ 117);\nvar repeat = __webpack_require__(/*! repeat-element */ 118);\n\n/**\n * Expose `fillRange`\n */\n\nmodule.exports = fillRange;\n\n/**\n * Return a range of numbers or letters.\n *\n * @param {String} `a` Start of the range\n * @param {String} `b` End of the range\n * @param {String} `step` Increment or decrement to use.\n * @param {Function} `fn` Custom function to modify each element in the range.\n * @return {Array}\n */\n\nfunction fillRange(a, b, step, options, fn) {\n if (a == null || b == null) {\n throw new Error('fill-range expects the first and second args to be strings.');\n }\n\n if (typeof step === 'function') {\n fn = step; options = {}; step = null;\n }\n\n if (typeof options === 'function') {\n fn = options; options = {};\n }\n\n if (isObject(step)) {\n options = step; step = '';\n }\n\n var expand, regex = false, sep = '';\n var opts = options || {};\n\n if (typeof opts.silent === 'undefined') {\n opts.silent = true;\n }\n\n step = step || opts.step;\n\n // store a ref to unmodified arg\n var origA = a, origB = b;\n\n b = (b.toString() === '-0') ? 0 : b;\n\n if (opts.optimize || opts.makeRe) {\n step = step ? (step += '~') : step;\n expand = true;\n regex = true;\n sep = '~';\n }\n\n // handle special step characters\n if (typeof step === 'string') {\n var match = stepRe().exec(step);\n\n if (match) {\n var i = match.index;\n var m = match[0];\n\n // repeat string\n if (m === '+') {\n return repeat(a, b);\n\n // randomize a, `b` times\n } else if (m === '?') {\n return [randomize(a, b)];\n\n // expand right, no regex reduction\n } else if (m === '>') {\n step = step.substr(0, i) + step.substr(i + 1);\n expand = true;\n\n // expand to an array, or if valid create a reduced\n // string for a regex logic `or`\n } else if (m === '|') {\n step = step.substr(0, i) + step.substr(i + 1);\n expand = true;\n regex = true;\n sep = m;\n\n // expand to an array, or if valid create a reduced\n // string for a regex range\n } else if (m === '~') {\n step = step.substr(0, i) + step.substr(i + 1);\n expand = true;\n regex = true;\n sep = m;\n }\n } else if (!isNumber(step)) {\n if (!opts.silent) {\n throw new TypeError('fill-range: invalid step.');\n }\n return null;\n }\n }\n\n if (/[.&*()[\\]^%$#@!]/.test(a) || /[.&*()[\\]^%$#@!]/.test(b)) {\n if (!opts.silent) {\n throw new RangeError('fill-range: invalid range arguments.');\n }\n return null;\n }\n\n // has neither a letter nor number, or has both letters and numbers\n // this needs to be after the step logic\n if (!noAlphaNum(a) || !noAlphaNum(b) || hasBoth(a) || hasBoth(b)) {\n if (!opts.silent) {\n throw new RangeError('fill-range: invalid range arguments.');\n }\n return null;\n }\n\n // validate arguments\n var isNumA = isNumber(zeros(a));\n var isNumB = isNumber(zeros(b));\n\n if ((!isNumA && isNumB) || (isNumA && !isNumB)) {\n if (!opts.silent) {\n throw new TypeError('fill-range: first range argument is incompatible with second.');\n }\n return null;\n }\n\n // by this point both are the same, so we\n // can use A to check going forward.\n var isNum = isNumA;\n var num = formatStep(step);\n\n // is the range alphabetical? or numeric?\n if (isNum) {\n // if numeric, coerce to an integer\n a = +a; b = +b;\n } else {\n // otherwise, get the charCode to expand alpha ranges\n a = a.charCodeAt(0);\n b = b.charCodeAt(0);\n }\n\n // is the pattern descending?\n var isDescending = a > b;\n\n // don't create a character class if the args are < 0\n if (a < 0 || b < 0) {\n expand = false;\n regex = false;\n }\n\n // detect padding\n var padding = isPadded(origA, origB);\n var res, pad, arr = [];\n var ii = 0;\n\n // character classes, ranges and logical `or`\n if (regex) {\n if (shouldExpand(a, b, num, isNum, padding, opts)) {\n // make sure the correct separator is used\n if (sep === '|' || sep === '~') {\n sep = detectSeparator(a, b, num, isNum, isDescending);\n }\n return wrap([origA, origB], sep, opts);\n }\n }\n\n while (isDescending ? (a >= b) : (a <= b)) {\n if (padding && isNum) {\n pad = padding(a);\n }\n\n // custom function\n if (typeof fn === 'function') {\n res = fn(a, isNum, pad, ii++);\n\n // letters\n } else if (!isNum) {\n if (regex && isInvalidChar(a)) {\n res = null;\n } else {\n res = String.fromCharCode(a);\n }\n\n // numbers\n } else {\n res = formatPadding(a, pad);\n }\n\n // add result to the array, filtering any nulled values\n if (res !== null) arr.push(res);\n\n // increment or decrement\n if (isDescending) {\n a -= num;\n } else {\n a += num;\n }\n }\n\n // now that the array is expanded, we need to handle regex\n // character classes, ranges or logical `or` that wasn't\n // already handled before the loop\n if ((regex || expand) && !opts.noexpand) {\n // make sure the correct separator is used\n if (sep === '|' || sep === '~') {\n sep = detectSeparator(a, b, num, isNum, isDescending);\n }\n if (arr.length === 1 || a < 0 || b < 0) { return arr; }\n return wrap(arr, sep, opts);\n }\n\n return arr;\n}\n\n/**\n * Wrap the string with the correct regex\n * syntax.\n */\n\nfunction wrap(arr, sep, opts) {\n if (sep === '~') { sep = '-'; }\n var str = arr.join(sep);\n var pre = opts && opts.regexPrefix;\n\n // regex logical `or`\n if (sep === '|') {\n str = pre ? pre + str : str;\n str = '(' + str + ')';\n }\n\n // regex character class\n if (sep === '-') {\n str = (pre && pre === '^')\n ? pre + str\n : str;\n str = '[' + str + ']';\n }\n return [str];\n}\n\n/**\n * Check for invalid characters\n */\n\nfunction isCharClass(a, b, step, isNum, isDescending) {\n if (isDescending) { return false; }\n if (isNum) { return a <= 9 && b <= 9; }\n if (a < b) { return step === 1; }\n return false;\n}\n\n/**\n * Detect the correct separator to use\n */\n\nfunction shouldExpand(a, b, num, isNum, padding, opts) {\n if (isNum && (a > 9 || b > 9)) { return false; }\n return !padding && num === 1 && a < b;\n}\n\n/**\n * Detect the correct separator to use\n */\n\nfunction detectSeparator(a, b, step, isNum, isDescending) {\n var isChar = isCharClass(a, b, step, isNum, isDescending);\n if (!isChar) {\n return '|';\n }\n return '~';\n}\n\n/**\n * Correctly format the step based on type\n */\n\nfunction formatStep(step) {\n return Math.abs(step >> 0) || 1;\n}\n\n/**\n * Format padding, taking leading `-` into account\n */\n\nfunction formatPadding(ch, pad) {\n var res = pad ? pad + ch : ch;\n if (pad && ch.toString().charAt(0) === '-') {\n res = '-' + pad + ch.toString().substr(1);\n }\n return res.toString();\n}\n\n/**\n * Check for invalid characters\n */\n\nfunction isInvalidChar(str) {\n var ch = toStr(str);\n return ch === '\\\\'\n || ch === '['\n || ch === ']'\n || ch === '^'\n || ch === '('\n || ch === ')'\n || ch === '`';\n}\n\n/**\n * Convert to a string from a charCode\n */\n\nfunction toStr(ch) {\n return String.fromCharCode(ch);\n}\n\n\n/**\n * Step regex\n */\n\nfunction stepRe() {\n return /\\?|>|\\||\\+|\\~/g;\n}\n\n/**\n * Return true if `val` has either a letter\n * or a number\n */\n\nfunction noAlphaNum(val) {\n return /[a-z0-9]/i.test(val);\n}\n\n/**\n * Return true if `val` has both a letter and\n * a number (invalid)\n */\n\nfunction hasBoth(val) {\n return /[a-z][0-9]|[0-9][a-z]/i.test(val);\n}\n\n/**\n * Normalize zeros for checks\n */\n\nfunction zeros(val) {\n if (/^-*0+$/.test(val.toString())) {\n return '0';\n }\n return val;\n}\n\n/**\n * Return true if `val` has leading zeros,\n * or a similar valid pattern.\n */\n\nfunction hasZeros(val) {\n return /[^.]\\.|^-*0+[0-9]/.test(val);\n}\n\n/**\n * If the string is padded, returns a curried function with\n * the a cached padding string, or `false` if no padding.\n *\n * @param {*} `origA` String or number.\n * @return {String|Boolean}\n */\n\nfunction isPadded(origA, origB) {\n if (hasZeros(origA) || hasZeros(origB)) {\n var alen = length(origA);\n var blen = length(origB);\n\n var len = alen >= blen\n ? alen\n : blen;\n\n return function (a) {\n return repeatStr('0', len - length(a));\n };\n }\n return false;\n}\n\n/**\n * Get the string length of `val`\n */\n\nfunction length(val) {\n return val.toString().length;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fill-range/index.js\n// module id = 108\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/fill-range/index.js?");
1033
1034/***/ },
1035/* 109 */
1036/*!*****************************!*\
1037 !*** ./~/isobject/index.js ***!
1038 \*****************************/
1039/***/ function(module, exports, __webpack_require__) {
1040
1041 eval("/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isArray = __webpack_require__(/*! isarray */ 32);\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && isArray(val) === false;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/isobject/index.js\n// module id = 109\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/isobject/index.js?");
1042
1043/***/ },
1044/* 110 */
1045/*!******************************!*\
1046 !*** ./~/is-number/index.js ***!
1047 \******************************/
1048/***/ function(module, exports, __webpack_require__) {
1049
1050 eval("/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = __webpack_require__(/*! kind-of */ 111);\n\nmodule.exports = function isNumber(num) {\n var type = typeOf(num);\n if (type !== 'number' && type !== 'string') {\n return false;\n }\n var n = +num;\n return (n - n + 1) >= 0 && num !== '';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-number/index.js\n// module id = 110\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/is-number/index.js?");
1051
1052/***/ },
1053/* 111 */
1054/*!****************************!*\
1055 !*** ./~/kind-of/index.js ***!
1056 \****************************/
1057/***/ function(module, exports, __webpack_require__) {
1058
1059 eval("var isBuffer = __webpack_require__(/*! is-buffer */ 112);\nvar toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n // primitivies\n if (typeof val === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (typeof val === 'string' || val instanceof String) {\n return 'string';\n }\n if (typeof val === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (typeof val === 'function' || val instanceof Function) {\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n var type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/kind-of/index.js\n// module id = 111\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/kind-of/index.js?");
1060
1061/***/ },
1062/* 112 */
1063/*!******************************!*\
1064 !*** ./~/is-buffer/index.js ***!
1065 \******************************/
1066/***/ function(module, exports) {
1067
1068 eval("/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-buffer/index.js\n// module id = 112\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/is-buffer/index.js?");
1069
1070/***/ },
1071/* 113 */
1072/*!*******************************!*\
1073 !*** ./~/randomatic/index.js ***!
1074 \*******************************/
1075/***/ function(module, exports, __webpack_require__) {
1076
1077 eval("/*!\n * randomatic <https://github.com/jonschlinkert/randomatic>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar isNumber = __webpack_require__(/*! is-number */ 114);\nvar typeOf = __webpack_require__(/*! kind-of */ 116);\n\n/**\n * Expose `randomatic`\n */\n\nmodule.exports = randomatic;\n\n/**\n * Available mask characters\n */\n\nvar type = {\n lower: 'abcdefghijklmnopqrstuvwxyz',\n upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',\n number: '0123456789',\n special: '~!@#$%^&()_+-={}[];\\',.'\n};\n\ntype.all = type.lower + type.upper + type.number + type.special;\n\n/**\n * Generate random character sequences of a specified `length`,\n * based on the given `pattern`.\n *\n * @param {String} `pattern` The pattern to use for generating the random string.\n * @param {String} `length` The length of the string to generate.\n * @param {String} `options`\n * @return {String}\n * @api public\n */\n\nfunction randomatic(pattern, length, options) {\n if (typeof pattern === 'undefined') {\n throw new Error('randomatic expects a string or number.');\n }\n\n var custom = false;\n if (arguments.length === 1) {\n if (typeof pattern === 'string') {\n length = pattern.length;\n\n } else if (isNumber(pattern)) {\n options = {}; length = pattern; pattern = '*';\n }\n }\n\n if (typeOf(length) === 'object' && length.hasOwnProperty('chars')) {\n options = length;\n pattern = options.chars;\n length = pattern.length;\n custom = true;\n }\n\n var opts = options || {};\n var mask = '';\n var res = '';\n\n // Characters to be used\n if (pattern.indexOf('?') !== -1) mask += opts.chars;\n if (pattern.indexOf('a') !== -1) mask += type.lower;\n if (pattern.indexOf('A') !== -1) mask += type.upper;\n if (pattern.indexOf('0') !== -1) mask += type.number;\n if (pattern.indexOf('!') !== -1) mask += type.special;\n if (pattern.indexOf('*') !== -1) mask += type.all;\n if (custom) mask += pattern;\n\n while (length--) {\n res += mask.charAt(parseInt(Math.random() * mask.length, 10));\n }\n return res;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/randomatic/index.js\n// module id = 113\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/randomatic/index.js?");
1078
1079/***/ },
1080/* 114 */
1081/*!*******************************************!*\
1082 !*** ./~/randomatic/~/is-number/index.js ***!
1083 \*******************************************/
1084/***/ function(module, exports, __webpack_require__) {
1085
1086 eval("/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar typeOf = __webpack_require__(/*! kind-of */ 115);\n\nmodule.exports = function isNumber(num) {\n var type = typeOf(num);\n\n if (type === 'string') {\n if (!num.trim()) return false;\n } else if (type !== 'number') {\n return false;\n }\n\n return (num - num + 1) >= 0;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/randomatic/~/is-number/index.js\n// module id = 114\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/randomatic/~/is-number/index.js?");
1087
1088/***/ },
1089/* 115 */
1090/*!*****************************************************!*\
1091 !*** ./~/randomatic/~/is-number/~/kind-of/index.js ***!
1092 \*****************************************************/
1093/***/ function(module, exports, __webpack_require__) {
1094
1095 eval("var isBuffer = __webpack_require__(/*! is-buffer */ 112);\nvar toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n // primitivies\n if (typeof val === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (typeof val === 'string' || val instanceof String) {\n return 'string';\n }\n if (typeof val === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (typeof val === 'function' || val instanceof Function) {\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n var type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/randomatic/~/is-number/~/kind-of/index.js\n// module id = 115\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/randomatic/~/is-number/~/kind-of/index.js?");
1096
1097/***/ },
1098/* 116 */
1099/*!*****************************************!*\
1100 !*** ./~/randomatic/~/kind-of/index.js ***!
1101 \*****************************************/
1102/***/ function(module, exports, __webpack_require__) {
1103
1104 eval("var isBuffer = __webpack_require__(/*! is-buffer */ 112);\nvar toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nmodule.exports = function kindOf(val) {\n // primitivies\n if (typeof val === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (typeof val === 'string' || val instanceof String) {\n return 'string';\n }\n if (typeof val === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (typeof val === 'function' || val instanceof Function) {\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n var type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n if (type === '[object Promise]') {\n return 'promise';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/randomatic/~/kind-of/index.js\n// module id = 116\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/randomatic/~/kind-of/index.js?");
1105
1106/***/ },
1107/* 117 */
1108/*!**********************************!*\
1109 !*** ./~/repeat-string/index.js ***!
1110 \**********************************/
1111/***/ function(module, exports) {
1112
1113 eval("/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n // cover common, quick use cases\n if (num === 1) return str;\n if (num === 2) return str + str;\n\n var max = str.length * num;\n if (cache !== str || typeof cache === 'undefined') {\n cache = str;\n res = '';\n } else if (res.length >= max) {\n return res.substr(0, max);\n }\n\n while (max > res.length && num > 1) {\n if (num & 1) {\n res += str;\n }\n\n num >>= 1;\n str += str;\n }\n\n res += str;\n res = res.substr(0, max);\n return res;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/repeat-string/index.js\n// module id = 117\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/repeat-string/index.js?");
1114
1115/***/ },
1116/* 118 */
1117/*!***********************************!*\
1118 !*** ./~/repeat-element/index.js ***!
1119 \***********************************/
1120/***/ function(module, exports) {
1121
1122 eval("/*!\n * repeat-element <https://github.com/jonschlinkert/repeat-element>\n *\n * Copyright (c) 2015 Jon Schlinkert.\n * Licensed under the MIT license.\n */\n\n'use strict';\n\nmodule.exports = function repeat(ele, num) {\n var arr = new Array(num);\n\n for (var i = 0; i < num; i++) {\n arr[i] = ele;\n }\n\n return arr;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/repeat-element/index.js\n// module id = 118\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/repeat-element/index.js?");
1123
1124/***/ },
1125/* 119 */
1126/*!*****************************!*\
1127 !*** ./~/preserve/index.js ***!
1128 \*****************************/
1129/***/ function(module, exports) {
1130
1131 eval("/*!\n * preserve <https://github.com/jonschlinkert/preserve>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT license.\n */\n\n'use strict';\n\n/**\n * Replace tokens in `str` with a temporary, heuristic placeholder.\n *\n * ```js\n * tokens.before('{a\\\\,b}');\n * //=> '{__ID1__}'\n * ```\n *\n * @param {String} `str`\n * @return {String} String with placeholders.\n * @api public\n */\n\nexports.before = function before(str, re) {\n return str.replace(re, function (match) {\n var id = randomize();\n cache[id] = match;\n return '__ID' + id + '__';\n });\n};\n\n/**\n * Replace placeholders in `str` with original tokens.\n *\n * ```js\n * tokens.after('{__ID1__}');\n * //=> '{a\\\\,b}'\n * ```\n *\n * @param {String} `str` String with placeholders\n * @return {String} `str` String with original tokens.\n * @api public\n */\n\nexports.after = function after(str) {\n return str.replace(/__ID(.{5})__/g, function (_, id) {\n return cache[id];\n });\n};\n\nfunction randomize() {\n return Math.random().toString().slice(2, 7);\n}\n\nvar cache = {};\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/preserve/index.js\n// module id = 119\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/preserve/index.js?");
1132
1133/***/ },
1134/* 120 */
1135/*!************************************!*\
1136 !*** ./~/expand-brackets/index.js ***!
1137 \************************************/
1138/***/ function(module, exports, __webpack_require__) {
1139
1140 eval("/*!\n * expand-brackets <https://github.com/jonschlinkert/expand-brackets>\n *\n * Copyright (c) 2015 Jon Schlinkert.\n * Licensed under the MIT license.\n */\n\n'use strict';\n\nvar isPosixBracket = __webpack_require__(/*! is-posix-bracket */ 121);\n\n/**\n * POSIX character classes\n */\n\nvar POSIX = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E',\n punct: '-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9',\n};\n\n/**\n * Expose `brackets`\n */\n\nmodule.exports = brackets;\n\nfunction brackets(str) {\n if (!isPosixBracket(str)) {\n return str;\n }\n\n var negated = false;\n if (str.indexOf('[^') !== -1) {\n negated = true;\n str = str.split('[^').join('[');\n }\n if (str.indexOf('[!') !== -1) {\n negated = true;\n str = str.split('[!').join('[');\n }\n\n var a = str.split('[');\n var b = str.split(']');\n var imbalanced = a.length !== b.length;\n\n var parts = str.split(/(?::\\]\\[:|\\[?\\[:|:\\]\\]?)/);\n var len = parts.length, i = 0;\n var end = '', beg = '';\n var res = [];\n\n // start at the end (innermost) first\n while (len--) {\n var inner = parts[i++];\n if (inner === '^[!' || inner === '[!') {\n inner = '';\n negated = true;\n }\n\n var prefix = negated ? '^' : '';\n var ch = POSIX[inner];\n\n if (ch) {\n res.push('[' + prefix + ch + ']');\n } else if (inner) {\n if (/^\\[?\\w-\\w\\]?$/.test(inner)) {\n if (i === parts.length) {\n res.push('[' + prefix + inner);\n } else if (i === 1) {\n res.push(prefix + inner + ']');\n } else {\n res.push(prefix + inner);\n }\n } else {\n if (i === 1) {\n beg += inner;\n } else if (i === parts.length) {\n end += inner;\n } else {\n res.push('[' + prefix + inner + ']');\n }\n }\n }\n }\n\n var result = res.join('|');\n var rlen = res.length || 1;\n if (rlen > 1) {\n result = '(?:' + result + ')';\n rlen = 1;\n }\n if (beg) {\n rlen++;\n if (beg.charAt(0) === '[') {\n if (imbalanced) {\n beg = '\\\\[' + beg.slice(1);\n } else {\n beg += ']';\n }\n }\n result = beg + result;\n }\n if (end) {\n rlen++;\n if (end.slice(-1) === ']') {\n if (imbalanced) {\n end = end.slice(0, end.length - 1) + '\\\\]';\n } else {\n end = '[' + end;\n }\n }\n result += end;\n }\n\n if (rlen > 1) {\n result = result.split('][').join(']|[');\n if (result.indexOf('|') !== -1 && !/\\(\\?/.test(result)) {\n result = '(?:' + result + ')';\n }\n }\n\n result = result.replace(/\\[+=|=\\]+/g, '\\\\b');\n return result;\n}\n\nbrackets.makeRe = function(pattern) {\n try {\n return new RegExp(brackets(pattern));\n } catch (err) {}\n};\n\nbrackets.isMatch = function(str, pattern) {\n try {\n return brackets.makeRe(pattern).test(str);\n } catch (err) {\n return false;\n }\n};\n\nbrackets.match = function(arr, pattern) {\n var len = arr.length, i = 0;\n var res = arr.slice();\n\n var re = brackets.makeRe(pattern);\n while (i < len) {\n var ele = arr[i++];\n if (!re.test(ele)) {\n continue;\n }\n res.splice(i, 1);\n }\n return res;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/expand-brackets/index.js\n// module id = 120\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/expand-brackets/index.js?");
1141
1142/***/ },
1143/* 121 */
1144/*!*************************************!*\
1145 !*** ./~/is-posix-bracket/index.js ***!
1146 \*************************************/
1147/***/ function(module, exports) {
1148
1149 eval("/*!\n * is-posix-bracket <https://github.com/jonschlinkert/is-posix-bracket>\n *\n * Copyright (c) 2015-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isPosixBracket(str) {\n return typeof str === 'string' && /\\[([:.=+])(?:[^\\[\\]]|)+\\1\\]/.test(str);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-posix-bracket/index.js\n// module id = 121\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/is-posix-bracket/index.js?");
1150
1151/***/ },
1152/* 122 */
1153/*!****************************!*\
1154 !*** ./~/extglob/index.js ***!
1155 \****************************/
1156/***/ function(module, exports, __webpack_require__) {
1157
1158 eval("/*!\n * extglob <https://github.com/jonschlinkert/extglob>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Module dependencies\n */\n\nvar isExtglob = __webpack_require__(/*! is-extglob */ 123);\nvar re, cache = {};\n\n/**\n * Expose `extglob`\n */\n\nmodule.exports = extglob;\n\n/**\n * Convert the given extglob `string` to a regex-compatible\n * string.\n *\n * ```js\n * var extglob = require('extglob');\n * extglob('!(a?(b))');\n * //=> '(?!a(?:b)?)[^/]*?'\n * ```\n *\n * @param {String} `str` The string to convert.\n * @param {Object} `options`\n * @option {Boolean} [options] `esc` If `false` special characters will not be escaped. Defaults to `true`.\n * @option {Boolean} [options] `regex` If `true` a regular expression is returned instead of a string.\n * @return {String}\n * @api public\n */\n\n\nfunction extglob(str, opts) {\n opts = opts || {};\n var o = {}, i = 0;\n\n // fix common character reversals\n // '*!(.js)' => '*.!(js)'\n str = str.replace(/!\\(([^\\w*()])/g, '$1!(');\n\n // support file extension negation\n str = str.replace(/([*\\/])\\.!\\([*]\\)/g, function (m, ch) {\n if (ch === '/') {\n return escape('\\\\/[^.]+');\n }\n return escape('[^.]+');\n });\n\n // create a unique key for caching by\n // combining the string and options\n var key = str\n + String(!!opts.regex)\n + String(!!opts.contains)\n + String(!!opts.escape);\n\n if (cache.hasOwnProperty(key)) {\n return cache[key];\n }\n\n if (!(re instanceof RegExp)) {\n re = regex();\n }\n\n opts.negate = false;\n var m;\n\n while (m = re.exec(str)) {\n var prefix = m[1];\n var inner = m[3];\n if (prefix === '!') {\n opts.negate = true;\n }\n\n var id = '__EXTGLOB_' + (i++) + '__';\n // use the prefix of the _last_ (outtermost) pattern\n o[id] = wrap(inner, prefix, opts.escape);\n str = str.split(m[0]).join(id);\n }\n\n var keys = Object.keys(o);\n var len = keys.length;\n\n // we have to loop again to allow us to convert\n // patterns in reverse order (starting with the\n // innermost/last pattern first)\n while (len--) {\n var prop = keys[len];\n str = str.split(prop).join(o[prop]);\n }\n\n var result = opts.regex\n ? toRegex(str, opts.contains, opts.negate)\n : str;\n\n result = result.split('.').join('\\\\.');\n\n // cache the result and return it\n return (cache[key] = result);\n}\n\n/**\n * Convert `string` to a regex string.\n *\n * @param {String} `str`\n * @param {String} `prefix` Character that determines how to wrap the string.\n * @param {Boolean} `esc` If `false` special characters will not be escaped. Defaults to `true`.\n * @return {String}\n */\n\nfunction wrap(inner, prefix, esc) {\n if (esc) inner = escape(inner);\n\n switch (prefix) {\n case '!':\n return '(?!' + inner + ')[^/]' + (esc ? '%%%~' : '*?');\n case '@':\n return '(?:' + inner + ')';\n case '+':\n return '(?:' + inner + ')+';\n case '*':\n return '(?:' + inner + ')' + (esc ? '%%' : '*')\n case '?':\n return '(?:' + inner + '|)';\n default:\n return inner;\n }\n}\n\nfunction escape(str) {\n str = str.split('*').join('[^/]%%%~');\n str = str.split('.').join('\\\\.');\n return str;\n}\n\n/**\n * extglob regex.\n */\n\nfunction regex() {\n return /(\\\\?[@?!+*$]\\\\?)(\\(([^()]*?)\\))/;\n}\n\n/**\n * Negation regex\n */\n\nfunction negate(str) {\n return '(?!^' + str + ').*$';\n}\n\n/**\n * Create the regex to do the matching. If\n * the leading character in the `pattern` is `!`\n * a negation regex is returned.\n *\n * @param {String} `pattern`\n * @param {Boolean} `contains` Allow loose matching.\n * @param {Boolean} `isNegated` True if the pattern is a negation pattern.\n */\n\nfunction toRegex(pattern, contains, isNegated) {\n var prefix = contains ? '^' : '';\n var after = contains ? '$' : '';\n pattern = ('(?:' + pattern + ')' + after);\n if (isNegated) {\n pattern = prefix + negate(pattern);\n }\n return new RegExp(prefix + pattern);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extglob/index.js\n// module id = 122\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/extglob/index.js?");
1159
1160/***/ },
1161/* 123 */
1162/*!*******************************!*\
1163 !*** ./~/is-extglob/index.js ***!
1164 \*******************************/
1165/***/ function(module, exports) {
1166
1167 eval("/*!\n * is-extglob <https://github.com/jonschlinkert/is-extglob>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n return typeof str === 'string'\n && /[@?!+*]\\(/.test(str);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-extglob/index.js\n// module id = 123\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/is-extglob/index.js?");
1168
1169/***/ },
1170/* 124 */
1171/*!*****************************************!*\
1172 !*** ./~/micromatch/~/is-glob/index.js ***!
1173 \*****************************************/
1174/***/ function(module, exports, __webpack_require__) {
1175
1176 eval("/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nvar isExtglob = __webpack_require__(/*! is-extglob */ 123);\n\nmodule.exports = function isGlob(str) {\n return typeof str === 'string'\n && (/[*!?{}(|)[\\]]/.test(str)\n || isExtglob(str));\n};\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/micromatch/~/is-glob/index.js\n// module id = 124\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/micromatch/~/is-glob/index.js?");
1177
1178/***/ },
1179/* 125 */
1180/*!***********************************!*\
1181 !*** ./~/normalize-path/index.js ***!
1182 \***********************************/
1183/***/ function(module, exports, __webpack_require__) {
1184
1185 eval("/*!\n * normalize-path <https://github.com/jonschlinkert/normalize-path>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar removeTrailingSeparator = __webpack_require__(/*! remove-trailing-separator */ 126);\n\nmodule.exports = function normalizePath(str, stripTrailing) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n str = str.replace(/[\\\\\\/]+/g, '/');\n if (stripTrailing !== false) {\n str = removeTrailingSeparator(str);\n }\n return str;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/normalize-path/index.js\n// module id = 125\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/normalize-path/index.js?");
1186
1187/***/ },
1188/* 126 */
1189/*!**********************************************!*\
1190 !*** ./~/remove-trailing-separator/index.js ***!
1191 \**********************************************/
1192/***/ function(module, exports, __webpack_require__) {
1193
1194 eval("/* WEBPACK VAR INJECTION */(function(process) {var isWin = process.platform === 'win32';\n\nmodule.exports = function (str) {\n\twhile (endsInSeparator(str)) {\n\t\tstr = str.slice(0, -1);\n\t}\n\treturn str;\n};\n\nfunction endsInSeparator(str) {\n\tvar last = str[str.length - 1];\n\treturn str.length > 1 && (last === '/' || (isWin && last === '\\\\'));\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/remove-trailing-separator/index.js\n// module id = 126\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/remove-trailing-separator/index.js?");
1195
1196/***/ },
1197/* 127 */
1198/*!********************************!*\
1199 !*** ./~/object.omit/index.js ***!
1200 \********************************/
1201/***/ function(module, exports, __webpack_require__) {
1202
1203 eval("/*!\n * object.omit <https://github.com/jonschlinkert/object.omit>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isObject = __webpack_require__(/*! is-extendable */ 128);\nvar forOwn = __webpack_require__(/*! for-own */ 129);\n\nmodule.exports = function omit(obj, keys) {\n if (!isObject(obj)) return {};\n\n keys = [].concat.apply([], [].slice.call(arguments, 1));\n var last = keys[keys.length - 1];\n var res = {}, fn;\n\n if (typeof last === 'function') {\n fn = keys.pop();\n }\n\n var isFunction = typeof fn === 'function';\n if (!keys.length && !isFunction) {\n return obj;\n }\n\n forOwn(obj, function(value, key) {\n if (keys.indexOf(key) === -1) {\n\n if (!isFunction) {\n res[key] = value;\n } else if (fn(value, key, obj)) {\n res[key] = value;\n }\n }\n });\n return res;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/object.omit/index.js\n// module id = 127\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/object.omit/index.js?");
1204
1205/***/ },
1206/* 128 */
1207/*!**********************************!*\
1208 !*** ./~/is-extendable/index.js ***!
1209 \**********************************/
1210/***/ function(module, exports) {
1211
1212 eval("/*!\n * is-extendable <https://github.com/jonschlinkert/is-extendable>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isExtendable(val) {\n return typeof val !== 'undefined' && val !== null\n && (typeof val === 'object' || typeof val === 'function');\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-extendable/index.js\n// module id = 128\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/is-extendable/index.js?");
1213
1214/***/ },
1215/* 129 */
1216/*!****************************!*\
1217 !*** ./~/for-own/index.js ***!
1218 \****************************/
1219/***/ function(module, exports, __webpack_require__) {
1220
1221 eval("/*!\n * for-own <https://github.com/jonschlinkert/for-own>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar forIn = __webpack_require__(/*! for-in */ 130);\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nmodule.exports = function forOwn(obj, fn, thisArg) {\n forIn(obj, function(val, key) {\n if (hasOwn.call(obj, key)) {\n return fn.call(thisArg, obj[key], key, obj);\n }\n });\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/for-own/index.js\n// module id = 129\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/for-own/index.js?");
1222
1223/***/ },
1224/* 130 */
1225/*!***************************!*\
1226 !*** ./~/for-in/index.js ***!
1227 \***************************/
1228/***/ function(module, exports) {
1229
1230 eval("/*!\n * for-in <https://github.com/jonschlinkert/for-in>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function forIn(obj, fn, thisArg) {\n for (var key in obj) {\n if (fn.call(thisArg, obj[key], key, obj) === false) {\n break;\n }\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/for-in/index.js\n// module id = 130\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/for-in/index.js?");
1231
1232/***/ },
1233/* 131 */
1234/*!*******************************!*\
1235 !*** ./~/parse-glob/index.js ***!
1236 \*******************************/
1237/***/ function(module, exports, __webpack_require__) {
1238
1239 eval("/*!\n * parse-glob <https://github.com/jonschlinkert/parse-glob>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isGlob = __webpack_require__(/*! is-glob */ 132);\nvar findBase = __webpack_require__(/*! glob-base */ 133);\nvar extglob = __webpack_require__(/*! is-extglob */ 123);\nvar dotfile = __webpack_require__(/*! is-dotfile */ 137);\n\n/**\n * Expose `cache`\n */\n\nvar cache = module.exports.cache = {};\n\n/**\n * Parse a glob pattern into tokens.\n *\n * When no paths or '**' are in the glob, we use a\n * different strategy for parsing the filename, since\n * file names can contain braces and other difficult\n * patterns. such as:\n *\n * - `*.{a,b}`\n * - `(**|*.js)`\n */\n\nmodule.exports = function parseGlob(glob) {\n if (cache.hasOwnProperty(glob)) {\n return cache[glob];\n }\n\n var tok = {};\n tok.orig = glob;\n tok.is = {};\n\n // unescape dots and slashes in braces/brackets\n glob = escape(glob);\n\n var parsed = findBase(glob);\n tok.is.glob = parsed.isGlob;\n\n tok.glob = parsed.glob;\n tok.base = parsed.base;\n var segs = /([^\\/]*)$/.exec(glob);\n\n tok.path = {};\n tok.path.dirname = '';\n tok.path.basename = segs[1] || '';\n tok.path.dirname = glob.split(tok.path.basename).join('') || '';\n var basename = (tok.path.basename || '').split('.') || '';\n tok.path.filename = basename[0] || '';\n tok.path.extname = basename.slice(1).join('.') || '';\n tok.path.ext = '';\n\n if (isGlob(tok.path.dirname) && !tok.path.basename) {\n if (!/\\/$/.test(tok.glob)) {\n tok.path.basename = tok.glob;\n }\n tok.path.dirname = tok.base;\n }\n\n if (glob.indexOf('/') === -1 && !tok.is.globstar) {\n tok.path.dirname = '';\n tok.path.basename = tok.orig;\n }\n\n var dot = tok.path.basename.indexOf('.');\n if (dot !== -1) {\n tok.path.filename = tok.path.basename.slice(0, dot);\n tok.path.extname = tok.path.basename.slice(dot);\n }\n\n if (tok.path.extname.charAt(0) === '.') {\n var exts = tok.path.extname.split('.');\n tok.path.ext = exts[exts.length - 1];\n }\n\n // unescape dots and slashes in braces/brackets\n tok.glob = unescape(tok.glob);\n tok.path.dirname = unescape(tok.path.dirname);\n tok.path.basename = unescape(tok.path.basename);\n tok.path.filename = unescape(tok.path.filename);\n tok.path.extname = unescape(tok.path.extname);\n\n // Booleans\n var is = (glob && tok.is.glob);\n tok.is.negated = glob && glob.charAt(0) === '!';\n tok.is.extglob = glob && extglob(glob);\n tok.is.braces = has(is, glob, '{');\n tok.is.brackets = has(is, glob, '[:');\n tok.is.globstar = has(is, glob, '**');\n tok.is.dotfile = dotfile(tok.path.basename) || dotfile(tok.path.filename);\n tok.is.dotdir = dotdir(tok.path.dirname);\n return (cache[glob] = tok);\n}\n\n/**\n * Returns true if the glob matches dot-directories.\n *\n * @param {Object} `tok` The tokens object\n * @param {Object} `path` The path object\n * @return {Object}\n */\n\nfunction dotdir(base) {\n if (base.indexOf('/.') !== -1) {\n return true;\n }\n if (base.charAt(0) === '.' && base.charAt(1) !== '/') {\n return true;\n }\n return false;\n}\n\n/**\n * Returns true if the pattern has the given `ch`aracter(s)\n *\n * @param {Object} `glob` The glob pattern.\n * @param {Object} `ch` The character to test for\n * @return {Object}\n */\n\nfunction has(is, glob, ch) {\n return is && glob.indexOf(ch) !== -1;\n}\n\n/**\n * Escape/unescape utils\n */\n\nfunction escape(str) {\n var re = /\\{([^{}]*?)}|\\(([^()]*?)\\)|\\[([^\\[\\]]*?)\\]/g;\n return str.replace(re, function (outter, braces, parens, brackets) {\n var inner = braces || parens || brackets;\n if (!inner) { return outter; }\n return outter.split(inner).join(esc(inner));\n });\n}\n\nfunction esc(str) {\n str = str.split('/').join('__SLASH__');\n str = str.split('.').join('__DOT__');\n return str;\n}\n\nfunction unescape(str) {\n str = str.split('__SLASH__').join('/');\n str = str.split('__DOT__').join('.');\n return str;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parse-glob/index.js\n// module id = 131\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/parse-glob/index.js?");
1240
1241/***/ },
1242/* 132 */
1243/*!*****************************************!*\
1244 !*** ./~/parse-glob/~/is-glob/index.js ***!
1245 \*****************************************/
1246/***/ function(module, exports, __webpack_require__) {
1247
1248 eval("/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nvar isExtglob = __webpack_require__(/*! is-extglob */ 123);\n\nmodule.exports = function isGlob(str) {\n return typeof str === 'string'\n && (/[*!?{}(|)[\\]]/.test(str)\n || isExtglob(str));\n};\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parse-glob/~/is-glob/index.js\n// module id = 132\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/parse-glob/~/is-glob/index.js?");
1249
1250/***/ },
1251/* 133 */
1252/*!******************************!*\
1253 !*** ./~/glob-base/index.js ***!
1254 \******************************/
1255/***/ function(module, exports, __webpack_require__) {
1256
1257 eval("/*!\n * glob-base <https://github.com/jonschlinkert/glob-base>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar path = __webpack_require__(/*! path */ 101);\nvar parent = __webpack_require__(/*! glob-parent */ 134);\nvar isGlob = __webpack_require__(/*! is-glob */ 136);\n\nmodule.exports = function globBase(pattern) {\n if (typeof pattern !== 'string') {\n throw new TypeError('glob-base expects a string.');\n }\n\n var res = {};\n res.base = parent(pattern);\n res.isGlob = isGlob(pattern);\n\n if (res.base !== '.') {\n res.glob = pattern.substr(res.base.length);\n if (res.glob.charAt(0) === '/') {\n res.glob = res.glob.substr(1);\n }\n } else {\n res.glob = pattern;\n }\n\n if (!res.isGlob) {\n res.base = dirname(pattern);\n res.glob = res.base !== '.'\n ? pattern.substr(res.base.length)\n : pattern;\n }\n\n if (res.glob.substr(0, 2) === './') {\n res.glob = res.glob.substr(2);\n }\n if (res.glob.charAt(0) === '/') {\n res.glob = res.glob.substr(1);\n }\n return res;\n};\n\nfunction dirname(glob) {\n if (glob.slice(-1) === '/') return glob;\n return path.dirname(glob);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/glob-base/index.js\n// module id = 133\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/glob-base/index.js?");
1258
1259/***/ },
1260/* 134 */
1261/*!********************************!*\
1262 !*** ./~/glob-parent/index.js ***!
1263 \********************************/
1264/***/ function(module, exports, __webpack_require__) {
1265
1266 eval("'use strict';\n\nvar path = __webpack_require__(/*! path */ 101);\nvar isglob = __webpack_require__(/*! is-glob */ 135);\n\nmodule.exports = function globParent(str) {\n\tstr += 'a'; // preserves full path in case of trailing path separator\n\tdo {str = path.dirname(str)} while (isglob(str));\n\treturn str;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/glob-parent/index.js\n// module id = 134\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/glob-parent/index.js?");
1267
1268/***/ },
1269/* 135 */
1270/*!******************************************!*\
1271 !*** ./~/glob-parent/~/is-glob/index.js ***!
1272 \******************************************/
1273/***/ function(module, exports, __webpack_require__) {
1274
1275 eval("/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nvar isExtglob = __webpack_require__(/*! is-extglob */ 123);\n\nmodule.exports = function isGlob(str) {\n return typeof str === 'string'\n && (/[*!?{}(|)[\\]]/.test(str)\n || isExtglob(str));\n};\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/glob-parent/~/is-glob/index.js\n// module id = 135\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/glob-parent/~/is-glob/index.js?");
1276
1277/***/ },
1278/* 136 */
1279/*!****************************************!*\
1280 !*** ./~/glob-base/~/is-glob/index.js ***!
1281 \****************************************/
1282/***/ function(module, exports, __webpack_require__) {
1283
1284 eval("/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nvar isExtglob = __webpack_require__(/*! is-extglob */ 123);\n\nmodule.exports = function isGlob(str) {\n return typeof str === 'string'\n && (/[*!?{}(|)[\\]]/.test(str)\n || isExtglob(str));\n};\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/glob-base/~/is-glob/index.js\n// module id = 136\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/glob-base/~/is-glob/index.js?");
1285
1286/***/ },
1287/* 137 */
1288/*!*******************************!*\
1289 !*** ./~/is-dotfile/index.js ***!
1290 \*******************************/
1291/***/ function(module, exports) {
1292
1293 eval("/*!\n * is-dotfile <https://github.com/jonschlinkert/is-dotfile>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nmodule.exports = function(str) {\n if (str.charCodeAt(0) === 46 /* . */ && str.indexOf('/', 1) === -1) {\n return true;\n }\n var slash = str.lastIndexOf('/');\n return slash !== -1 ? str.charCodeAt(slash + 1) === 46 /* . */ : false;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-dotfile/index.js\n// module id = 137\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/is-dotfile/index.js?");
1294
1295/***/ },
1296/* 138 */
1297/*!********************************!*\
1298 !*** ./~/regex-cache/index.js ***!
1299 \********************************/
1300/***/ function(module, exports, __webpack_require__) {
1301
1302 eval("/*!\n * regex-cache <https://github.com/jonschlinkert/regex-cache>\n *\n * Copyright (c) 2015 Jon Schlinkert.\n * Licensed under the MIT license.\n */\n\n'use strict';\n\nvar isPrimitive = __webpack_require__(/*! is-primitive */ 139);\nvar equal = __webpack_require__(/*! is-equal-shallow */ 140);\nvar basic = {};\nvar cache = {};\n\n/**\n * Expose `regexCache`\n */\n\nmodule.exports = regexCache;\n\n/**\n * Memoize the results of a call to the new RegExp constructor.\n *\n * @param {Function} fn [description]\n * @param {String} str [description]\n * @param {Options} options [description]\n * @param {Boolean} nocompare [description]\n * @return {RegExp}\n */\n\nfunction regexCache(fn, str, opts) {\n var key = '_default_', regex, cached;\n\n if (!str && !opts) {\n if (typeof fn !== 'function') {\n return fn;\n }\n return basic[key] || (basic[key] = fn(str));\n }\n\n var isString = typeof str === 'string';\n if (isString) {\n if (!opts) {\n return basic[str] || (basic[str] = fn(str));\n }\n key = str;\n } else {\n opts = str;\n }\n\n cached = cache[key];\n if (cached && equal(cached.opts, opts)) {\n return cached.regex;\n }\n\n memo(key, opts, (regex = fn(str, opts)));\n return regex;\n}\n\nfunction memo(key, opts, regex) {\n cache[key] = {regex: regex, opts: opts};\n}\n\n/**\n * Expose `cache`\n */\n\nmodule.exports.cache = cache;\nmodule.exports.basic = basic;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/regex-cache/index.js\n// module id = 138\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/regex-cache/index.js?");
1303
1304/***/ },
1305/* 139 */
1306/*!*********************************!*\
1307 !*** ./~/is-primitive/index.js ***!
1308 \*********************************/
1309/***/ function(module, exports) {
1310
1311 eval("/*!\n * is-primitive <https://github.com/jonschlinkert/is-primitive>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n// see http://jsperf.com/testing-value-is-primitive/7\nmodule.exports = function isPrimitive(value) {\n return value == null || (typeof value !== 'function' && typeof value !== 'object');\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-primitive/index.js\n// module id = 139\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/is-primitive/index.js?");
1312
1313/***/ },
1314/* 140 */
1315/*!*************************************!*\
1316 !*** ./~/is-equal-shallow/index.js ***!
1317 \*************************************/
1318/***/ function(module, exports, __webpack_require__) {
1319
1320 eval("/*!\n * is-equal-shallow <https://github.com/jonschlinkert/is-equal-shallow>\n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nvar isPrimitive = __webpack_require__(/*! is-primitive */ 139);\n\nmodule.exports = function isEqual(a, b) {\n if (!a && !b) { return true; }\n if (!a && b || a && !b) { return false; }\n\n var numKeysA = 0, numKeysB = 0, key;\n for (key in b) {\n numKeysB++;\n if (!isPrimitive(b[key]) || !a.hasOwnProperty(key) || (a[key] !== b[key])) {\n return false;\n }\n }\n for (key in a) {\n numKeysA++;\n }\n return numKeysA === numKeysB;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-equal-shallow/index.js\n// module id = 140\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/is-equal-shallow/index.js?");
1321
1322/***/ },
1323/* 141 */
1324/*!**********************************!*\
1325 !*** ./~/micromatch/lib/glob.js ***!
1326 \**********************************/
1327/***/ function(module, exports, __webpack_require__) {
1328
1329 eval("'use strict';\n\nvar chars = __webpack_require__(/*! ./chars */ 142);\nvar utils = __webpack_require__(/*! ./utils */ 100);\n\n/**\n * Expose `Glob`\n */\n\nvar Glob = module.exports = function Glob(pattern, options) {\n if (!(this instanceof Glob)) {\n return new Glob(pattern, options);\n }\n this.options = options || {};\n this.pattern = pattern;\n this.history = [];\n this.tokens = {};\n this.init(pattern);\n};\n\n/**\n * Initialize defaults\n */\n\nGlob.prototype.init = function(pattern) {\n this.orig = pattern;\n this.negated = this.isNegated();\n this.options.track = this.options.track || false;\n this.options.makeRe = true;\n};\n\n/**\n * Push a change into `glob.history`. Useful\n * for debugging.\n */\n\nGlob.prototype.track = function(msg) {\n if (this.options.track) {\n this.history.push({msg: msg, pattern: this.pattern});\n }\n};\n\n/**\n * Return true if `glob.pattern` was negated\n * with `!`, also remove the `!` from the pattern.\n *\n * @return {Boolean}\n */\n\nGlob.prototype.isNegated = function() {\n if (this.pattern.charCodeAt(0) === 33 /* '!' */) {\n this.pattern = this.pattern.slice(1);\n return true;\n }\n return false;\n};\n\n/**\n * Expand braces in the given glob pattern.\n *\n * We only need to use the [braces] lib when\n * patterns are nested.\n */\n\nGlob.prototype.braces = function() {\n if (this.options.nobraces !== true && this.options.nobrace !== true) {\n // naive/fast check for imbalanced characters\n var a = this.pattern.match(/[\\{\\(\\[]/g);\n var b = this.pattern.match(/[\\}\\)\\]]/g);\n\n // if imbalanced, don't optimize the pattern\n if (a && b && (a.length !== b.length)) {\n this.options.makeRe = false;\n }\n\n // expand brace patterns and join the resulting array\n var expanded = utils.braces(this.pattern, this.options);\n this.pattern = expanded.join('|');\n }\n};\n\n/**\n * Expand bracket expressions in `glob.pattern`\n */\n\nGlob.prototype.brackets = function() {\n if (this.options.nobrackets !== true) {\n this.pattern = utils.brackets(this.pattern);\n }\n};\n\n/**\n * Expand bracket expressions in `glob.pattern`\n */\n\nGlob.prototype.extglob = function() {\n if (this.options.noextglob === true) return;\n\n if (utils.isExtglob(this.pattern)) {\n this.pattern = utils.extglob(this.pattern, {escape: true});\n }\n};\n\n/**\n * Parse the given pattern\n */\n\nGlob.prototype.parse = function(pattern) {\n this.tokens = utils.parseGlob(pattern || this.pattern, true);\n return this.tokens;\n};\n\n/**\n * Replace `a` with `b`. Also tracks the change before and\n * after each replacement. This is disabled by default, but\n * can be enabled by setting `options.track` to true.\n *\n * Also, when the pattern is a string, `.split()` is used,\n * because it's much faster than replace.\n *\n * @param {RegExp|String} `a`\n * @param {String} `b`\n * @param {Boolean} `escape` When `true`, escapes `*` and `?` in the replacement.\n * @return {String}\n */\n\nGlob.prototype._replace = function(a, b, escape) {\n this.track('before (find): \"' + a + '\" (replace with): \"' + b + '\"');\n if (escape) b = esc(b);\n if (a && b && typeof a === 'string') {\n this.pattern = this.pattern.split(a).join(b);\n } else {\n this.pattern = this.pattern.replace(a, b);\n }\n this.track('after');\n};\n\n/**\n * Escape special characters in the given string.\n *\n * @param {String} `str` Glob pattern\n * @return {String}\n */\n\nGlob.prototype.escape = function(str) {\n this.track('before escape: ');\n var re = /[\"\\\\](['\"]?[^\"'\\\\]['\"]?)/g;\n\n this.pattern = str.replace(re, function($0, $1) {\n var o = chars.ESC;\n var ch = o && o[$1];\n if (ch) {\n return ch;\n }\n if (/[a-z]/i.test($0)) {\n return $0.split('\\\\').join('');\n }\n return $0;\n });\n\n this.track('after escape: ');\n};\n\n/**\n * Unescape special characters in the given string.\n *\n * @param {String} `str`\n * @return {String}\n */\n\nGlob.prototype.unescape = function(str) {\n var re = /__([A-Z]+)_([A-Z]+)__/g;\n this.pattern = str.replace(re, function($0, $1) {\n return chars[$1][$0];\n });\n this.pattern = unesc(this.pattern);\n};\n\n/**\n * Escape/unescape utils\n */\n\nfunction esc(str) {\n str = str.split('?').join('%~');\n str = str.split('*').join('%%');\n return str;\n}\n\nfunction unesc(str) {\n str = str.split('%~').join('?');\n str = str.split('%%').join('*');\n return str;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/micromatch/lib/glob.js\n// module id = 141\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/micromatch/lib/glob.js?");
1330
1331/***/ },
1332/* 142 */
1333/*!***********************************!*\
1334 !*** ./~/micromatch/lib/chars.js ***!
1335 \***********************************/
1336/***/ function(module, exports) {
1337
1338 eval("'use strict';\n\nvar chars = {}, unesc, temp;\n\nfunction reverse(object, prepender) {\n return Object.keys(object).reduce(function(reversed, key) {\n var newKey = prepender ? prepender + key : key; // Optionally prepend a string to key.\n reversed[object[key]] = newKey; // Swap key and value.\n return reversed; // Return the result.\n }, {});\n}\n\n/**\n * Regex for common characters\n */\n\nchars.escapeRegex = {\n '?': /\\?/g,\n '@': /\\@/g,\n '!': /\\!/g,\n '+': /\\+/g,\n '*': /\\*/g,\n '(': /\\(/g,\n ')': /\\)/g,\n '[': /\\[/g,\n ']': /\\]/g\n};\n\n/**\n * Escape characters\n */\n\nchars.ESC = {\n '?': '__UNESC_QMRK__',\n '@': '__UNESC_AMPE__',\n '!': '__UNESC_EXCL__',\n '+': '__UNESC_PLUS__',\n '*': '__UNESC_STAR__',\n ',': '__UNESC_COMMA__',\n '(': '__UNESC_LTPAREN__',\n ')': '__UNESC_RTPAREN__',\n '[': '__UNESC_LTBRACK__',\n ']': '__UNESC_RTBRACK__'\n};\n\n/**\n * Unescape characters\n */\n\nchars.UNESC = unesc || (unesc = reverse(chars.ESC, '\\\\'));\n\nchars.ESC_TEMP = {\n '?': '__TEMP_QMRK__',\n '@': '__TEMP_AMPE__',\n '!': '__TEMP_EXCL__',\n '*': '__TEMP_STAR__',\n '+': '__TEMP_PLUS__',\n ',': '__TEMP_COMMA__',\n '(': '__TEMP_LTPAREN__',\n ')': '__TEMP_RTPAREN__',\n '[': '__TEMP_LTBRACK__',\n ']': '__TEMP_RTBRACK__'\n};\n\nchars.TEMP = temp || (temp = reverse(chars.ESC_TEMP));\n\nmodule.exports = chars;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/micromatch/lib/chars.js\n// module id = 142\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/micromatch/lib/chars.js?");
1339
1340/***/ },
1341/* 143 */
1342/*!*************************!*\
1343 !*** ./src/cache-fs.ts ***!
1344 \*************************/
1345/***/ function(module, exports, __webpack_require__) {
1346
1347 eval("\"use strict\";\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Promise = __webpack_require__(/*! bluebird */ 47);\nvar api_1 = __webpack_require__(/*! ./api */ 89);\nvar memory_fs_1 = __webpack_require__(/*! ./memory-fs */ 91);\nvar utils_1 = __webpack_require__(/*! ./utils */ 94);\nfunction nodesToMap(tree, accumulator) {\n if (accumulator === void 0) { accumulator = {}; }\n tree.forEach(function (node) {\n if (api_1.isDir(node))\n nodesToMap(node.children, accumulator);\n accumulator[node.fullPath] = node;\n });\n return accumulator;\n}\n;\nfunction getTreesDiff(cached, real) {\n var diff = {\n toAdd: [],\n toDelete: [],\n toChange: []\n };\n Object.keys(cached).forEach(function (cachedPath) {\n if (!real[cachedPath]) {\n diff.toDelete.push(cached[cachedPath]);\n diff.toChange = diff.toChange.filter(function (path) { return path !== cachedPath; });\n }\n else {\n var node = cached[cachedPath];\n if (api_1.isFile(node) && node.content)\n diff.toChange.push(cachedPath);\n }\n });\n Object.keys(real).forEach(function (realPath) {\n if (!cached[realPath])\n diff.toAdd.push(real[realPath]);\n });\n return diff;\n}\nvar CacheFileSystem = (function () {\n function CacheFileSystem(fs, shouldRescanOnError) {\n if (shouldRescanOnError === void 0) { shouldRescanOnError = true; }\n var _this = this;\n this.fs = fs;\n this.shouldRescanOnError = shouldRescanOnError;\n this.events = utils_1.makeEventsEmitter();\n this.isTreeCached = false;\n this.pathsInCache = {};\n this.onFsError = function (_a) {\n var stack = _a.stack;\n _this.shouldRescanOnError ?\n _this.rescanOnError() :\n _this.emit('unexpectedError', { stack: stack });\n };\n this.baseUrl = fs.baseUrl;\n this.cache = new memory_fs_1.MemoryFileSystem();\n this.fs.events.on('unexpectedError', this.onFsError);\n this.fs.events.on('fileCreated', function (event) {\n var fullPath = event.fullPath, newContent = event.newContent;\n try {\n _this.cache.saveFileSync(fullPath, newContent);\n _this.pathsInCache[fullPath] = true;\n _this.events.emit('fileCreated', event);\n }\n catch (e) {\n _this.onFsError(e);\n }\n });\n this.fs.events.on('fileChanged', function (event) {\n var fullPath = event.fullPath, newContent = event.newContent;\n try {\n _this.cache.saveFileSync(fullPath, newContent);\n _this.pathsInCache[fullPath] = true;\n _this.events.emit('fileChanged', event);\n }\n catch (e) {\n _this.onFsError(e);\n }\n });\n this.fs.events.on('fileDeleted', function (event) {\n try {\n _this.cache.deleteFileSync(event.fullPath);\n _this.pathsInCache[event.fullPath] = true;\n _this.events.emit('fileDeleted', event);\n }\n catch (e) {\n _this.onFsError(e);\n }\n });\n this.fs.events.on('directoryCreated', function (event) {\n try {\n _this.cache.ensureDirectorySync(event.fullPath);\n _this.events.emit('directoryCreated', event);\n }\n catch (e) {\n _this.onFsError(e);\n }\n });\n this.fs.events.on('directoryDeleted', function (event) {\n try {\n _this.cache.deleteDirectorySync(event.fullPath, true);\n _this.events.emit('directoryDeleted', event);\n }\n catch (e) {\n _this.onFsError(e);\n }\n });\n }\n CacheFileSystem.prototype.saveFile = function (fullPath, newContent) {\n var _this = this;\n return this.fs.saveFile(fullPath, newContent)\n .then(function () { return _this.cache.saveFile(fullPath, newContent); })\n .then(function () {\n _this.pathsInCache[fullPath] = true;\n });\n };\n CacheFileSystem.prototype.deleteFile = function (fullPath) {\n var _this = this;\n return this.fs.deleteFile(fullPath)\n .then(function () { return _this.cache.deleteFile(fullPath); });\n };\n CacheFileSystem.prototype.deleteDirectory = function (fullPath, recursive) {\n var _this = this;\n if (recursive === void 0) { recursive = false; }\n return this.fs.deleteDirectory(fullPath, recursive)\n .then(function () { return _this.cache.deleteDirectory(fullPath, recursive); });\n };\n CacheFileSystem.prototype.ensureDirectory = function (fullPath) {\n var _this = this;\n return this.fs.ensureDirectory(fullPath)\n .then(function () { return _this.cache.ensureDirectory(fullPath); });\n };\n CacheFileSystem.prototype.loadTextFile = function (fullPath) {\n var _this = this;\n if (this.pathsInCache[fullPath])\n return this.cache.loadTextFile(fullPath);\n return this.fs.loadTextFile(fullPath)\n .then(function (file) {\n return _this.cache.saveFile(fullPath, file)\n .then(function () { return _this.pathsInCache[fullPath] = true; })\n .then(function () { return _this.loadTextFile(fullPath); });\n });\n };\n CacheFileSystem.prototype.loadDirectoryTree = function () {\n var _this = this;\n if (this.isTreeCached)\n return this.cache.loadDirectoryTree();\n return this.cacheTree().then(function () {\n _this.isTreeCached = true;\n return _this.loadDirectoryTree();\n });\n };\n CacheFileSystem.prototype.dispose = function () {\n if (api_1.isDisposable(this.fs))\n this.fs.dispose();\n };\n CacheFileSystem.prototype.rescanOnError = function () {\n var _this = this;\n var cachedTree = this.cache.loadDirectoryTreeSync();\n this.isTreeCached = false;\n this.loadDirectoryTree().then(function (realTree) {\n var _a = getTreesDiff(nodesToMap(cachedTree.children), nodesToMap(realTree.children)), toDelete = _a.toDelete, toAdd = _a.toAdd, toChange = _a.toChange;\n toDelete.forEach(function (node) {\n _this.emit((api_1.isDir(node) ? 'directory' : 'file') + \"Deleted\", { fullPath: node.fullPath });\n });\n toAdd.forEach(function (node) {\n if (api_1.isDir(node)) {\n _this.emit('directoryCreated', { fullPath: node.fullPath });\n }\n else {\n _this.loadTextFile(node.fullPath).then(function (newContent) {\n _this.emit('fileCreated', {\n fullPath: node.fullPath,\n newContent: newContent\n });\n });\n }\n });\n toChange.forEach(function (fullPath) { return _this.loadTextFile(fullPath).then(function (newContent) {\n _this.emit('fileChanged', { fullPath: fullPath, newContent: newContent });\n }); });\n });\n };\n CacheFileSystem.prototype.emit = function (type, data) {\n this.events.emit(type, __assign({}, data, { type: type }));\n };\n CacheFileSystem.prototype.cacheTree = function () {\n var _this = this;\n this.cache = new memory_fs_1.MemoryFileSystem();\n this.pathsInCache = {};\n return this.fs.loadDirectoryTree()\n .then(function (tree) { return _this.fill(tree); });\n };\n CacheFileSystem.prototype.fill = function (tree) {\n var _this = this;\n if (api_1.isDir(tree)) {\n return this.cache.ensureDirectory(tree.fullPath)\n .then(function () { return Promise.all(tree.children.map(function (child) { return _this.fill(child); })); })\n .then(function () { return _this.cache; });\n }\n return this.cache.saveFile(tree.fullPath, '')\n .then(function () { return Promise.resolve(_this.cache); });\n };\n return CacheFileSystem;\n}());\nexports.CacheFileSystem = CacheFileSystem;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/cache-fs.ts\n// module id = 143\n// module chunks = 0 1\n//# sourceURL=webpack:///./src/cache-fs.ts?");
1348
1349/***/ },
1350/* 144 */
1351/*!*******************************!*\
1352 !*** ./src/wamp-client-fs.ts ***!
1353 \*******************************/
1354/***/ function(module, exports, __webpack_require__) {
1355
1356 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Promise = __webpack_require__(/*! bluebird */ 47);\nvar autobahn_1 = __webpack_require__(/*! autobahn */ 145);\nvar api_1 = __webpack_require__(/*! ./api */ 89);\nvar utils_1 = __webpack_require__(/*! ./utils */ 94);\nexports.noConnectionError = \"WampClientFileSystem hasn't opened connection yet (forgot to init()?).\";\nvar WampClientFileSystem = (function () {\n function WampClientFileSystem(url, realm, initTimeout) {\n if (initTimeout === void 0) { initTimeout = 5000; }\n this.realm = realm;\n this.initTimeout = initTimeout;\n this.events = utils_1.makeEventsEmitter();\n this.baseUrl = url;\n this.realm = realm;\n this.connection = new autobahn_1.Connection({ url: url, realm: realm });\n }\n WampClientFileSystem.prototype.init = function () {\n var _this = this;\n var _a = this, baseUrl = _a.baseUrl, initTimeout = _a.initTimeout, connection = _a.connection;\n return new Promise(function (resolve) {\n connection.open();\n connection.onopen = function (session) {\n _this.session = session;\n _this.realmPrefix = _this.realm.replace(/(.*\\..*)(\\..*)$/, '$1.'); // 'xxx.yyy.zzz' => 'xxx.yyy.'\n api_1.fileSystemEventNames.forEach(function (fsEvent) {\n _this.session.subscribe(_this.realmPrefix + fsEvent, function (res) { return _this.events.emit(fsEvent, res && res[0]); });\n });\n return resolve(_this);\n };\n }).timeout(initTimeout, \"Cant't open connection to the WAMP server at \" + baseUrl + \" for \" + initTimeout + \"ms.\");\n };\n WampClientFileSystem.prototype.saveFile = function (fullPath, newContent) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (!_this.session || !_this.session.isOpen) {\n return reject(exports.noConnectionError);\n }\n _this.session.call(_this.realmPrefix + \"saveFile\", [fullPath, newContent])\n .then(function () { return resolve(); })\n .catch(function (error) { return reject(new Error(error)); });\n });\n };\n WampClientFileSystem.prototype.deleteFile = function (fullPath) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (!_this.session || !_this.session.isOpen) {\n return reject(exports.noConnectionError);\n }\n _this.session.call(_this.realmPrefix + \"deleteFile\", [fullPath])\n .then(function () { return resolve(); })\n .catch(function (error) { return reject(new Error(error)); });\n });\n };\n WampClientFileSystem.prototype.deleteDirectory = function (fullPath, recursive) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (!_this.session || !_this.session.isOpen) {\n return reject(exports.noConnectionError);\n }\n _this.session.call(_this.realmPrefix + \"deleteDirectory\", [fullPath, recursive])\n .then(function () { return resolve(); })\n .catch(function (error) { return reject(new Error(error)); });\n });\n };\n WampClientFileSystem.prototype.ensureDirectory = function (fullPath) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (!_this.session || !_this.session.isOpen) {\n return reject(exports.noConnectionError);\n }\n _this.session.call(_this.realmPrefix + \"ensureDirectory\", [fullPath])\n .then(function () { return resolve(); })\n .catch(function (error) { return reject(new Error(error)); });\n });\n };\n WampClientFileSystem.prototype.loadTextFile = function (fullPath) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (!_this.session || !_this.session.isOpen) {\n return reject(exports.noConnectionError);\n }\n return _this.session.call(_this.realmPrefix + \"loadTextFile\", [fullPath])\n .then(function (content) { return resolve(content); })\n .catch(function (error) { return reject(new Error(error)); });\n });\n };\n WampClientFileSystem.prototype.loadDirectoryTree = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (!_this.session || !_this.session.isOpen) {\n return reject(exports.noConnectionError);\n }\n return _this.session.call(_this.realmPrefix + \"loadDirectoryTree\")\n .then(function (tree) { return resolve(tree); })\n .catch(function (error) { return reject(new Error(error)); });\n });\n };\n WampClientFileSystem.prototype.dispose = function () {\n this.connection && this.connection.close();\n };\n return WampClientFileSystem;\n}());\nexports.WampClientFileSystem = WampClientFileSystem;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/wamp-client-fs.ts\n// module id = 144\n// module chunks = 0 1\n//# sourceURL=webpack:///./src/wamp-client-fs.ts?");
1357
1358/***/ },
1359/* 145 */
1360/*!*****************************!*\
1361 !*** ./~/autobahn/index.js ***!
1362 \*****************************/
1363/***/ function(module, exports, __webpack_require__) {
1364
1365 eval("///////////////////////////////////////////////////////////////////////////////\n//\n// AutobahnJS - http://autobahn.ws, http://wamp.ws\n//\n// A JavaScript library for WAMP (\"The Web Application Messaging Protocol\").\n//\n// Copyright (c) Crossbar.io Technologies GmbH and contributors\n//\n// Licensed under the MIT License.\n// http://www.opensource.org/licenses/mit-license.php\n//\n///////////////////////////////////////////////////////////////////////////////\n\nmodule.exports = __webpack_require__(/*! ./lib/autobahn.js */ 146);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/index.js\n// module id = 145\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/index.js?");
1366
1367/***/ },
1368/* 146 */
1369/*!************************************!*\
1370 !*** ./~/autobahn/lib/autobahn.js ***!
1371 \************************************/
1372/***/ function(module, exports, __webpack_require__) {
1373
1374 eval("/* WEBPACK VAR INJECTION */(function(global) {///////////////////////////////////////////////////////////////////////////////\n//\n// AutobahnJS - http://autobahn.ws, http://wamp.ws\n//\n// A JavaScript library for WAMP (\"The Web Application Messaging Protocol\").\n//\n// Copyright (c) Crossbar.io Technologies GmbH and contributors\n//\n// Licensed under the MIT License.\n// http://www.opensource.org/licenses/mit-license.php\n//\n///////////////////////////////////////////////////////////////////////////////\n\n// Polyfills for <= IE9\n__webpack_require__(/*! ./polyfill.js */ 147);\n\nvar pjson = __webpack_require__(/*! ../package.json */ 155);\n\nvar when = __webpack_require__(/*! when */ 156);\n//var fn = require(\"when/function\");\n\nvar msgpack = __webpack_require__(/*! msgpack-lite */ 176);\nvar cbor = __webpack_require__(/*! cbor */ 206);\nvar nacl = __webpack_require__(/*! tweetnacl */ 251);\n\nif ('AUTOBAHN_DEBUG' in global && AUTOBAHN_DEBUG) {\n // https://github.com/cujojs/when/blob/master/docs/api.md#whenmonitor\n __webpack_require__(/*! when/monitor/console */ 253);\n if ('console' in global) {\n console.log(\"AutobahnJS debug enabled\");\n }\n}\n\nvar util = __webpack_require__(/*! ./util.js */ 258);\nvar log = __webpack_require__(/*! ./log.js */ 259);\nvar session = __webpack_require__(/*! ./session.js */ 260);\nvar connection = __webpack_require__(/*! ./connection.js */ 263);\nvar configure = __webpack_require__(/*! ./configure.js */ 264);\nvar serializer = __webpack_require__(/*! ./serializer.js */ 266);\n\nvar persona = __webpack_require__(/*! ./auth/persona.js */ 270);\nvar cra = __webpack_require__(/*! ./auth/cra.js */ 271);\nvar cryptosign = __webpack_require__(/*! ./auth/cryptosign.js */ 306);\n\nexports.version = pjson.version;\n\nexports.transports = configure.transports;\n\nexports.Connection = connection.Connection;\n\nexports.Session = session.Session;\nexports.Invocation = session.Invocation;\nexports.Event = session.Event;\nexports.Result = session.Result;\nexports.Error = session.Error;\nexports.Subscription = session.Subscription;\nexports.Registration = session.Registration;\nexports.Publication = session.Publication;\n\nexports.serializer = serializer;\n\nexports.auth_persona = persona.auth;\nexports.auth_cra = cra;\nexports.auth_cryptosign = cryptosign;\n\nexports.when = when;\nexports.msgpack = msgpack;\nexports.cbor = cbor;\nexports.nacl = nacl;\n\nexports.util = util;\nexports.log = log;\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/autobahn.js\n// module id = 146\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/autobahn.js?");
1375
1376/***/ },
1377/* 147 */
1378/*!************************************!*\
1379 !*** ./~/autobahn/lib/polyfill.js ***!
1380 \************************************/
1381/***/ function(module, exports, __webpack_require__) {
1382
1383 eval("__webpack_require__(/*! ./polyfill/object.js */ 148);\n__webpack_require__(/*! ./polyfill/array.js */ 149);\n__webpack_require__(/*! ./polyfill/string.js */ 150);\n__webpack_require__(/*! ./polyfill/function.js */ 151);\n__webpack_require__(/*! ./polyfill/console.js */ 152);\n__webpack_require__(/*! ./polyfill/typedarray.js */ 153);\n__webpack_require__(/*! ./polyfill/json.js */ 154);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/polyfill.js\n// module id = 147\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/polyfill.js?");
1384
1385/***/ },
1386/* 148 */
1387/*!*******************************************!*\
1388 !*** ./~/autobahn/lib/polyfill/object.js ***!
1389 \*******************************************/
1390/***/ function(module, exports) {
1391
1392 eval("if (!Object.create) {\n Object.create = (function(){\n function F(){}\n\n return function(o){\n if (arguments.length != 1) {\n throw new Error('Object.create implementation only accepts one parameter.');\n }\n F.prototype = o;\n return new F()\n }\n })()\n}\n// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\nif (!Object.keys) {\n Object.keys = (function () {\n 'use strict';\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),\n dontEnums = [\n 'toString',\n 'toLocaleString',\n 'valueOf',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'constructor'\n ],\n dontEnumsLength = dontEnums.length;\n\n return function (obj) {\n if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\n throw new TypeError('Object.keys called on non-object');\n }\n\n var result = [], prop, i;\n\n for (prop in obj) {\n if (hasOwnProperty.call(obj, prop)) {\n result.push(prop);\n }\n }\n\n if (hasDontEnumBug) {\n for (i = 0; i < dontEnumsLength; i++) {\n if (hasOwnProperty.call(obj, dontEnums[i])) {\n result.push(dontEnums[i]);\n }\n }\n }\n return result;\n };\n }());\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/polyfill/object.js\n// module id = 148\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/polyfill/object.js?");
1393
1394/***/ },
1395/* 149 */
1396/*!******************************************!*\
1397 !*** ./~/autobahn/lib/polyfill/array.js ***!
1398 \******************************************/
1399/***/ function(module, exports) {
1400
1401 eval("if ( 'function' !== typeof Array.prototype.reduce ) {\n Array.prototype.reduce = function( callback /*, initialValue*/ ) {\n 'use strict';\n var len, t, value, k;\n if ( null === this || 'undefined' === typeof this ) {\n throw new TypeError(\n 'Array.prototype.reduce called on null or undefined' );\n }\n if ( 'function' !== typeof callback ) {\n throw new TypeError( callback + ' is not a function' );\n }\n t = Object( this );\n len = t.length >>> 0;\n k = 0;\n if ( arguments.length >= 2 ) {\n value = arguments[1];\n } else {\n while ( k < len && ! k in t ) k++;\n if ( k >= len )\n throw new TypeError('Reduce of empty array with no initial value');\n value = t[ k++ ];\n }\n for ( ; k < len ; k++ ) {\n if ( k in t ) {\n value = callback( value, t[k], k, t );\n }\n }\n return value;\n };\n}\n\n// Add ECMA262-5 Array methods if not supported natively\n//\nif (!('indexOf' in Array.prototype)) {\n Array.prototype.indexOf= function(find, i /*opt*/) {\n if (i===undefined) i= 0;\n if (i<0) i+= this.length;\n if (i<0) i= 0;\n for (var n= this.length; i<n; i++)\n if (i in this && this[i]===find)\n return i;\n return -1;\n };\n}\nif (!('lastIndexOf' in Array.prototype)) {\n Array.prototype.lastIndexOf= function(find, i /*opt*/) {\n if (i===undefined) i= this.length-1;\n if (i<0) i+= this.length;\n if (i>this.length-1) i= this.length-1;\n for (i++; i-->0;) /* i++ because from-argument is sadly inclusive */\n if (i in this && this[i]===find)\n return i;\n return -1;\n };\n}\nif (!('forEach' in Array.prototype)) {\n Array.prototype.forEach= function(action, that /*opt*/) {\n for (var i= 0, n= this.length; i<n; i++)\n if (i in this)\n action.call(that, this[i], i, this);\n };\n}\nif (!('map' in Array.prototype)) {\n Array.prototype.map= function(mapper, that /*opt*/) {\n var other= new Array(this.length);\n for (var i= 0, n= this.length; i<n; i++)\n if (i in this)\n other[i]= mapper.call(that, this[i], i, this);\n return other;\n };\n}\nif (!('filter' in Array.prototype)) {\n Array.prototype.filter= function(filter, that /*opt*/) {\n var other= [], v;\n for (var i=0, n= this.length; i<n; i++)\n if (i in this && filter.call(that, v= this[i], i, this))\n other.push(v);\n return other;\n };\n}\nif (!('every' in Array.prototype)) {\n Array.prototype.every= function(tester, that /*opt*/) {\n for (var i= 0, n= this.length; i<n; i++)\n if (i in this && !tester.call(that, this[i], i, this))\n return false;\n return true;\n };\n}\nif (!('some' in Array.prototype)) {\n Array.prototype.some= function(tester, that /*opt*/) {\n for (var i= 0, n= this.length; i<n; i++)\n if (i in this && tester.call(that, this[i], i, this))\n return true;\n return false;\n };\n}\n\nif ( 'function' !== typeof Array.prototype.reduceRight ) {\n Array.prototype.reduceRight = function( callback /*, initialValue*/ ) {\n 'use strict';\n if ( null === this || 'undefined' === typeof this ) {\n throw new TypeError(\n 'Array.prototype.reduce called on null or undefined' );\n }\n if ( 'function' !== typeof callback ) {\n throw new TypeError( callback + ' is not a function' );\n }\n var t = Object( this ), len = t.length >>> 0, k = len - 1, value;\n if ( arguments.length >= 2 ) {\n value = arguments[1];\n } else {\n while ( k >= 0 && ! k in t ) k--;\n if ( k < 0 )\n throw new TypeError('Reduce of empty array with no initial value');\n value = t[ k-- ];\n }\n for ( ; k >= 0 ; k-- ) {\n if ( k in t ) {\n value = callback( value, t[k], k, t );\n }\n }\n return value;\n };\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/polyfill/array.js\n// module id = 149\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/polyfill/array.js?");
1402
1403/***/ },
1404/* 150 */
1405/*!*******************************************!*\
1406 !*** ./~/autobahn/lib/polyfill/string.js ***!
1407 \*******************************************/
1408/***/ function(module, exports) {
1409
1410 eval("// Add ECMA262-5 string trim if not supported natively\n//\nif (!('trim' in String.prototype)) {\n String.prototype.trim= function() {\n return this.replace(/^\\s+/, '').replace(/\\s+$/, '');\n };\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/polyfill/string.js\n// module id = 150\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/polyfill/string.js?");
1411
1412/***/ },
1413/* 151 */
1414/*!*********************************************!*\
1415 !*** ./~/autobahn/lib/polyfill/function.js ***!
1416 \*********************************************/
1417/***/ function(module, exports) {
1418
1419 eval("if (!Function.prototype.bind) {\n //credits: taken from bind_even_never in this discussion: https://prototype.lighthouseapp.com/projects/8886/tickets/215-optimize-bind-bindaseventlistener#ticket-215-9\n Function.prototype.bind = function(context) {\n var fn = this, args = Array.prototype.slice.call(arguments, 1);\n return function(){\n return fn.apply(context, Array.prototype.concat.apply(args, arguments));\n };\n };\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/polyfill/function.js\n// module id = 151\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/polyfill/function.js?");
1420
1421/***/ },
1422/* 152 */
1423/*!********************************************!*\
1424 !*** ./~/autobahn/lib/polyfill/console.js ***!
1425 \********************************************/
1426/***/ function(module, exports) {
1427
1428 eval("\n(function(console) {\n /*********************************************************************************************\n * Make sure console exists because IE blows up if it's not open and you attempt to access it\n * Create some dummy functions if we need to, so we don't have to if/else everything\n *********************************************************************************************/\n console||(console = window.console = {\n // all this \"a, b, c, d, e\" garbage is to make the IDEs happy, since they can't do variable argument lists\n /**\n * @param a\n * @param [b]\n * @param [c]\n * @param [d]\n * @param [e]\n */\n log: function(a, b, c, d, e) {},\n /**\n * @param a\n * @param [b]\n * @param [c]\n * @param [d]\n * @param [e]\n */\n info: function(a, b, c, d, e) {},\n /**\n * @param a\n * @param [b]\n * @param [c]\n * @param [d]\n * @param [e]\n */\n warn: function(a, b, c, d, e) {},\n /**\n * @param a\n * @param [b]\n * @param [c]\n * @param [d]\n * @param [e]\n */\n error: function(a, b, c, d, e) {},\n\n assert: function(test, message) {}\n });\n\n // IE 9 won't allow us to call console.log.apply (WTF IE!) It also reports typeof(console.log) as 'object' (UNH!)\n // but together, those two errors can be useful in allowing us to fix stuff so it works right\n if( typeof(console.log) === 'object' ) {\n // Array.forEach doesn't work in IE 8 so don't try that :(\n console.log = Function.prototype.call.bind(console.log, console);\n console.info = Function.prototype.call.bind(console.info, console);\n console.warn = Function.prototype.call.bind(console.warn, console);\n console.error = Function.prototype.call.bind(console.error, console);\n console.debug = Function.prototype.call.bind(console.info, console);\n }\n\n /**\n * Support group and groupEnd functions\n */\n ('group' in console) ||\n (console.group = function(msg) {\n console.info(\"\\n--- \"+msg+\" ---\\n\");\n });\n ('groupEnd' in console) ||\n (console.groupEnd = function() {\n console.log(\"\\n\");\n });\n ('assert' in console) ||\n (console.assert = function(test, message) {\n if (!test) {\n try {\n // attempt to preserve the stack\n throw new Error(\"assertion failed: \" + message);\n } catch(error) {\n setTimeout(function(){\n throw error;\n }, 0);\n }\n }\n });\n\n /**\n * Support time and timeEnd functions\n */\n ('time' in console) ||\n (function() {\n var trackedTimes = {};\n console.time = function(msg) {\n trackedTimes[msg] = new Date().getTime();\n };\n console.timeEnd = function(msg) {\n var end = new Date().getTime(), time = (msg in trackedTimes)? end - trackedTimes[msg] : 0;\n console.info(msg+': '+time+'ms')\n };\n }());\n\n})(typeof console !== 'undefined' ? console : undefined);\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/polyfill/console.js\n// module id = 152\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/polyfill/console.js?");
1429
1430/***/ },
1431/* 153 */
1432/*!***********************************************!*\
1433 !*** ./~/autobahn/lib/polyfill/typedarray.js ***!
1434 \***********************************************/
1435/***/ function(module, exports) {
1436
1437 eval("/*\n Copyright (c) 2010, Linden Research, Inc.\n Copyright (c) 2014, Joshua Bell\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n $/LicenseInfo$\n */\n\n// Original can be found at:\n// https://bitbucket.org/lindenlab/llsd\n// Modifications by Joshua Bell inexorabletash@gmail.com\n// https://github.com/inexorabletash/polyfill\n\n// ES3/ES5 implementation of the Krhonos Typed Array Specification\n// Ref: http://www.khronos.org/registry/typedarray/specs/latest/\n// Date: 2011-02-01\n//\n// Variations:\n// * Allows typed_array.get/set() as alias for subscripts (typed_array[])\n// * Gradually migrating structure from Khronos spec to ES6 spec\nif (typeof Uint8Array === \"undefined\") {\n (function (global, win) {\n 'use strict';\n\n var undefined = (void 0); // Paranoia\n\n // Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to\n // create, and consume so much memory, that the browser appears frozen.\n var MAX_ARRAY_LENGTH = 1e5;\n\n // Approximations of internal ECMAScript conversion functions\n function Type(v) {\n switch (typeof v) {\n case 'undefined':\n return 'undefined';\n case 'boolean':\n return 'boolean';\n case 'number':\n return 'number';\n case 'string':\n return 'string';\n default:\n return v === null ? 'null' : 'object';\n }\n }\n\n // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues:\n function Class(v) {\n return Object.prototype.toString.call(v).replace(/^\\[object *|\\]$/g, '');\n }\n\n function IsCallable(o) {\n return typeof o === 'function';\n }\n\n function ToObject(v) {\n if (v === null || v === undefined) throw TypeError();\n return Object(v);\n }\n\n function ToInt32(v) {\n return v >> 0;\n }\n\n function ToUint32(v) {\n return v >>> 0;\n }\n\n // Snapshot intrinsics\n var LN2 = Math.LN2,\n abs = Math.abs,\n floor = Math.floor,\n log = Math.log,\n max = Math.max,\n min = Math.min,\n pow = Math.pow,\n round = Math.round;\n\n // emulate ES5 getter/setter API using legacy APIs\n // http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx\n // (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but\n // note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless)\n\n (function () {\n var orig = Object.defineProperty;\n var dom_only = !(function () {\n try {\n return Object.defineProperty({}, 'x', {});\n } catch (_) {\n return false;\n }\n }());\n\n if (!orig || dom_only) {\n Object.defineProperty = function (o, prop, desc) {\n // In IE8 try built-in implementation for defining properties on DOM prototypes.\n if (orig) {\n try {\n return orig(o, prop, desc);\n } catch (_) {\n }\n }\n\n if (o !== Object(o))\n throw TypeError('Object.defineProperty called on non-object');\n if (Object.prototype.__defineGetter__ && ('get' in desc))\n Object.prototype.__defineGetter__.call(o, prop, desc.get);\n if (Object.prototype.__defineSetter__ && ('set' in desc))\n Object.prototype.__defineSetter__.call(o, prop, desc.set);\n if ('value' in desc)\n o[prop] = desc.value;\n return o;\n };\n }\n }());\n\n // ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value)\n // for index in 0 ... obj.length\n function makeArrayAccessors(obj) {\n if (obj.length > MAX_ARRAY_LENGTH) throw RangeError('Array too large for polyfill');\n\n function makeArrayAccessor(index) {\n Object.defineProperty(obj, index, {\n 'get': function () {\n return obj._getter(index);\n },\n 'set': function (v) {\n obj._setter(index, v);\n },\n enumerable: true,\n configurable: false\n });\n }\n\n var i;\n for (i = 0; i < obj.length; i += 1) {\n makeArrayAccessor(i);\n }\n }\n\n // Internal conversion functions:\n // pack<Type>() - take a number (interpreted as Type), output a byte array\n // unpack<Type>() - take a byte array, output a Type-like number\n\n function as_signed(value, bits) {\n var s = 32 - bits;\n return (value << s) >> s;\n }\n\n function as_unsigned(value, bits) {\n var s = 32 - bits;\n return (value << s) >>> s;\n }\n\n function packI8(n) {\n return [n & 0xff];\n }\n\n function unpackI8(bytes) {\n return as_signed(bytes[0], 8);\n }\n\n function packU8(n) {\n return [n & 0xff];\n }\n\n function unpackU8(bytes) {\n return as_unsigned(bytes[0], 8);\n }\n\n function packU8Clamped(n) {\n n = round(Number(n));\n return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff];\n }\n\n function packI16(n) {\n return [(n >> 8) & 0xff, n & 0xff];\n }\n\n function unpackI16(bytes) {\n return as_signed(bytes[0] << 8 | bytes[1], 16);\n }\n\n function packU16(n) {\n return [(n >> 8) & 0xff, n & 0xff];\n }\n\n function unpackU16(bytes) {\n return as_unsigned(bytes[0] << 8 | bytes[1], 16);\n }\n\n function packI32(n) {\n return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff];\n }\n\n function unpackI32(bytes) {\n return as_signed(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32);\n }\n\n function packU32(n) {\n return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff];\n }\n\n function unpackU32(bytes) {\n return as_unsigned(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32);\n }\n\n function packIEEE754(v, ebits, fbits) {\n\n var bias = (1 << (ebits - 1)) - 1,\n s, e, f, ln,\n i, bits, str, bytes;\n\n function roundToEven(n) {\n var w = floor(n), f = n - w;\n if (f < 0.5)\n return w;\n if (f > 0.5)\n return w + 1;\n return w % 2 ? w + 1 : w;\n }\n\n // Compute sign, exponent, fraction\n if (v !== v) {\n // NaN\n // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping\n e = (1 << ebits) - 1;\n f = pow(2, fbits - 1);\n s = 0;\n } else if (v === Infinity || v === -Infinity) {\n e = (1 << ebits) - 1;\n f = 0;\n s = (v < 0) ? 1 : 0;\n } else if (v === 0) {\n e = 0;\n f = 0;\n s = (1 / v === -Infinity) ? 1 : 0;\n } else {\n s = v < 0;\n v = abs(v);\n\n if (v >= pow(2, 1 - bias)) {\n e = min(floor(log(v) / LN2), 1023);\n f = roundToEven(v / pow(2, e) * pow(2, fbits));\n if (f / pow(2, fbits) >= 2) {\n e = e + 1;\n f = 1;\n }\n if (e > bias) {\n // Overflow\n e = (1 << ebits) - 1;\n f = 0;\n } else {\n // Normalized\n e = e + bias;\n f = f - pow(2, fbits);\n }\n } else {\n // Denormalized\n e = 0;\n f = roundToEven(v / pow(2, 1 - bias - fbits));\n }\n }\n\n // Pack sign, exponent, fraction\n bits = [];\n for (i = fbits; i; i -= 1) {\n bits.push(f % 2 ? 1 : 0);\n f = floor(f / 2);\n }\n for (i = ebits; i; i -= 1) {\n bits.push(e % 2 ? 1 : 0);\n e = floor(e / 2);\n }\n bits.push(s ? 1 : 0);\n bits.reverse();\n str = bits.join('');\n\n // Bits to bytes\n bytes = [];\n while (str.length) {\n bytes.push(parseInt(str.substring(0, 8), 2));\n str = str.substring(8);\n }\n return bytes;\n }\n\n function unpackIEEE754(bytes, ebits, fbits) {\n // Bytes to bits\n var bits = [], i, j, b, str,\n bias, s, e, f;\n\n for (i = bytes.length; i; i -= 1) {\n b = bytes[i - 1];\n for (j = 8; j; j -= 1) {\n bits.push(b % 2 ? 1 : 0);\n b = b >> 1;\n }\n }\n bits.reverse();\n str = bits.join('');\n\n // Unpack sign, exponent, fraction\n bias = (1 << (ebits - 1)) - 1;\n s = parseInt(str.substring(0, 1), 2) ? -1 : 1;\n e = parseInt(str.substring(1, 1 + ebits), 2);\n f = parseInt(str.substring(1 + ebits), 2);\n\n // Produce number\n if (e === (1 << ebits) - 1) {\n return f !== 0 ? NaN : s * Infinity;\n } else if (e > 0) {\n // Normalized\n return s * pow(2, e - bias) * (1 + f / pow(2, fbits));\n } else if (f !== 0) {\n // Denormalized\n return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));\n } else {\n return s < 0 ? -0 : 0;\n }\n }\n\n function unpackF64(b) {\n return unpackIEEE754(b, 11, 52);\n }\n\n function packF64(v) {\n return packIEEE754(v, 11, 52);\n }\n\n function unpackF32(b) {\n return unpackIEEE754(b, 8, 23);\n }\n\n function packF32(v) {\n return packIEEE754(v, 8, 23);\n }\n\n //\n // 3 The ArrayBuffer Type\n //\n\n (function () {\n\n function ArrayBuffer(length) {\n length = ToInt32(length);\n if (length < 0) throw RangeError('ArrayBuffer size is not a small enough positive integer.');\n Object.defineProperty(this, 'byteLength', {value: length});\n Object.defineProperty(this, '_bytes', {value: Array(length)});\n\n for (var i = 0; i < length; i += 1)\n this._bytes[i] = 0;\n }\n\n global.ArrayBuffer = global.ArrayBuffer || ArrayBuffer;\n\n //\n // 5 The Typed Array View Types\n //\n\n function $TypedArray$() {\n\n // %TypedArray% ( length )\n if (!arguments.length || typeof arguments[0] !== 'object') {\n return (function (length) {\n length = ToInt32(length);\n if (length < 0) throw RangeError('length is not a small enough positive integer.');\n Object.defineProperty(this, 'length', {value: length});\n Object.defineProperty(this, 'byteLength', {value: length * this.BYTES_PER_ELEMENT});\n Object.defineProperty(this, 'buffer', {value: new ArrayBuffer(this.byteLength)});\n Object.defineProperty(this, 'byteOffset', {value: 0});\n\n }).apply(this, arguments);\n }\n\n // %TypedArray% ( typedArray )\n if (arguments.length >= 1 &&\n Type(arguments[0]) === 'object' &&\n arguments[0] instanceof $TypedArray$) {\n return (function (typedArray) {\n if (this.constructor !== typedArray.constructor) throw TypeError();\n\n var byteLength = typedArray.length * this.BYTES_PER_ELEMENT;\n Object.defineProperty(this, 'buffer', {value: new ArrayBuffer(byteLength)});\n Object.defineProperty(this, 'byteLength', {value: byteLength});\n Object.defineProperty(this, 'byteOffset', {value: 0});\n Object.defineProperty(this, 'length', {value: typedArray.length});\n\n for (var i = 0; i < this.length; i += 1)\n this._setter(i, typedArray._getter(i));\n\n }).apply(this, arguments);\n }\n\n // %TypedArray% ( array )\n if (arguments.length >= 1 &&\n Type(arguments[0]) === 'object' && !(arguments[0] instanceof $TypedArray$) && !(arguments[0] instanceof ArrayBuffer || Class(arguments[0]) === 'ArrayBuffer')) {\n return (function (array) {\n\n var byteLength = array.length * this.BYTES_PER_ELEMENT;\n Object.defineProperty(this, 'buffer', {value: new ArrayBuffer(byteLength)});\n Object.defineProperty(this, 'byteLength', {value: byteLength});\n Object.defineProperty(this, 'byteOffset', {value: 0});\n Object.defineProperty(this, 'length', {value: array.length});\n\n for (var i = 0; i < this.length; i += 1) {\n var s = array[i];\n this._setter(i, Number(s));\n }\n }).apply(this, arguments);\n }\n\n // %TypedArray% ( buffer, byteOffset=0, length=undefined )\n if (arguments.length >= 1 &&\n Type(arguments[0]) === 'object' &&\n (arguments[0] instanceof ArrayBuffer || Class(arguments[0]) === 'ArrayBuffer')) {\n return (function (buffer, byteOffset, length) {\n\n byteOffset = ToUint32(byteOffset);\n if (byteOffset > buffer.byteLength)\n throw RangeError('byteOffset out of range');\n\n // The given byteOffset must be a multiple of the element\n // size of the specific type, otherwise an exception is raised.\n if (byteOffset % this.BYTES_PER_ELEMENT)\n throw RangeError('buffer length minus the byteOffset is not a multiple of the element size.');\n\n if (length === undefined) {\n var byteLength = buffer.byteLength - byteOffset;\n if (byteLength % this.BYTES_PER_ELEMENT)\n throw RangeError('length of buffer minus byteOffset not a multiple of the element size');\n length = byteLength / this.BYTES_PER_ELEMENT;\n\n } else {\n length = ToUint32(length);\n byteLength = length * this.BYTES_PER_ELEMENT;\n }\n\n if ((byteOffset + byteLength) > buffer.byteLength)\n throw RangeError('byteOffset and length reference an area beyond the end of the buffer');\n\n Object.defineProperty(this, 'buffer', {value: buffer});\n Object.defineProperty(this, 'byteLength', {value: byteLength});\n Object.defineProperty(this, 'byteOffset', {value: byteOffset});\n Object.defineProperty(this, 'length', {value: length});\n\n }).apply(this, arguments);\n }\n\n // %TypedArray% ( all other argument combinations )\n throw TypeError();\n }\n\n // Properties of the %TypedArray Instrinsic Object\n\n // %TypedArray%.from ( source , mapfn=undefined, thisArg=undefined )\n Object.defineProperty($TypedArray$, 'from', {value: function (iterable) {\n return new this(iterable);\n }});\n\n // %TypedArray%.of ( ...items )\n Object.defineProperty($TypedArray$, 'of', {value: function (/*...items*/) {\n return new this(arguments);\n }});\n\n // %TypedArray%.prototype\n var $TypedArrayPrototype$ = {};\n $TypedArray$.prototype = $TypedArrayPrototype$;\n\n // WebIDL: getter type (unsigned long index);\n Object.defineProperty($TypedArray$.prototype, '_getter', {value: function (index) {\n if (arguments.length < 1) throw SyntaxError('Not enough arguments');\n\n index = ToUint32(index);\n if (index >= this.length)\n return undefined;\n\n var bytes = [], i, o;\n for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;\n i < this.BYTES_PER_ELEMENT;\n i += 1, o += 1) {\n bytes.push(this.buffer._bytes[o]);\n }\n return this._unpack(bytes);\n }});\n\n // NONSTANDARD: convenience alias for getter: type get(unsigned long index);\n Object.defineProperty($TypedArray$.prototype, 'get', {value: $TypedArray$.prototype._getter});\n\n // WebIDL: setter void (unsigned long index, type value);\n Object.defineProperty($TypedArray$.prototype, '_setter', {value: function (index, value) {\n if (arguments.length < 2) throw SyntaxError('Not enough arguments');\n\n index = ToUint32(index);\n if (index >= this.length)\n return;\n\n var bytes = this._pack(value), i, o;\n for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;\n i < this.BYTES_PER_ELEMENT;\n i += 1, o += 1) {\n this.buffer._bytes[o] = bytes[i];\n }\n }});\n\n // get %TypedArray%.prototype.buffer\n // get %TypedArray%.prototype.byteLength\n // get %TypedArray%.prototype.byteOffset\n // -- applied directly to the object in the constructor\n\n // %TypedArray%.prototype.constructor\n Object.defineProperty($TypedArray$.prototype, 'constructor', {value: $TypedArray$});\n\n // %TypedArray%.prototype.copyWithin (target, start, end = this.length )\n Object.defineProperty($TypedArray$.prototype, 'copyWithin', {value: function (m_target, m_start) {\n var m_end = arguments[2];\n\n var m_o = ToObject(this);\n var lenVal = m_o.length;\n var m_len = ToUint32(lenVal);\n m_len = max(m_len, 0);\n var relativeTarget = ToInt32(m_target);\n var m_to;\n if (relativeTarget < 0)\n {\n m_to = max(m_len + relativeTarget, 0);\n }\n else\n {\n m_to = min(relativeTarget, m_len);\n }\n var relativeStart = ToInt32(m_start);\n var m_from;\n if (relativeStart < 0)\n {\n m_from = max(m_len + relativeStart, 0);\n }\n else\n {\n m_from = min(relativeStart, m_len);\n }\n var relativeEnd;\n if (m_end === undefined)\n {\n relativeEnd = m_len;\n }\n else\n {\n relativeEnd = ToInt32(m_end);\n }\n var m_final;\n if (relativeEnd < 0) {\n m_final = max(m_len + relativeEnd, 0);\n } else {\n m_final = min(relativeEnd, m_len);\n }\n\n var m_count = min(m_final - m_from, m_len - m_to);\n var direction;\n if (from < m_to && m_to < m_from + m_count) {\n direction = -1;\n m_from = m_from + m_count - 1;\n m_to = m_to + m_count - 1;\n } else {\n direction = 1;\n }\n while (count > 0) {\n m_o._setter(m_to, m_o._getter(m_from));\n m_from = m_from + direction;\n m_to = m_to + direction;\n m_count = m_count - 1;\n }\n return m_o;\n }});\n\n // %TypedArray%.prototype.entries ( )\n // -- defined in es6.js to shim browsers w/ native TypedArrays\n\n // %TypedArray%.prototype.every ( callbackfn, thisArg = undefined )\n Object.defineProperty($TypedArray$.prototype, 'every', {value: function (callbackfn) {\n if (this === undefined || this === null) throw TypeError();\n var t = Object(this);\n var len = ToUint32(t.length);\n if (!IsCallable(callbackfn)) throw TypeError();\n var thisArg = arguments[1];\n for (var i = 0; i < len; i++) {\n if (!callbackfn.call(thisArg, t._getter(i), i, t))\n return false;\n }\n return true;\n }});\n\n // %TypedArray%.prototype.fill (value, start = 0, end = this.length )\n Object.defineProperty($TypedArray$.prototype, 'fill', {value: function (value) {\n var m_start = arguments[1],\n m_end = arguments[2];\n\n var m_o = ToObject(this);\n var lenVal = m_o.length;\n var m_len = ToUint32(lenVal);\n m_len = max(m_len, 0);\n var relativeStart = ToInt32(m_start);\n var m_k;\n if (relativeStart < 0)\n {\n m_k = max((m_len + relativeStart), 0);\n }\n else\n {\n m_k = min(relativeStart, m_len);\n }\n var relativeEnd;\n if (m_end === undefined)\n {\n relativeEnd = m_len;\n }\n else\n {\n relativeEnd = ToInt32(m_end);\n }\n var m_final;\n if (relativeEnd < 0)\n {\n m_final = max((m_len + relativeEnd), 0);\n }\n else\n {\n m_final = min(relativeEnd, m_len);\n }\n while (m_k < m_final) {\n m_o._setter(m_k, value);\n m_k += 1;\n }\n return m_o;\n }});\n\n // %TypedArray%.prototype.filter ( callbackfn, thisArg = undefined )\n Object.defineProperty($TypedArray$.prototype, 'filter', {value: function (callbackfn) {\n if (this === undefined || this === null) throw TypeError();\n var t = Object(this);\n var len = ToUint32(t.length);\n if (!IsCallable(callbackfn)) throw TypeError();\n var res = [];\n var thisp = arguments[1];\n for (var i = 0; i < len; i++) {\n var val = t._getter(i); // in case fun mutates this\n if (callbackfn.call(thisp, val, i, t))\n res.push(val);\n }\n return new this.constructor(res);\n }});\n\n // %TypedArray%.prototype.find (predicate, thisArg = undefined)\n Object.defineProperty($TypedArray$.prototype, 'find', {value: function (predicate) {\n var o = ToObject(this);\n var lenValue = o.length;\n var len = ToUint32(lenValue);\n if (!IsCallable(predicate)) throw TypeError();\n var t = arguments.length > 1 ? arguments[1] : undefined;\n var k = 0;\n while (k < len) {\n var kValue = o._getter(k);\n var testResult = predicate.call(t, kValue, k, o);\n if (Boolean(testResult))\n return kValue;\n ++k;\n }\n return undefined;\n }});\n\n // %TypedArray%.prototype.findIndex ( predicate, thisArg = undefined )\n Object.defineProperty($TypedArray$.prototype, 'findIndex', {value: function (predicate) {\n var o = ToObject(this);\n var lenValue = o.length;\n var len = ToUint32(lenValue);\n if (!IsCallable(predicate)) throw TypeError();\n var t = arguments.length > 1 ? arguments[1] : undefined;\n var k = 0;\n while (k < len) {\n var kValue = o._getter(k);\n var testResult = predicate.call(t, kValue, k, o);\n if (Boolean(testResult))\n return k;\n ++k;\n }\n return -1;\n }});\n\n // %TypedArray%.prototype.forEach ( callbackfn, thisArg = undefined )\n Object.defineProperty($TypedArray$.prototype, 'forEach', {value: function (callbackfn) {\n if (this === undefined || this === null) throw TypeError();\n var t = Object(this);\n var len = ToUint32(t.length);\n if (!IsCallable(callbackfn)) throw TypeError();\n var thisp = arguments[1];\n for (var i = 0; i < len; i++)\n callbackfn.call(thisp, t._getter(i), i, t);\n }});\n\n // %TypedArray%.prototype.indexOf (searchElement, fromIndex = 0 )\n Object.defineProperty($TypedArray$.prototype, 'indexOf', {value: function (searchElement) {\n if (this === undefined || this === null) throw TypeError();\n var t = Object(this);\n var len = ToUint32(t.length);\n if (len === 0) return -1;\n var no = 0;\n var na;\n if (arguments.length > 0) {\n na = Number(arguments[1]);\n if (na !== no) {\n no = 0;\n } else if (na !== 0 && na !== (1 / 0) && na !== -(1 / 0)) {\n no = (na > 0 || -1) * floor(abs(na));\n }\n }\n if (no >= len) return -1;\n var k = no >= 0 ? no : max(len - abs(no), 0);\n for (; k < len; k++) {\n if (t._getter(k) === searchElement) {\n return k;\n }\n }\n return -1;\n }});\n\n // %TypedArray%.prototype.join ( separator )\n Object.defineProperty($TypedArray$.prototype, 'join', {value: function (separator) {\n if (this === undefined || this === null) throw TypeError();\n var t = Object(this);\n var len = ToUint32(t.length);\n var tmp = Array(len);\n for (var i = 0; i < len; ++i)\n tmp[i] = t._getter(i);\n return tmp.join(separator === undefined ? ',' : separator); // Hack for IE7\n }});\n\n // %TypedArray%.prototype.keys ( )\n // -- defined in es6.js to shim browsers w/ native TypedArrays\n\n // %TypedArray%.prototype.lastIndexOf ( searchElement, fromIndex = this.length-1 )\n Object.defineProperty($TypedArray$.prototype, 'lastIndexOf', {value: function (searchElement) {\n if (this === undefined || this === null) throw TypeError();\n var t = Object(this);\n var len = ToUint32(t.length);\n if (len === 0) return -1;\n var n = len;\n if (arguments.length > 1) {\n n = Number(arguments[1]);\n if (n !== n) {\n n = 0;\n } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {\n n = (n > 0 || -1) * floor(abs(n));\n }\n }\n var k = n >= 0 ? min(n, len - 1) : len - abs(n);\n for (; k >= 0; k--) {\n if (t._getter(k) === searchElement)\n return k;\n }\n return -1;\n }});\n\n // get %TypedArray%.prototype.length\n // -- applied directly to the object in the constructor\n\n // %TypedArray%.prototype.map ( callbackfn, thisArg = undefined )\n Object.defineProperty($TypedArray$.prototype, 'map', {value: function (callbackfn) {\n if (this === undefined || this === null) throw TypeError();\n var t = Object(this);\n var len = ToUint32(t.length);\n if (!IsCallable(callbackfn)) throw TypeError();\n var res = [];\n res.length = len;\n var thisp = arguments[1];\n for (var i = 0; i < len; i++)\n res[i] = callbackfn.call(thisp, t._getter(i), i, t);\n return new this.constructor(res);\n }});\n\n // %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )\n Object.defineProperty($TypedArray$.prototype, 'reduce', {value: function (callbackfn) {\n if (this === undefined || this === null) throw TypeError();\n var t = Object(this);\n var len = ToUint32(t.length);\n if (!IsCallable(callbackfn)) throw TypeError();\n // no value to return if no initial value and an empty array\n if (len === 0 && arguments.length === 1) throw TypeError();\n var k = 0;\n var accumulator;\n if (arguments.length >= 2) {\n accumulator = arguments[1];\n } else {\n accumulator = t._getter(k++);\n }\n while (k < len) {\n accumulator = callbackfn.call(undefined, accumulator, t._getter(k), k, t);\n k++;\n }\n return accumulator;\n }});\n\n // %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )\n Object.defineProperty($TypedArray$.prototype, 'reduceRight', {value: function (callbackfn) {\n if (this === undefined || this === null) throw TypeError();\n var t = Object(this);\n var len = ToUint32(t.length);\n if (!IsCallable(callbackfn)) throw TypeError();\n // no value to return if no initial value, empty array\n if (len === 0 && arguments.length === 1) throw TypeError();\n var k = len - 1;\n var accumulator;\n if (arguments.length >= 2) {\n accumulator = arguments[1];\n } else {\n accumulator = t._getter(k--);\n }\n while (k >= 0) {\n accumulator = callbackfn.call(undefined, accumulator, t._getter(k), k, t);\n k--;\n }\n return accumulator;\n }});\n\n // %TypedArray%.prototype.reverse ( )\n Object.defineProperty($TypedArray$.prototype, 'reverse', {value: function () {\n if (this === undefined || this === null) throw TypeError();\n var t = Object(this);\n var len = ToUint32(t.length);\n var half = floor(len / 2);\n for (var i = 0, j = len - 1; i < half; ++i, --j) {\n var tmp = t._getter(i);\n t._setter(i, t._getter(j));\n t._setter(j, tmp);\n }\n return t;\n }});\n\n // %TypedArray%.prototype.set(array, offset = 0 )\n // %TypedArray%.prototype.set(typedArray, offset = 0 )\n // WebIDL: void set(TypedArray array, optional unsigned long offset);\n // WebIDL: void set(sequence<type> array, optional unsigned long offset);\n Object.defineProperty($TypedArray$.prototype, 'set', {value: function (index, value) {\n if (arguments.length < 1) throw SyntaxError('Not enough arguments');\n var array, sequence, offset, len,\n i, s, d,\n byteOffset, byteLength, tmp;\n\n if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) {\n // void set(TypedArray array, optional unsigned long offset);\n array = arguments[0];\n offset = ToUint32(arguments[1]);\n\n if (offset + array.length > this.length) {\n throw RangeError('Offset plus length of array is out of range');\n }\n\n byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT;\n byteLength = array.length * this.BYTES_PER_ELEMENT;\n\n if (array.buffer === this.buffer) {\n tmp = [];\n for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) {\n tmp[i] = array.buffer._bytes[s];\n }\n for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) {\n this.buffer._bytes[d] = tmp[i];\n }\n } else {\n for (i = 0, s = array.byteOffset, d = byteOffset;\n i < byteLength; i += 1, s += 1, d += 1) {\n this.buffer._bytes[d] = array.buffer._bytes[s];\n }\n }\n } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') {\n // void set(sequence<type> array, optional unsigned long offset);\n sequence = arguments[0];\n len = ToUint32(sequence.length);\n offset = ToUint32(arguments[1]);\n\n if (offset + len > this.length) {\n throw RangeError('Offset plus length of array is out of range');\n }\n\n for (i = 0; i < len; i += 1) {\n s = sequence[i];\n this._setter(offset + i, Number(s));\n }\n } else {\n throw TypeError('Unexpected argument type(s)');\n }\n }});\n\n // %TypedArray%.prototype.slice ( start, end )\n Object.defineProperty($TypedArray$.prototype, 'slice', {value: function (m_start, m_end) {\n var m_o = ToObject(this);\n var lenVal = m_o.length;\n var m_len = ToUint32(lenVal);\n var relativeStart = ToInt32(m_start);\n var m_k = (relativeStart < 0) ? max(m_len + relativeStart, 0) : min(relativeStart, m_len);\n var relativeEnd = (m_end === undefined) ? m_len : ToInt32(m_end);\n var m_final = (relativeEnd < 0) ? max(m_len + relativeEnd, 0) : min(relativeEnd, m_len);\n var m_count = m_final - m_k;\n var m_c = m_o.constructor;\n var m_a = new m_c(m_count);\n var m_n = 0;\n while (m_k < m_final) {\n var kValue = m_o._getter(m_k);\n m_a._setter(m_n, kValue);\n ++m_k;\n ++m_n;\n }\n return m_a;\n }});\n\n // %TypedArray%.prototype.some ( callbackfn, thisArg = undefined )\n Object.defineProperty($TypedArray$.prototype, 'some', {value: function (callbackfn) {\n if (this === undefined || this === null) throw TypeError();\n var t = Object(this);\n var len = ToUint32(t.length);\n if (!IsCallable(callbackfn)) throw TypeError();\n var thisp = arguments[1];\n for (var i = 0; i < len; i++) {\n if (callbackfn.call(thisp, t._getter(i), i, t)) {\n return true;\n }\n }\n return false;\n }});\n\n // %TypedArray%.prototype.sort ( comparefn )\n Object.defineProperty($TypedArray$.prototype, 'sort', {value: function (comparefn) {\n if (this === undefined || this === null) throw TypeError();\n var t = Object(this);\n var len = ToUint32(t.length);\n var tmp = Array(len);\n for (var i = 0; i < len; ++i)\n tmp[i] = t._getter(i);\n if (comparefn) tmp.sort(comparefn); else tmp.sort(); // Hack for IE8/9\n for (i = 0; i < len; ++i)\n t._setter(i, tmp[i]);\n return t;\n }});\n\n // %TypedArray%.prototype.subarray(begin = 0, end = this.length )\n // WebIDL: TypedArray subarray(long begin, optional long end);\n Object.defineProperty($TypedArray$.prototype, 'subarray', {value: function (start, end) {\n function clamp(v, min, max) {\n return v < min ? min : v > max ? max : v;\n }\n\n start = ToInt32(start);\n end = ToInt32(end);\n\n if (arguments.length < 1) {\n start = 0;\n }\n if (arguments.length < 2) {\n end = this.length;\n }\n\n if (start < 0) {\n start = this.length + start;\n }\n if (end < 0) {\n end = this.length + end;\n }\n\n start = clamp(start, 0, this.length);\n end = clamp(end, 0, this.length);\n\n var len = end - start;\n if (len < 0) {\n len = 0;\n }\n\n return new this.constructor(\n this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len);\n }});\n\n // %TypedArray%.prototype.toLocaleString ( )\n // %TypedArray%.prototype.toString ( )\n // %TypedArray%.prototype.values ( )\n // %TypedArray%.prototype [ @@iterator ] ( )\n // get %TypedArray%.prototype [ @@toStringTag ]\n // -- defined in es6.js to shim browsers w/ native TypedArrays\n\n function makeTypedArray(elementSize, pack, unpack) {\n // Each TypedArray type requires a distinct constructor instance with\n // identical logic, which this produces.\n var TypedArray = function () {\n Object.defineProperty(this, 'constructor', {value: TypedArray});\n $TypedArray$.apply(this, arguments);\n makeArrayAccessors(this);\n };\n if ('__proto__' in TypedArray) {\n TypedArray.__proto__ = $TypedArray$;\n } else {\n TypedArray.from = $TypedArray$.from;\n TypedArray.of = $TypedArray$.of;\n }\n\n TypedArray.BYTES_PER_ELEMENT = elementSize;\n\n var TypedArrayPrototype = function () {\n };\n TypedArrayPrototype.prototype = $TypedArrayPrototype$;\n\n TypedArray.prototype = new TypedArrayPrototype();\n\n Object.defineProperty(TypedArray.prototype, 'BYTES_PER_ELEMENT', {value: elementSize});\n Object.defineProperty(TypedArray.prototype, '_pack', {value: pack});\n Object.defineProperty(TypedArray.prototype, '_unpack', {value: unpack});\n\n return TypedArray;\n }\n\n var Int8Array = makeTypedArray(1, packI8, unpackI8);\n var Uint8Array = makeTypedArray(1, packU8, unpackU8);\n var Uint8ClampedArray = makeTypedArray(1, packU8Clamped, unpackU8);\n var Int16Array = makeTypedArray(2, packI16, unpackI16);\n var Uint16Array = makeTypedArray(2, packU16, unpackU16);\n var Int32Array = makeTypedArray(4, packI32, unpackI32);\n var Uint32Array = makeTypedArray(4, packU32, unpackU32);\n var Float32Array = makeTypedArray(4, packF32, unpackF32);\n var Float64Array = makeTypedArray(8, packF64, unpackF64);\n\n global.Int8Array = win.Int8Array = global.Int8Array || Int8Array;\n global.Uint8Array = win.Uint8Array = global.Uint8Array || Uint8Array;\n global.Uint8ClampedArray = win.Uint8ClampedArray = global.Uint8ClampedArray || Uint8ClampedArray;\n global.Int16Array = win.Int16Array = global.Int16Array || Int16Array;\n global.Uint16Array = win.Uint16Array = global.Uint16Array || Uint16Array;\n global.Int32Array = win.Int32Array = global.Int32Array || Int32Array;\n global.Uint32Array = win.Uint32Array = global.Uint32Array || Uint32Array;\n global.Float32Array = win.Float32Array = global.Float32Array || Float32Array;\n global.Float64Array = win.Float64Array = global.Float64Array || Float64Array;\n }());\n\n //\n // 6 The DataView View Type\n //\n\n (function () {\n function r(array, index) {\n return IsCallable(array.get) ? array.get(index) : array[index];\n }\n\n var IS_BIG_ENDIAN = (function () {\n var u16array = new global.Uint16Array([0x1234]),\n u8array = new global.Uint8Array(u16array.buffer);\n return r(u8array, 0) === 0x12;\n }());\n\n // DataView(buffer, byteOffset=0, byteLength=undefined)\n // WebIDL: Constructor(ArrayBuffer buffer,\n // optional unsigned long byteOffset,\n // optional unsigned long byteLength)\n function DataView(buffer, byteOffset, byteLength) {\n if (!(buffer instanceof ArrayBuffer || Class(buffer) === 'ArrayBuffer')) throw TypeError();\n\n byteOffset = ToUint32(byteOffset);\n if (byteOffset > buffer.byteLength)\n throw RangeError('byteOffset out of range');\n\n if (byteLength === undefined)\n byteLength = buffer.byteLength - byteOffset;\n else\n byteLength = ToUint32(byteLength);\n\n if ((byteOffset + byteLength) > buffer.byteLength)\n throw RangeError('byteOffset and length reference an area beyond the end of the buffer');\n\n Object.defineProperty(this, 'buffer', {value: buffer});\n Object.defineProperty(this, 'byteLength', {value: byteLength});\n Object.defineProperty(this, 'byteOffset', {value: byteOffset});\n };\n\n // get DataView.prototype.buffer\n // get DataView.prototype.byteLength\n // get DataView.prototype.byteOffset\n // -- applied directly to instances by the constructor\n\n function makeGetter(arrayType) {\n return function GetViewValue(byteOffset, littleEndian) {\n byteOffset = ToUint32(byteOffset);\n\n if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength)\n throw RangeError('Array index out of range');\n\n byteOffset += this.byteOffset;\n\n var uint8Array = new global.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT),\n bytes = [];\n for (var i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1)\n bytes.push(r(uint8Array, i));\n\n if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN))\n bytes.reverse();\n\n return r(new arrayType(new global.Uint8Array(bytes).buffer), 0);\n };\n }\n\n Object.defineProperty(DataView.prototype, 'getUint8', {value: makeGetter(global.Uint8Array)});\n Object.defineProperty(DataView.prototype, 'getInt8', {value: makeGetter(global.Int8Array)});\n Object.defineProperty(DataView.prototype, 'getUint16', {value: makeGetter(global.Uint16Array)});\n Object.defineProperty(DataView.prototype, 'getInt16', {value: makeGetter(global.Int16Array)});\n Object.defineProperty(DataView.prototype, 'getUint32', {value: makeGetter(global.Uint32Array)});\n Object.defineProperty(DataView.prototype, 'getInt32', {value: makeGetter(global.Int32Array)});\n Object.defineProperty(DataView.prototype, 'getFloat32', {value: makeGetter(global.Float32Array)});\n Object.defineProperty(DataView.prototype, 'getFloat64', {value: makeGetter(global.Float64Array)});\n\n function makeSetter(arrayType) {\n return function SetViewValue(byteOffset, value, littleEndian) {\n byteOffset = ToUint32(byteOffset);\n if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength)\n throw RangeError('Array index out of range');\n\n // Get bytes\n var typeArray = new arrayType([value]),\n byteArray = new global.Uint8Array(typeArray.buffer),\n bytes = [], i, byteView;\n\n for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1)\n bytes.push(r(byteArray, i));\n\n // Flip if necessary\n if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN))\n bytes.reverse();\n\n // Write them\n byteView = new Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT);\n byteView.set(bytes);\n };\n }\n\n Object.defineProperty(DataView.prototype, 'setUint8', {value: makeSetter(global.Uint8Array)});\n Object.defineProperty(DataView.prototype, 'setInt8', {value: makeSetter(global.Int8Array)});\n Object.defineProperty(DataView.prototype, 'setUint16', {value: makeSetter(global.Uint16Array)});\n Object.defineProperty(DataView.prototype, 'setInt16', {value: makeSetter(global.Int16Array)});\n Object.defineProperty(DataView.prototype, 'setUint32', {value: makeSetter(global.Uint32Array)});\n Object.defineProperty(DataView.prototype, 'setInt32', {value: makeSetter(global.Int32Array)});\n Object.defineProperty(DataView.prototype, 'setFloat32', {value: makeSetter(global.Float32Array)});\n Object.defineProperty(DataView.prototype, 'setFloat64', {value: makeSetter(global.Float64Array)});\n\n global.DataView = global.DataView || DataView;\n\n }());\n\n }(exports, window)\n );\n}\n// workaround for crypto-js on IE11\n// http://code.google.com/p/crypto-js/issues/detail?id=81\nif (typeof window !== \"undefined\") {\n if (!('Uint8ClampedArray' in window)) {\n window.Uint8ClampedArray = window.Uint8Array;\n }\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/polyfill/typedarray.js\n// module id = 153\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/polyfill/typedarray.js?");
1438
1439/***/ },
1440/* 154 */
1441/*!*****************************************!*\
1442 !*** ./~/autobahn/lib/polyfill/json.js ***!
1443 \*****************************************/
1444/***/ function(module, exports) {
1445
1446 eval("/*\n json2.js\n 2014-02-04\n\n Public Domain.\n\n NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n\n See http://www.JSON.org/js.html\n\n\n This code should be minified before deployment.\n See http://javascript.crockford.com/jsmin.html\n\n USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n NOT CONTROL.\n\n\n This file creates a global JSON object containing two methods: stringify\n and parse.\n\n JSON.stringify(value, replacer, space)\n value any JavaScript value, usually an object or array.\n\n replacer an optional parameter that determines how object\n values are stringified for objects. It can be a\n function or an array of strings.\n\n space an optional parameter that specifies the indentation\n of nested structures. If it is omitted, the text will\n be packed without extra whitespace. If it is a number,\n it will specify the number of spaces to indent at each\n level. If it is a string (such as '\\t' or '&nbsp;'),\n it contains the characters used to indent at each level.\n\n This method produces a JSON text from a JavaScript value.\n\n When an object value is found, if the object contains a toJSON\n method, its toJSON method will be called and the result will be\n stringified. A toJSON method does not serialize: it returns the\n value represented by the name/value pair that should be serialized,\n or undefined if nothing should be serialized. The toJSON method\n will be passed the key associated with the value, and this will be\n bound to the value\n\n For example, this would serialize Dates as ISO strings.\n\n Date.prototype.toJSON = function (key) {\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n }\n\n return this.getUTCFullYear() + '-' +\n f(this.getUTCMonth() + 1) + '-' +\n f(this.getUTCDate()) + 'T' +\n f(this.getUTCHours()) + ':' +\n f(this.getUTCMinutes()) + ':' +\n f(this.getUTCSeconds()) + 'Z';\n };\n\n You can provide an optional replacer method. It will be passed the\n key and value of each member, with this bound to the containing\n object. The value that is returned from your method will be\n serialized. If your method returns undefined, then the member will\n be excluded from the serialization.\n\n If the replacer parameter is an array of strings, then it will be\n used to select the members to be serialized. It filters the results\n such that only members with keys listed in the replacer array are\n stringified.\n\n Values that do not have JSON representations, such as undefined or\n functions, will not be serialized. Such values in objects will be\n dropped; in arrays they will be replaced with null. You can use\n a replacer function to replace those with JSON values.\n JSON.stringify(undefined) returns undefined.\n\n The optional space parameter produces a stringification of the\n value that is filled with line breaks and indentation to make it\n easier to read.\n\n If the space parameter is a non-empty string, then that string will\n be used for indentation. If the space parameter is a number, then\n the indentation will be that many spaces.\n\n Example:\n\n text = JSON.stringify(['e', {pluribus: 'unum'}]);\n // text is '[\"e\",{\"pluribus\":\"unum\"}]'\n\n\n text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\\t');\n // text is '[\\n\\t\"e\",\\n\\t{\\n\\t\\t\"pluribus\": \"unum\"\\n\\t}\\n]'\n\n text = JSON.stringify([new Date()], function (key, value) {\n return this[key] instanceof Date ?\n 'Date(' + this[key] + ')' : value;\n });\n // text is '[\"Date(---current time---)\"]'\n\n\n JSON.parse(text, reviver)\n This method parses a JSON text to produce an object or array.\n It can throw a SyntaxError exception.\n\n The optional reviver parameter is a function that can filter and\n transform the results. It receives each of the keys and values,\n and its return value is used instead of the original value.\n If it returns what it received, then the structure is not modified.\n If it returns undefined then the member is deleted.\n\n Example:\n\n // Parse the text. Values that look like ISO date strings will\n // be converted to Date objects.\n\n myData = JSON.parse(text, function (key, value) {\n var a;\n if (typeof value === 'string') {\n a =\n/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n if (a) {\n return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],\n +a[5], +a[6]));\n }\n }\n return value;\n });\n\n myData = JSON.parse('[\"Date(09/09/2001)\"]', function (key, value) {\n var d;\n if (typeof value === 'string' &&\n value.slice(0, 5) === 'Date(' &&\n value.slice(-1) === ')') {\n d = new Date(value.slice(5, -1));\n if (d) {\n return d;\n }\n }\n return value;\n });\n\n\n This is a reference implementation. You are free to copy, modify, or\n redistribute.\n*/\n\n/*jslint evil: true, regexp: true */\n\n/*members \"\", \"\\b\", \"\\t\", \"\\n\", \"\\f\", \"\\r\", \"\\\"\", JSON, \"\\\\\", apply,\n call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\n getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\n lastIndex, length, parse, prototype, push, replace, slice, stringify,\n test, toJSON, toString, valueOf\n*/\n\n\n// Create a JSON object only if one does not already exist. We create the\n// methods in a closure to avoid creating global variables.\n\nif (typeof JSON !== 'object') {\n JSON = {};\n}\n\n(function () {\n 'use strict';\n\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n }\n\n if (typeof Date.prototype.toJSON !== 'function') {\n\n Date.prototype.toJSON = function () {\n\n return isFinite(this.valueOf())\n ? this.getUTCFullYear() + '-' +\n f(this.getUTCMonth() + 1) + '-' +\n f(this.getUTCDate()) + 'T' +\n f(this.getUTCHours()) + ':' +\n f(this.getUTCMinutes()) + ':' +\n f(this.getUTCSeconds()) + 'Z'\n : null;\n };\n\n String.prototype.toJSON =\n Number.prototype.toJSON =\n Boolean.prototype.toJSON = function () {\n return this.valueOf();\n };\n }\n\n var cx,\n escapable,\n gap,\n indent,\n meta,\n rep;\n\n\n function quote(string) {\n\n// If the string contains no control characters, no quote characters, and no\n// backslash characters, then we can safely slap some quotes around it.\n// Otherwise we must also replace the offending characters with safe escape\n// sequences.\n\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string'\n ? c\n : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n }\n\n\n function str(key, holder) {\n\n// Produce a string from holder[key].\n\n var i, // The loop counter.\n k, // The member key.\n v, // The member value.\n length,\n mind = gap,\n partial,\n value = holder[key];\n\n// If the value has a toJSON method, call it to obtain a replacement value.\n\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n\n// If we were called with a replacer function, then call the replacer to\n// obtain a replacement value.\n\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n\n// What happens next depends on the value's type.\n\n switch (typeof value) {\n case 'string':\n return quote(value);\n\n case 'number':\n\n// JSON numbers must be finite. Encode non-finite numbers as null.\n\n return isFinite(value) ? String(value) : 'null';\n\n case 'boolean':\n case 'null':\n\n// If the value is a boolean or null, convert it to a string. Note:\n// typeof null does not produce 'null'. The case is included here in\n// the remote chance that this gets fixed someday.\n\n return String(value);\n\n// If the type is 'object', we might be dealing with an object or an array or\n// null.\n\n case 'object':\n\n// Due to a specification blunder in ECMAScript, typeof null is 'object',\n// so watch out for that case.\n\n if (!value) {\n return 'null';\n }\n\n// Make an array to hold the partial results of stringifying this object value.\n\n gap += indent;\n partial = [];\n\n// Is the value an array?\n\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n\n// The value is an array. Stringify every element. Use null as a placeholder\n// for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n\n// Join all of the elements together, separated with commas, and wrap them in\n// brackets.\n\n v = partial.length === 0\n ? '[]'\n : gap\n ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']'\n : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n\n// If the replacer is an array, use it to select the members to be stringified.\n\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === 'string') {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n\n// Otherwise, iterate through all of the keys in the object.\n\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n\n// Join all of the member texts together, separated with commas,\n// and wrap them in braces.\n\n v = partial.length === 0\n ? '{}'\n : gap\n ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}'\n : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }\n\n// If the JSON object does not yet have a stringify method, give it one.\n\n if (typeof JSON.stringify !== 'function') {\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"' : '\\\\\"',\n '\\\\': '\\\\\\\\'\n };\n JSON.stringify = function (value, replacer, space) {\n\n// The stringify method takes a value and an optional replacer, and an optional\n// space parameter, and returns a JSON text. The replacer can be a function\n// that can replace values, or an array of strings that will select the keys.\n// A default replacer method can be provided. Use of the space parameter can\n// produce text that is more easily readable.\n\n var i;\n gap = '';\n indent = '';\n\n// If the space parameter is a number, make an indent string containing that\n// many spaces.\n\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n\n// If the space parameter is a string, it will be used as the indent string.\n\n } else if (typeof space === 'string') {\n indent = space;\n }\n\n// If there is a replacer, it must be a function or an array.\n// Otherwise, throw an error.\n\n rep = replacer;\n if (replacer && typeof replacer !== 'function' &&\n (typeof replacer !== 'object' ||\n typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n\n// Make a fake root object containing our value under the key of ''.\n// Return the result of stringifying the value.\n\n return str('', {'': value});\n };\n }\n\n\n// If the JSON object does not yet have a parse method, give it one.\n\n if (typeof JSON.parse !== 'function') {\n cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n JSON.parse = function (text, reviver) {\n\n// The parse method takes a text and an optional reviver function, and returns\n// a JavaScript value if the text is a valid JSON text.\n\n var j;\n\n function walk(holder, key) {\n\n// The walk method is used to recursively walk the resulting structure so\n// that modifications can be made.\n\n var k, v, value = holder[key];\n if (value && typeof value === 'object') {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n return reviver.call(holder, key, value);\n }\n\n\n// Parsing happens in four stages. In the first stage, we replace certain\n// Unicode characters with escape sequences. JavaScript handles many characters\n// incorrectly, either silently deleting them, or treating them as line endings.\n\n text = String(text);\n cx.lastIndex = 0;\n if (cx.test(text)) {\n text = text.replace(cx, function (a) {\n return '\\\\u' +\n ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n });\n }\n\n// In the second stage, we run the text against regular expressions that look\n// for non-JSON patterns. We are especially concerned with '()' and 'new'\n// because they can cause invocation, and '=' because it can cause mutation.\n// But just to be safe, we want to reject all unexpected forms.\n\n// We split the second stage into 4 regexp operations in order to work around\n// crippling inefficiencies in IE's and Safari's regexp engines. First we\n// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we\n// replace all simple value tokens with ']' characters. Third, we delete all\n// open brackets that follow a colon or comma or that begin the text. Finally,\n// we look to see that the remaining characters are only whitespace or ']' or\n// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.\n\n if (/^[\\],:{}\\s]*$/\n .test(text.replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')\n .replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']')\n .replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''))) {\n\n// In the third stage we use the eval function to compile the text into a\n// JavaScript structure. The '{' operator is subject to a syntactic ambiguity\n// in JavaScript: it can begin a block or an object literal. We wrap the text\n// in parens to eliminate the ambiguity.\n\n j = eval('(' + text + ')');\n\n// In the optional fourth stage, we recursively walk the new structure, passing\n// each name/value pair to a reviver function for possible transformation.\n\n return typeof reviver === 'function'\n ? walk({'': j}, '')\n : j;\n }\n\n// If the text is not JSON parseable, then a SyntaxError is thrown.\n\n throw new SyntaxError('JSON.parse');\n };\n }\n}());\n\nexports.JSON = JSON;\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/polyfill/json.js\n// module id = 154\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/polyfill/json.js?");
1447
1448/***/ },
1449/* 155 */
1450/*!*********************************!*\
1451 !*** ./~/autobahn/package.json ***!
1452 \*********************************/
1453/***/ function(module, exports) {
1454
1455 eval("module.exports = {\n\t\"_args\": [\n\t\t[\n\t\t\t{\n\t\t\t\t\"raw\": \"autobahn@17.5.2\",\n\t\t\t\t\"scope\": null,\n\t\t\t\t\"escapedName\": \"autobahn\",\n\t\t\t\t\"name\": \"autobahn\",\n\t\t\t\t\"rawSpec\": \"17.5.2\",\n\t\t\t\t\"spec\": \"17.5.2\",\n\t\t\t\t\"type\": \"version\"\n\t\t\t},\n\t\t\t\"/opt/buildAgent/temp/buildTmp/stack_test364/kissfs\"\n\t\t]\n\t],\n\t\"_from\": \"autobahn@17.5.2\",\n\t\"_id\": \"autobahn@17.5.2\",\n\t\"_inCache\": true,\n\t\"_location\": \"/autobahn\",\n\t\"_nodeVersion\": \"6.10.3\",\n\t\"_npmOperationalInternal\": {\n\t\t\"host\": \"s3://npm-registry-packages\",\n\t\t\"tmp\": \"tmp/autobahn-17.5.2.tgz_1495553382861_0.35997432470321655\"\n\t},\n\t\"_npmUser\": {\n\t\t\"name\": \"oberstet\",\n\t\t\"email\": \"tobias.oberstein@tavendo.de\"\n\t},\n\t\"_npmVersion\": \"3.10.10\",\n\t\"_phantomChildren\": {},\n\t\"_requested\": {\n\t\t\"raw\": \"autobahn@17.5.2\",\n\t\t\"scope\": null,\n\t\t\"escapedName\": \"autobahn\",\n\t\t\"name\": \"autobahn\",\n\t\t\"rawSpec\": \"17.5.2\",\n\t\t\"spec\": \"17.5.2\",\n\t\t\"type\": \"version\"\n\t},\n\t\"_requiredBy\": [\n\t\t\"/\"\n\t],\n\t\"_resolved\": \"http://npmreg.wixcore3.com/autobahn/-/autobahn-17.5.2.tgz\",\n\t\"_shasum\": \"e448345d87b4d945bd6feb97bd53ba927a7569ad\",\n\t\"_shrinkwrap\": null,\n\t\"_spec\": \"autobahn@17.5.2\",\n\t\"_where\": \"/opt/buildAgent/temp/buildTmp/stack_test364/kissfs\",\n\t\"author\": {\n\t\t\"name\": \"Crossbar.io Technologies GmbH\"\n\t},\n\t\"browser\": {\n\t\t\"ws\": false,\n\t\t\"lib/transport/rawsocket.js\": false\n\t},\n\t\"bugs\": {\n\t\t\"url\": \"https://github.com/crossbario/autobahn-js/issues\"\n\t},\n\t\"dependencies\": {\n\t\t\"bufferutil\": \">= 1.2.1\",\n\t\t\"cbor\": \">= 3.0.0\",\n\t\t\"crypto-js\": \">= 3.1.8\",\n\t\t\"int64-buffer\": \">= 0.1.9\",\n\t\t\"msgpack-lite\": \">= 0.1.26\",\n\t\t\"tweetnacl\": \">= 0.14.3\",\n\t\t\"utf-8-validate\": \">= 1.2.1\",\n\t\t\"when\": \">= 3.7.7\",\n\t\t\"ws\": \">= 1.1.4\"\n\t},\n\t\"description\": \"An implementation of The Web Application Messaging Protocol (WAMP).\",\n\t\"devDependencies\": {\n\t\t\"browserify\": \">= 13.1.1\",\n\t\t\"deep-equal\": \">= 1.0.1\",\n\t\t\"google-closure-compiler\": \"^20170218.0.0\",\n\t\t\"nodeunit\": \">= 0.10.2\"\n\t},\n\t\"directories\": {},\n\t\"dist\": {\n\t\t\"shasum\": \"e448345d87b4d945bd6feb97bd53ba927a7569ad\",\n\t\t\"tarball\": \"https://registry.npmjs.org/autobahn/-/autobahn-17.5.2.tgz\"\n\t},\n\t\"engines\": {\n\t\t\"node\": \">= 4.2.6\"\n\t},\n\t\"gitHead\": \"8d3f6bbc1b189b33f5c32b9a2273e20aaa2c0c7c\",\n\t\"homepage\": \"https://github.com/crossbario/autobahn-js#readme\",\n\t\"keywords\": [\n\t\t\"WAMP\",\n\t\t\"WebSocket\",\n\t\t\"RPC\",\n\t\t\"PubSub\"\n\t],\n\t\"license\": \"MIT\",\n\t\"main\": \"index.js\",\n\t\"maintainers\": [\n\t\t{\n\t\t\t\"name\": \"goeddea\",\n\t\t\t\"email\": \"alexander.goedde@tavendo.de\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"oberstet\",\n\t\t\t\"email\": \"tobias.oberstein@tavendo.de\"\n\t\t}\n\t],\n\t\"name\": \"autobahn\",\n\t\"optionalDependencies\": {\n\t\t\"bufferutil\": \">= 1.2.1\",\n\t\t\"utf-8-validate\": \">= 1.2.1\"\n\t},\n\t\"readme\": \"ERROR: No README data found!\",\n\t\"repository\": {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"git://github.com/crossbario/autobahn-js.git\"\n\t},\n\t\"scripts\": {\n\t\t\"test\": \"nodeunit test/test.js\"\n\t},\n\t\"version\": \"17.5.2\"\n};\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/package.json\n// module id = 155\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/package.json?");
1456
1457/***/ },
1458/* 156 */
1459/*!************************!*\
1460 !*** ./~/when/when.js ***!
1461 \************************/
1462/***/ function(module, exports, __webpack_require__) {
1463
1464 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n\n/**\n * Promises/A+ and when() implementation\n * when is part of the cujoJS family of libraries (http://cujojs.com/)\n * @author Brian Cavalier\n * @author John Hann\n */\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require) {\n\n\tvar timed = __webpack_require__(/*! ./lib/decorators/timed */ 157);\n\tvar array = __webpack_require__(/*! ./lib/decorators/array */ 162);\n\tvar flow = __webpack_require__(/*! ./lib/decorators/flow */ 165);\n\tvar fold = __webpack_require__(/*! ./lib/decorators/fold */ 166);\n\tvar inspect = __webpack_require__(/*! ./lib/decorators/inspect */ 167);\n\tvar generate = __webpack_require__(/*! ./lib/decorators/iterate */ 168);\n\tvar progress = __webpack_require__(/*! ./lib/decorators/progress */ 169);\n\tvar withThis = __webpack_require__(/*! ./lib/decorators/with */ 170);\n\tvar unhandledRejection = __webpack_require__(/*! ./lib/decorators/unhandledRejection */ 171);\n\tvar TimeoutError = __webpack_require__(/*! ./lib/TimeoutError */ 161);\n\n\tvar Promise = [array, flow, fold, generate, progress,\n\t\tinspect, withThis, timed, unhandledRejection]\n\t\t.reduce(function(Promise, feature) {\n\t\t\treturn feature(Promise);\n\t\t}, __webpack_require__(/*! ./lib/Promise */ 173));\n\n\tvar apply = __webpack_require__(/*! ./lib/apply */ 164)(Promise);\n\n\t// Public API\n\n\twhen.promise = promise; // Create a pending promise\n\twhen.resolve = Promise.resolve; // Create a resolved promise\n\twhen.reject = Promise.reject; // Create a rejected promise\n\n\twhen.lift = lift; // lift a function to return promises\n\twhen['try'] = attempt; // call a function and return a promise\n\twhen.attempt = attempt; // alias for when.try\n\n\twhen.iterate = Promise.iterate; // DEPRECATED (use cujojs/most streams) Generate a stream of promises\n\twhen.unfold = Promise.unfold; // DEPRECATED (use cujojs/most streams) Generate a stream of promises\n\n\twhen.join = join; // Join 2 or more promises\n\n\twhen.all = all; // Resolve a list of promises\n\twhen.settle = settle; // Settle a list of promises\n\n\twhen.any = lift(Promise.any); // One-winner race\n\twhen.some = lift(Promise.some); // Multi-winner race\n\twhen.race = lift(Promise.race); // First-to-settle race\n\n\twhen.map = map; // Array.map() for promises\n\twhen.filter = filter; // Array.filter() for promises\n\twhen.reduce = lift(Promise.reduce); // Array.reduce() for promises\n\twhen.reduceRight = lift(Promise.reduceRight); // Array.reduceRight() for promises\n\n\twhen.isPromiseLike = isPromiseLike; // Is something promise-like, aka thenable\n\n\twhen.Promise = Promise; // Promise constructor\n\twhen.defer = defer; // Create a {promise, resolve, reject} tuple\n\n\t// Error types\n\n\twhen.TimeoutError = TimeoutError;\n\n\t/**\n\t * Get a trusted promise for x, or by transforming x with onFulfilled\n\t *\n\t * @param {*} x\n\t * @param {function?} onFulfilled callback to be called when x is\n\t * successfully fulfilled. If promiseOrValue is an immediate value, callback\n\t * will be invoked immediately.\n\t * @param {function?} onRejected callback to be called when x is\n\t * rejected.\n\t * @param {function?} onProgress callback to be called when progress updates\n\t * are issued for x. @deprecated\n\t * @returns {Promise} a new promise that will fulfill with the return\n\t * value of callback or errback or the completion value of promiseOrValue if\n\t * callback and/or errback is not supplied.\n\t */\n\tfunction when(x, onFulfilled, onRejected, onProgress) {\n\t\tvar p = Promise.resolve(x);\n\t\tif (arguments.length < 2) {\n\t\t\treturn p;\n\t\t}\n\n\t\treturn p.then(onFulfilled, onRejected, onProgress);\n\t}\n\n\t/**\n\t * Creates a new promise whose fate is determined by resolver.\n\t * @param {function} resolver function(resolve, reject, notify)\n\t * @returns {Promise} promise whose fate is determine by resolver\n\t */\n\tfunction promise(resolver) {\n\t\treturn new Promise(resolver);\n\t}\n\n\t/**\n\t * Lift the supplied function, creating a version of f that returns\n\t * promises, and accepts promises as arguments.\n\t * @param {function} f\n\t * @returns {Function} version of f that returns promises\n\t */\n\tfunction lift(f) {\n\t\treturn function() {\n\t\t\tfor(var i=0, l=arguments.length, a=new Array(l); i<l; ++i) {\n\t\t\t\ta[i] = arguments[i];\n\t\t\t}\n\t\t\treturn apply(f, this, a);\n\t\t};\n\t}\n\n\t/**\n\t * Call f in a future turn, with the supplied args, and return a promise\n\t * for the result.\n\t * @param {function} f\n\t * @returns {Promise}\n\t */\n\tfunction attempt(f /*, args... */) {\n\t\t/*jshint validthis:true */\n\t\tfor(var i=0, l=arguments.length-1, a=new Array(l); i<l; ++i) {\n\t\t\ta[i] = arguments[i+1];\n\t\t}\n\t\treturn apply(f, this, a);\n\t}\n\n\t/**\n\t * Creates a {promise, resolver} pair, either or both of which\n\t * may be given out safely to consumers.\n\t * @return {{promise: Promise, resolve: function, reject: function, notify: function}}\n\t */\n\tfunction defer() {\n\t\treturn new Deferred();\n\t}\n\n\tfunction Deferred() {\n\t\tvar p = Promise._defer();\n\n\t\tfunction resolve(x) { p._handler.resolve(x); }\n\t\tfunction reject(x) { p._handler.reject(x); }\n\t\tfunction notify(x) { p._handler.notify(x); }\n\n\t\tthis.promise = p;\n\t\tthis.resolve = resolve;\n\t\tthis.reject = reject;\n\t\tthis.notify = notify;\n\t\tthis.resolver = { resolve: resolve, reject: reject, notify: notify };\n\t}\n\n\t/**\n\t * Determines if x is promise-like, i.e. a thenable object\n\t * NOTE: Will return true for *any thenable object*, and isn't truly\n\t * safe, since it may attempt to access the `then` property of x (i.e.\n\t * clever/malicious getters may do weird things)\n\t * @param {*} x anything\n\t * @returns {boolean} true if x is promise-like\n\t */\n\tfunction isPromiseLike(x) {\n\t\treturn x && typeof x.then === 'function';\n\t}\n\n\t/**\n\t * Return a promise that will resolve only once all the supplied arguments\n\t * have resolved. The resolution value of the returned promise will be an array\n\t * containing the resolution values of each of the arguments.\n\t * @param {...*} arguments may be a mix of promises and values\n\t * @returns {Promise}\n\t */\n\tfunction join(/* ...promises */) {\n\t\treturn Promise.all(arguments);\n\t}\n\n\t/**\n\t * Return a promise that will fulfill once all input promises have\n\t * fulfilled, or reject when any one input promise rejects.\n\t * @param {array|Promise} promises array (or promise for an array) of promises\n\t * @returns {Promise}\n\t */\n\tfunction all(promises) {\n\t\treturn when(promises, Promise.all);\n\t}\n\n\t/**\n\t * Return a promise that will always fulfill with an array containing\n\t * the outcome states of all input promises. The returned promise\n\t * will only reject if `promises` itself is a rejected promise.\n\t * @param {array|Promise} promises array (or promise for an array) of promises\n\t * @returns {Promise} promise for array of settled state descriptors\n\t */\n\tfunction settle(promises) {\n\t\treturn when(promises, Promise.settle);\n\t}\n\n\t/**\n\t * Promise-aware array map function, similar to `Array.prototype.map()`,\n\t * but input array may contain promises or values.\n\t * @param {Array|Promise} promises array of anything, may contain promises and values\n\t * @param {function(x:*, index:Number):*} mapFunc map function which may\n\t * return a promise or value\n\t * @returns {Promise} promise that will fulfill with an array of mapped values\n\t * or reject if any input promise rejects.\n\t */\n\tfunction map(promises, mapFunc) {\n\t\treturn when(promises, function(promises) {\n\t\t\treturn Promise.map(promises, mapFunc);\n\t\t});\n\t}\n\n\t/**\n\t * Filter the provided array of promises using the provided predicate. Input may\n\t * contain promises and values\n\t * @param {Array|Promise} promises array of promises and values\n\t * @param {function(x:*, index:Number):boolean} predicate filtering predicate.\n\t * Must return truthy (or promise for truthy) for items to retain.\n\t * @returns {Promise} promise that will fulfill with an array containing all items\n\t * for which predicate returned truthy.\n\t */\n\tfunction filter(promises, predicate) {\n\t\treturn when(promises, function(promises) {\n\t\t\treturn Promise.filter(promises, predicate);\n\t\t});\n\t}\n\n\treturn when;\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n})(__webpack_require__(/*! !webpack amd define */ 160));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/when.js\n// module id = 156\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/when.js?");
1465
1466/***/ },
1467/* 157 */
1468/*!****************************************!*\
1469 !*** ./~/when/lib/decorators/timed.js ***!
1470 \****************************************/
1471/***/ function(module, exports, __webpack_require__) {
1472
1473 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require) {\n\n\tvar env = __webpack_require__(/*! ../env */ 158);\n\tvar TimeoutError = __webpack_require__(/*! ../TimeoutError */ 161);\n\n\tfunction setTimeout(f, ms, x, y) {\n\t\treturn env.setTimer(function() {\n\t\t\tf(x, y, ms);\n\t\t}, ms);\n\t}\n\n\treturn function timed(Promise) {\n\t\t/**\n\t\t * Return a new promise whose fulfillment value is revealed only\n\t\t * after ms milliseconds\n\t\t * @param {number} ms milliseconds\n\t\t * @returns {Promise}\n\t\t */\n\t\tPromise.prototype.delay = function(ms) {\n\t\t\tvar p = this._beget();\n\t\t\tthis._handler.fold(handleDelay, ms, void 0, p._handler);\n\t\t\treturn p;\n\t\t};\n\n\t\tfunction handleDelay(ms, x, h) {\n\t\t\tsetTimeout(resolveDelay, ms, x, h);\n\t\t}\n\n\t\tfunction resolveDelay(x, h) {\n\t\t\th.resolve(x);\n\t\t}\n\n\t\t/**\n\t\t * Return a new promise that rejects after ms milliseconds unless\n\t\t * this promise fulfills earlier, in which case the returned promise\n\t\t * fulfills with the same value.\n\t\t * @param {number} ms milliseconds\n\t\t * @param {Error|*=} reason optional rejection reason to use, defaults\n\t\t * to a TimeoutError if not provided\n\t\t * @returns {Promise}\n\t\t */\n\t\tPromise.prototype.timeout = function(ms, reason) {\n\t\t\tvar p = this._beget();\n\t\t\tvar h = p._handler;\n\n\t\t\tvar t = setTimeout(onTimeout, ms, reason, p._handler);\n\n\t\t\tthis._handler.visit(h,\n\t\t\t\tfunction onFulfill(x) {\n\t\t\t\t\tenv.clearTimer(t);\n\t\t\t\t\tthis.resolve(x); // this = h\n\t\t\t\t},\n\t\t\t\tfunction onReject(x) {\n\t\t\t\t\tenv.clearTimer(t);\n\t\t\t\t\tthis.reject(x); // this = h\n\t\t\t\t},\n\t\t\t\th.notify);\n\n\t\t\treturn p;\n\t\t};\n\n\t\tfunction onTimeout(reason, h, ms) {\n\t\t\tvar e = typeof reason === 'undefined'\n\t\t\t\t? new TimeoutError('timed out after ' + ms + 'ms')\n\t\t\t\t: reason;\n\t\t\th.reject(e);\n\t\t}\n\n\t\treturn Promise;\n\t};\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/decorators/timed.js\n// module id = 157\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/decorators/timed.js?");
1474
1475/***/ },
1476/* 158 */
1477/*!***************************!*\
1478 !*** ./~/when/lib/env.js ***!
1479 \***************************/
1480/***/ function(module, exports, __webpack_require__) {
1481
1482 eval("var require;var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(process) {/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n/*global process,document,setTimeout,clearTimeout,MutationObserver,WebKitMutationObserver*/\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require) {\n\t/*jshint maxcomplexity:6*/\n\n\t// Sniff \"best\" async scheduling option\n\t// Prefer process.nextTick or MutationObserver, then check for\n\t// setTimeout, and finally vertx, since its the only env that doesn't\n\t// have setTimeout\n\n\tvar MutationObs;\n\tvar capturedSetTimeout = typeof setTimeout !== 'undefined' && setTimeout;\n\n\t// Default env\n\tvar setTimer = function(f, ms) { return setTimeout(f, ms); };\n\tvar clearTimer = function(t) { return clearTimeout(t); };\n\tvar asap = function (f) { return capturedSetTimeout(f, 0); };\n\n\t// Detect specific env\n\tif (isNode()) { // Node\n\t\tasap = function (f) { return process.nextTick(f); };\n\n\t} else if (MutationObs = hasMutationObserver()) { // Modern browser\n\t\tasap = initMutationObserver(MutationObs);\n\n\t} else if (!capturedSetTimeout) { // vert.x\n\t\tvar vertxRequire = require;\n\t\tvar vertx = __webpack_require__(/*! vertx */ 159);\n\t\tsetTimer = function (f, ms) { return vertx.setTimer(ms, f); };\n\t\tclearTimer = vertx.cancelTimer;\n\t\tasap = vertx.runOnLoop || vertx.runOnContext;\n\t}\n\n\treturn {\n\t\tsetTimer: setTimer,\n\t\tclearTimer: clearTimer,\n\t\tasap: asap\n\t};\n\n\tfunction isNode () {\n\t\treturn typeof process !== 'undefined' &&\n\t\t\tObject.prototype.toString.call(process) === '[object process]';\n\t}\n\n\tfunction hasMutationObserver () {\n\t return (typeof MutationObserver !== 'undefined' && MutationObserver) ||\n\t\t\t(typeof WebKitMutationObserver !== 'undefined' && WebKitMutationObserver);\n\t}\n\n\tfunction initMutationObserver(MutationObserver) {\n\t\tvar scheduled;\n\t\tvar node = document.createTextNode('');\n\t\tvar o = new MutationObserver(run);\n\t\to.observe(node, { characterData: true });\n\n\t\tfunction run() {\n\t\t\tvar f = scheduled;\n\t\t\tscheduled = void 0;\n\t\t\tf();\n\t\t}\n\n\t\tvar i = 0;\n\t\treturn function (f) {\n\t\t\tscheduled = f;\n\t\t\tnode.data = (i ^= 1);\n\t\t};\n\t}\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/env.js\n// module id = 158\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/env.js?");
1483
1484/***/ },
1485/* 159 */
1486/*!***********************!*\
1487 !*** vertx (ignored) ***!
1488 \***********************/
1489/***/ function(module, exports) {
1490
1491 eval("/* (ignored) */\n\n//////////////////\n// WEBPACK FOOTER\n// vertx (ignored)\n// module id = 159\n// module chunks = 0 1\n//# sourceURL=webpack:///vertx_(ignored)?");
1492
1493/***/ },
1494/* 160 */
1495/*!***************************************!*\
1496 !*** (webpack)/buildin/amd-define.js ***!
1497 \***************************************/
1498/***/ function(module, exports) {
1499
1500 eval("module.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-define.js\n// module id = 160\n// module chunks = 0 1\n//# sourceURL=webpack:///(webpack)/buildin/amd-define.js?");
1501
1502/***/ },
1503/* 161 */
1504/*!************************************!*\
1505 !*** ./~/when/lib/TimeoutError.js ***!
1506 \************************************/
1507/***/ function(module, exports, __webpack_require__) {
1508
1509 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n\t/**\n\t * Custom error type for promises rejected by promise.timeout\n\t * @param {string} message\n\t * @constructor\n\t */\n\tfunction TimeoutError (message) {\n\t\tError.call(this);\n\t\tthis.message = message;\n\t\tthis.name = TimeoutError.name;\n\t\tif (typeof Error.captureStackTrace === 'function') {\n\t\t\tError.captureStackTrace(this, TimeoutError);\n\t\t}\n\t}\n\n\tTimeoutError.prototype = Object.create(Error.prototype);\n\tTimeoutError.prototype.constructor = TimeoutError;\n\n\treturn TimeoutError;\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/TimeoutError.js\n// module id = 161\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/TimeoutError.js?");
1510
1511/***/ },
1512/* 162 */
1513/*!****************************************!*\
1514 !*** ./~/when/lib/decorators/array.js ***!
1515 \****************************************/
1516/***/ function(module, exports, __webpack_require__) {
1517
1518 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require) {\n\n\tvar state = __webpack_require__(/*! ../state */ 163);\n\tvar applier = __webpack_require__(/*! ../apply */ 164);\n\n\treturn function array(Promise) {\n\n\t\tvar applyFold = applier(Promise);\n\t\tvar toPromise = Promise.resolve;\n\t\tvar all = Promise.all;\n\n\t\tvar ar = Array.prototype.reduce;\n\t\tvar arr = Array.prototype.reduceRight;\n\t\tvar slice = Array.prototype.slice;\n\n\t\t// Additional array combinators\n\n\t\tPromise.any = any;\n\t\tPromise.some = some;\n\t\tPromise.settle = settle;\n\n\t\tPromise.map = map;\n\t\tPromise.filter = filter;\n\t\tPromise.reduce = reduce;\n\t\tPromise.reduceRight = reduceRight;\n\n\t\t/**\n\t\t * When this promise fulfills with an array, do\n\t\t * onFulfilled.apply(void 0, array)\n\t\t * @param {function} onFulfilled function to apply\n\t\t * @returns {Promise} promise for the result of applying onFulfilled\n\t\t */\n\t\tPromise.prototype.spread = function(onFulfilled) {\n\t\t\treturn this.then(all).then(function(array) {\n\t\t\t\treturn onFulfilled.apply(this, array);\n\t\t\t});\n\t\t};\n\n\t\treturn Promise;\n\n\t\t/**\n\t\t * One-winner competitive race.\n\t\t * Return a promise that will fulfill when one of the promises\n\t\t * in the input array fulfills, or will reject when all promises\n\t\t * have rejected.\n\t\t * @param {array} promises\n\t\t * @returns {Promise} promise for the first fulfilled value\n\t\t */\n\t\tfunction any(promises) {\n\t\t\tvar p = Promise._defer();\n\t\t\tvar resolver = p._handler;\n\t\t\tvar l = promises.length>>>0;\n\n\t\t\tvar pending = l;\n\t\t\tvar errors = [];\n\n\t\t\tfor (var h, x, i = 0; i < l; ++i) {\n\t\t\t\tx = promises[i];\n\t\t\t\tif(x === void 0 && !(i in promises)) {\n\t\t\t\t\t--pending;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\th = Promise._handler(x);\n\t\t\t\tif(h.state() > 0) {\n\t\t\t\t\tresolver.become(h);\n\t\t\t\t\tPromise._visitRemaining(promises, i, h);\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\th.visit(resolver, handleFulfill, handleReject);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(pending === 0) {\n\t\t\t\tresolver.reject(new RangeError('any(): array must not be empty'));\n\t\t\t}\n\n\t\t\treturn p;\n\n\t\t\tfunction handleFulfill(x) {\n\t\t\t\t/*jshint validthis:true*/\n\t\t\t\terrors = null;\n\t\t\t\tthis.resolve(x); // this === resolver\n\t\t\t}\n\n\t\t\tfunction handleReject(e) {\n\t\t\t\t/*jshint validthis:true*/\n\t\t\t\tif(this.resolved) { // this === resolver\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\terrors.push(e);\n\t\t\t\tif(--pending === 0) {\n\t\t\t\t\tthis.reject(errors);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * N-winner competitive race\n\t\t * Return a promise that will fulfill when n input promises have\n\t\t * fulfilled, or will reject when it becomes impossible for n\n\t\t * input promises to fulfill (ie when promises.length - n + 1\n\t\t * have rejected)\n\t\t * @param {array} promises\n\t\t * @param {number} n\n\t\t * @returns {Promise} promise for the earliest n fulfillment values\n\t\t *\n\t\t * @deprecated\n\t\t */\n\t\tfunction some(promises, n) {\n\t\t\t/*jshint maxcomplexity:7*/\n\t\t\tvar p = Promise._defer();\n\t\t\tvar resolver = p._handler;\n\n\t\t\tvar results = [];\n\t\t\tvar errors = [];\n\n\t\t\tvar l = promises.length>>>0;\n\t\t\tvar nFulfill = 0;\n\t\t\tvar nReject;\n\t\t\tvar x, i; // reused in both for() loops\n\n\t\t\t// First pass: count actual array items\n\t\t\tfor(i=0; i<l; ++i) {\n\t\t\t\tx = promises[i];\n\t\t\t\tif(x === void 0 && !(i in promises)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t++nFulfill;\n\t\t\t}\n\n\t\t\t// Compute actual goals\n\t\t\tn = Math.max(n, 0);\n\t\t\tnReject = (nFulfill - n + 1);\n\t\t\tnFulfill = Math.min(n, nFulfill);\n\n\t\t\tif(n > nFulfill) {\n\t\t\t\tresolver.reject(new RangeError('some(): array must contain at least '\n\t\t\t\t+ n + ' item(s), but had ' + nFulfill));\n\t\t\t} else if(nFulfill === 0) {\n\t\t\t\tresolver.resolve(results);\n\t\t\t}\n\n\t\t\t// Second pass: observe each array item, make progress toward goals\n\t\t\tfor(i=0; i<l; ++i) {\n\t\t\t\tx = promises[i];\n\t\t\t\tif(x === void 0 && !(i in promises)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tPromise._handler(x).visit(resolver, fulfill, reject, resolver.notify);\n\t\t\t}\n\n\t\t\treturn p;\n\n\t\t\tfunction fulfill(x) {\n\t\t\t\t/*jshint validthis:true*/\n\t\t\t\tif(this.resolved) { // this === resolver\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresults.push(x);\n\t\t\t\tif(--nFulfill === 0) {\n\t\t\t\t\terrors = null;\n\t\t\t\t\tthis.resolve(results);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction reject(e) {\n\t\t\t\t/*jshint validthis:true*/\n\t\t\t\tif(this.resolved) { // this === resolver\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\terrors.push(e);\n\t\t\t\tif(--nReject === 0) {\n\t\t\t\t\tresults = null;\n\t\t\t\t\tthis.reject(errors);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Apply f to the value of each promise in a list of promises\n\t\t * and return a new list containing the results.\n\t\t * @param {array} promises\n\t\t * @param {function(x:*, index:Number):*} f mapping function\n\t\t * @returns {Promise}\n\t\t */\n\t\tfunction map(promises, f) {\n\t\t\treturn Promise._traverse(f, promises);\n\t\t}\n\n\t\t/**\n\t\t * Filter the provided array of promises using the provided predicate. Input may\n\t\t * contain promises and values\n\t\t * @param {Array} promises array of promises and values\n\t\t * @param {function(x:*, index:Number):boolean} predicate filtering predicate.\n\t\t * Must return truthy (or promise for truthy) for items to retain.\n\t\t * @returns {Promise} promise that will fulfill with an array containing all items\n\t\t * for which predicate returned truthy.\n\t\t */\n\t\tfunction filter(promises, predicate) {\n\t\t\tvar a = slice.call(promises);\n\t\t\treturn Promise._traverse(predicate, a).then(function(keep) {\n\t\t\t\treturn filterSync(a, keep);\n\t\t\t});\n\t\t}\n\n\t\tfunction filterSync(promises, keep) {\n\t\t\t// Safe because we know all promises have fulfilled if we've made it this far\n\t\t\tvar l = keep.length;\n\t\t\tvar filtered = new Array(l);\n\t\t\tfor(var i=0, j=0; i<l; ++i) {\n\t\t\t\tif(keep[i]) {\n\t\t\t\t\tfiltered[j++] = Promise._handler(promises[i]).value;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiltered.length = j;\n\t\t\treturn filtered;\n\n\t\t}\n\n\t\t/**\n\t\t * Return a promise that will always fulfill with an array containing\n\t\t * the outcome states of all input promises. The returned promise\n\t\t * will never reject.\n\t\t * @param {Array} promises\n\t\t * @returns {Promise} promise for array of settled state descriptors\n\t\t */\n\t\tfunction settle(promises) {\n\t\t\treturn all(promises.map(settleOne));\n\t\t}\n\n\t\tfunction settleOne(p) {\n\t\t\t// Optimize the case where we get an already-resolved when.js promise\n\t\t\t// by extracting its state:\n\t\t\tvar handler;\n\t\t\tif (p instanceof Promise) {\n\t\t\t\t// This is our own Promise type and we can reach its handler internals:\n\t\t\t\thandler = p._handler.join();\n\t\t\t}\n\t\t\tif((handler && handler.state() === 0) || !handler) {\n\t\t\t\t// Either still pending, or not a Promise at all:\n\t\t\t\treturn toPromise(p).then(state.fulfilled, state.rejected);\n\t\t\t}\n\n\t\t\t// The promise is our own, but it is already resolved. Take a shortcut.\n\t\t\t// Since we're not actually handling the resolution, we need to disable\n\t\t\t// rejection reporting.\n\t\t\thandler._unreport();\n\t\t\treturn state.inspect(handler);\n\t\t}\n\n\t\t/**\n\t\t * Traditional reduce function, similar to `Array.prototype.reduce()`, but\n\t\t * input may contain promises and/or values, and reduceFunc\n\t\t * may return either a value or a promise, *and* initialValue may\n\t\t * be a promise for the starting value.\n\t\t * @param {Array|Promise} promises array or promise for an array of anything,\n\t\t * may contain a mix of promises and values.\n\t\t * @param {function(accumulated:*, x:*, index:Number):*} f reduce function\n\t\t * @returns {Promise} that will resolve to the final reduced value\n\t\t */\n\t\tfunction reduce(promises, f /*, initialValue */) {\n\t\t\treturn arguments.length > 2 ? ar.call(promises, liftCombine(f), arguments[2])\n\t\t\t\t\t: ar.call(promises, liftCombine(f));\n\t\t}\n\n\t\t/**\n\t\t * Traditional reduce function, similar to `Array.prototype.reduceRight()`, but\n\t\t * input may contain promises and/or values, and reduceFunc\n\t\t * may return either a value or a promise, *and* initialValue may\n\t\t * be a promise for the starting value.\n\t\t * @param {Array|Promise} promises array or promise for an array of anything,\n\t\t * may contain a mix of promises and values.\n\t\t * @param {function(accumulated:*, x:*, index:Number):*} f reduce function\n\t\t * @returns {Promise} that will resolve to the final reduced value\n\t\t */\n\t\tfunction reduceRight(promises, f /*, initialValue */) {\n\t\t\treturn arguments.length > 2 ? arr.call(promises, liftCombine(f), arguments[2])\n\t\t\t\t\t: arr.call(promises, liftCombine(f));\n\t\t}\n\n\t\tfunction liftCombine(f) {\n\t\t\treturn function(z, x, i) {\n\t\t\t\treturn applyFold(f, void 0, [z,x,i]);\n\t\t\t};\n\t\t}\n\t};\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/decorators/array.js\n// module id = 162\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/decorators/array.js?");
1519
1520/***/ },
1521/* 163 */
1522/*!*****************************!*\
1523 !*** ./~/when/lib/state.js ***!
1524 \*****************************/
1525/***/ function(module, exports, __webpack_require__) {
1526
1527 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n\treturn {\n\t\tpending: toPendingState,\n\t\tfulfilled: toFulfilledState,\n\t\trejected: toRejectedState,\n\t\tinspect: inspect\n\t};\n\n\tfunction toPendingState() {\n\t\treturn { state: 'pending' };\n\t}\n\n\tfunction toRejectedState(e) {\n\t\treturn { state: 'rejected', reason: e };\n\t}\n\n\tfunction toFulfilledState(x) {\n\t\treturn { state: 'fulfilled', value: x };\n\t}\n\n\tfunction inspect(handler) {\n\t\tvar state = handler.state();\n\t\treturn state === 0 ? toPendingState()\n\t\t\t : state > 0 ? toFulfilledState(handler.value)\n\t\t\t : toRejectedState(handler.value);\n\t}\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/state.js\n// module id = 163\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/state.js?");
1528
1529/***/ },
1530/* 164 */
1531/*!*****************************!*\
1532 !*** ./~/when/lib/apply.js ***!
1533 \*****************************/
1534/***/ function(module, exports, __webpack_require__) {
1535
1536 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n\tmakeApply.tryCatchResolve = tryCatchResolve;\n\n\treturn makeApply;\n\n\tfunction makeApply(Promise, call) {\n\t\tif(arguments.length < 2) {\n\t\t\tcall = tryCatchResolve;\n\t\t}\n\n\t\treturn apply;\n\n\t\tfunction apply(f, thisArg, args) {\n\t\t\tvar p = Promise._defer();\n\t\t\tvar l = args.length;\n\t\t\tvar params = new Array(l);\n\t\t\tcallAndResolve({ f:f, thisArg:thisArg, args:args, params:params, i:l-1, call:call }, p._handler);\n\n\t\t\treturn p;\n\t\t}\n\n\t\tfunction callAndResolve(c, h) {\n\t\t\tif(c.i < 0) {\n\t\t\t\treturn call(c.f, c.thisArg, c.params, h);\n\t\t\t}\n\n\t\t\tvar handler = Promise._handler(c.args[c.i]);\n\t\t\thandler.fold(callAndResolveNext, c, void 0, h);\n\t\t}\n\n\t\tfunction callAndResolveNext(c, x, h) {\n\t\t\tc.params[c.i] = x;\n\t\t\tc.i -= 1;\n\t\t\tcallAndResolve(c, h);\n\t\t}\n\t}\n\n\tfunction tryCatchResolve(f, thisArg, args, resolver) {\n\t\ttry {\n\t\t\tresolver.resolve(f.apply(thisArg, args));\n\t\t} catch(e) {\n\t\t\tresolver.reject(e);\n\t\t}\n\t}\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/apply.js\n// module id = 164\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/apply.js?");
1537
1538/***/ },
1539/* 165 */
1540/*!***************************************!*\
1541 !*** ./~/when/lib/decorators/flow.js ***!
1542 \***************************************/
1543/***/ function(module, exports, __webpack_require__) {
1544
1545 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n\treturn function flow(Promise) {\n\n\t\tvar resolve = Promise.resolve;\n\t\tvar reject = Promise.reject;\n\t\tvar origCatch = Promise.prototype['catch'];\n\n\t\t/**\n\t\t * Handle the ultimate fulfillment value or rejection reason, and assume\n\t\t * responsibility for all errors. If an error propagates out of result\n\t\t * or handleFatalError, it will be rethrown to the host, resulting in a\n\t\t * loud stack track on most platforms and a crash on some.\n\t\t * @param {function?} onResult\n\t\t * @param {function?} onError\n\t\t * @returns {undefined}\n\t\t */\n\t\tPromise.prototype.done = function(onResult, onError) {\n\t\t\tthis._handler.visit(this._handler.receiver, onResult, onError);\n\t\t};\n\n\t\t/**\n\t\t * Add Error-type and predicate matching to catch. Examples:\n\t\t * promise.catch(TypeError, handleTypeError)\n\t\t * .catch(predicate, handleMatchedErrors)\n\t\t * .catch(handleRemainingErrors)\n\t\t * @param onRejected\n\t\t * @returns {*}\n\t\t */\n\t\tPromise.prototype['catch'] = Promise.prototype.otherwise = function(onRejected) {\n\t\t\tif (arguments.length < 2) {\n\t\t\t\treturn origCatch.call(this, onRejected);\n\t\t\t}\n\n\t\t\tif(typeof onRejected !== 'function') {\n\t\t\t\treturn this.ensure(rejectInvalidPredicate);\n\t\t\t}\n\n\t\t\treturn origCatch.call(this, createCatchFilter(arguments[1], onRejected));\n\t\t};\n\n\t\t/**\n\t\t * Wraps the provided catch handler, so that it will only be called\n\t\t * if the predicate evaluates truthy\n\t\t * @param {?function} handler\n\t\t * @param {function} predicate\n\t\t * @returns {function} conditional catch handler\n\t\t */\n\t\tfunction createCatchFilter(handler, predicate) {\n\t\t\treturn function(e) {\n\t\t\t\treturn evaluatePredicate(e, predicate)\n\t\t\t\t\t? handler.call(this, e)\n\t\t\t\t\t: reject(e);\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Ensures that onFulfilledOrRejected will be called regardless of whether\n\t\t * this promise is fulfilled or rejected. onFulfilledOrRejected WILL NOT\n\t\t * receive the promises' value or reason. Any returned value will be disregarded.\n\t\t * onFulfilledOrRejected may throw or return a rejected promise to signal\n\t\t * an additional error.\n\t\t * @param {function} handler handler to be called regardless of\n\t\t * fulfillment or rejection\n\t\t * @returns {Promise}\n\t\t */\n\t\tPromise.prototype['finally'] = Promise.prototype.ensure = function(handler) {\n\t\t\tif(typeof handler !== 'function') {\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\treturn this.then(function(x) {\n\t\t\t\treturn runSideEffect(handler, this, identity, x);\n\t\t\t}, function(e) {\n\t\t\t\treturn runSideEffect(handler, this, reject, e);\n\t\t\t});\n\t\t};\n\n\t\tfunction runSideEffect (handler, thisArg, propagate, value) {\n\t\t\tvar result = handler.call(thisArg);\n\t\t\treturn maybeThenable(result)\n\t\t\t\t? propagateValue(result, propagate, value)\n\t\t\t\t: propagate(value);\n\t\t}\n\n\t\tfunction propagateValue (result, propagate, x) {\n\t\t\treturn resolve(result).then(function () {\n\t\t\t\treturn propagate(x);\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Recover from a failure by returning a defaultValue. If defaultValue\n\t\t * is a promise, it's fulfillment value will be used. If defaultValue is\n\t\t * a promise that rejects, the returned promise will reject with the\n\t\t * same reason.\n\t\t * @param {*} defaultValue\n\t\t * @returns {Promise} new promise\n\t\t */\n\t\tPromise.prototype['else'] = Promise.prototype.orElse = function(defaultValue) {\n\t\t\treturn this.then(void 0, function() {\n\t\t\t\treturn defaultValue;\n\t\t\t});\n\t\t};\n\n\t\t/**\n\t\t * Shortcut for .then(function() { return value; })\n\t\t * @param {*} value\n\t\t * @return {Promise} a promise that:\n\t\t * - is fulfilled if value is not a promise, or\n\t\t * - if value is a promise, will fulfill with its value, or reject\n\t\t * with its reason.\n\t\t */\n\t\tPromise.prototype['yield'] = function(value) {\n\t\t\treturn this.then(function() {\n\t\t\t\treturn value;\n\t\t\t});\n\t\t};\n\n\t\t/**\n\t\t * Runs a side effect when this promise fulfills, without changing the\n\t\t * fulfillment value.\n\t\t * @param {function} onFulfilledSideEffect\n\t\t * @returns {Promise}\n\t\t */\n\t\tPromise.prototype.tap = function(onFulfilledSideEffect) {\n\t\t\treturn this.then(onFulfilledSideEffect)['yield'](this);\n\t\t};\n\n\t\treturn Promise;\n\t};\n\n\tfunction rejectInvalidPredicate() {\n\t\tthrow new TypeError('catch predicate must be a function');\n\t}\n\n\tfunction evaluatePredicate(e, predicate) {\n\t\treturn isError(predicate) ? e instanceof predicate : predicate(e);\n\t}\n\n\tfunction isError(predicate) {\n\t\treturn predicate === Error\n\t\t\t|| (predicate != null && predicate.prototype instanceof Error);\n\t}\n\n\tfunction maybeThenable(x) {\n\t\treturn (typeof x === 'object' || typeof x === 'function') && x !== null;\n\t}\n\n\tfunction identity(x) {\n\t\treturn x;\n\t}\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/decorators/flow.js\n// module id = 165\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/decorators/flow.js?");
1546
1547/***/ },
1548/* 166 */
1549/*!***************************************!*\
1550 !*** ./~/when/lib/decorators/fold.js ***!
1551 \***************************************/
1552/***/ function(module, exports, __webpack_require__) {
1553
1554 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n/** @author Jeff Escalante */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n\treturn function fold(Promise) {\n\n\t\tPromise.prototype.fold = function(f, z) {\n\t\t\tvar promise = this._beget();\n\n\t\t\tthis._handler.fold(function(z, x, to) {\n\t\t\t\tPromise._handler(z).fold(function(x, z, to) {\n\t\t\t\t\tto.resolve(f.call(this, z, x));\n\t\t\t\t}, x, this, to);\n\t\t\t}, z, promise._handler.receiver, promise._handler);\n\n\t\t\treturn promise;\n\t\t};\n\n\t\treturn Promise;\n\t};\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/decorators/fold.js\n// module id = 166\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/decorators/fold.js?");
1555
1556/***/ },
1557/* 167 */
1558/*!******************************************!*\
1559 !*** ./~/when/lib/decorators/inspect.js ***!
1560 \******************************************/
1561/***/ function(module, exports, __webpack_require__) {
1562
1563 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require) {\n\n\tvar inspect = __webpack_require__(/*! ../state */ 163).inspect;\n\n\treturn function inspection(Promise) {\n\n\t\tPromise.prototype.inspect = function() {\n\t\t\treturn inspect(Promise._handler(this));\n\t\t};\n\n\t\treturn Promise;\n\t};\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/decorators/inspect.js\n// module id = 167\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/decorators/inspect.js?");
1564
1565/***/ },
1566/* 168 */
1567/*!******************************************!*\
1568 !*** ./~/when/lib/decorators/iterate.js ***!
1569 \******************************************/
1570/***/ function(module, exports, __webpack_require__) {
1571
1572 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n\treturn function generate(Promise) {\n\n\t\tvar resolve = Promise.resolve;\n\n\t\tPromise.iterate = iterate;\n\t\tPromise.unfold = unfold;\n\n\t\treturn Promise;\n\n\t\t/**\n\t\t * @deprecated Use github.com/cujojs/most streams and most.iterate\n\t\t * Generate a (potentially infinite) stream of promised values:\n\t\t * x, f(x), f(f(x)), etc. until condition(x) returns true\n\t\t * @param {function} f function to generate a new x from the previous x\n\t\t * @param {function} condition function that, given the current x, returns\n\t\t * truthy when the iterate should stop\n\t\t * @param {function} handler function to handle the value produced by f\n\t\t * @param {*|Promise} x starting value, may be a promise\n\t\t * @return {Promise} the result of the last call to f before\n\t\t * condition returns true\n\t\t */\n\t\tfunction iterate(f, condition, handler, x) {\n\t\t\treturn unfold(function(x) {\n\t\t\t\treturn [x, f(x)];\n\t\t\t}, condition, handler, x);\n\t\t}\n\n\t\t/**\n\t\t * @deprecated Use github.com/cujojs/most streams and most.unfold\n\t\t * Generate a (potentially infinite) stream of promised values\n\t\t * by applying handler(generator(seed)) iteratively until\n\t\t * condition(seed) returns true.\n\t\t * @param {function} unspool function that generates a [value, newSeed]\n\t\t * given a seed.\n\t\t * @param {function} condition function that, given the current seed, returns\n\t\t * truthy when the unfold should stop\n\t\t * @param {function} handler function to handle the value produced by unspool\n\t\t * @param x {*|Promise} starting value, may be a promise\n\t\t * @return {Promise} the result of the last value produced by unspool before\n\t\t * condition returns true\n\t\t */\n\t\tfunction unfold(unspool, condition, handler, x) {\n\t\t\treturn resolve(x).then(function(seed) {\n\t\t\t\treturn resolve(condition(seed)).then(function(done) {\n\t\t\t\t\treturn done ? seed : resolve(unspool(seed)).spread(next);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tfunction next(item, newSeed) {\n\t\t\t\treturn resolve(handler(item)).then(function() {\n\t\t\t\t\treturn unfold(unspool, condition, handler, newSeed);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/decorators/iterate.js\n// module id = 168\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/decorators/iterate.js?");
1573
1574/***/ },
1575/* 169 */
1576/*!*******************************************!*\
1577 !*** ./~/when/lib/decorators/progress.js ***!
1578 \*******************************************/
1579/***/ function(module, exports, __webpack_require__) {
1580
1581 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n\treturn function progress(Promise) {\n\n\t\t/**\n\t\t * @deprecated\n\t\t * Register a progress handler for this promise\n\t\t * @param {function} onProgress\n\t\t * @returns {Promise}\n\t\t */\n\t\tPromise.prototype.progress = function(onProgress) {\n\t\t\treturn this.then(void 0, void 0, onProgress);\n\t\t};\n\n\t\treturn Promise;\n\t};\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/decorators/progress.js\n// module id = 169\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/decorators/progress.js?");
1582
1583/***/ },
1584/* 170 */
1585/*!***************************************!*\
1586 !*** ./~/when/lib/decorators/with.js ***!
1587 \***************************************/
1588/***/ function(module, exports, __webpack_require__) {
1589
1590 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n\treturn function addWith(Promise) {\n\t\t/**\n\t\t * Returns a promise whose handlers will be called with `this` set to\n\t\t * the supplied receiver. Subsequent promises derived from the\n\t\t * returned promise will also have their handlers called with receiver\n\t\t * as `this`. Calling `with` with undefined or no arguments will return\n\t\t * a promise whose handlers will again be called in the usual Promises/A+\n\t\t * way (no `this`) thus safely undoing any previous `with` in the\n\t\t * promise chain.\n\t\t *\n\t\t * WARNING: Promises returned from `with`/`withThis` are NOT Promises/A+\n\t\t * compliant, specifically violating 2.2.5 (http://promisesaplus.com/#point-41)\n\t\t *\n\t\t * @param {object} receiver `this` value for all handlers attached to\n\t\t * the returned promise.\n\t\t * @returns {Promise}\n\t\t */\n\t\tPromise.prototype['with'] = Promise.prototype.withThis = function(receiver) {\n\t\t\tvar p = this._beget();\n\t\t\tvar child = p._handler;\n\t\t\tchild.receiver = receiver;\n\t\t\tthis._handler.chain(child, receiver);\n\t\t\treturn p;\n\t\t};\n\n\t\treturn Promise;\n\t};\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/decorators/with.js\n// module id = 170\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/decorators/with.js?");
1591
1592/***/ },
1593/* 171 */
1594/*!*****************************************************!*\
1595 !*** ./~/when/lib/decorators/unhandledRejection.js ***!
1596 \*****************************************************/
1597/***/ function(module, exports, __webpack_require__) {
1598
1599 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require) {\n\n\tvar setTimer = __webpack_require__(/*! ../env */ 158).setTimer;\n\tvar format = __webpack_require__(/*! ../format */ 172);\n\n\treturn function unhandledRejection(Promise) {\n\n\t\tvar logError = noop;\n\t\tvar logInfo = noop;\n\t\tvar localConsole;\n\n\t\tif(typeof console !== 'undefined') {\n\t\t\t// Alias console to prevent things like uglify's drop_console option from\n\t\t\t// removing console.log/error. Unhandled rejections fall into the same\n\t\t\t// category as uncaught exceptions, and build tools shouldn't silence them.\n\t\t\tlocalConsole = console;\n\t\t\tlogError = typeof localConsole.error !== 'undefined'\n\t\t\t\t? function (e) { localConsole.error(e); }\n\t\t\t\t: function (e) { localConsole.log(e); };\n\n\t\t\tlogInfo = typeof localConsole.info !== 'undefined'\n\t\t\t\t? function (e) { localConsole.info(e); }\n\t\t\t\t: function (e) { localConsole.log(e); };\n\t\t}\n\n\t\tPromise.onPotentiallyUnhandledRejection = function(rejection) {\n\t\t\tenqueue(report, rejection);\n\t\t};\n\n\t\tPromise.onPotentiallyUnhandledRejectionHandled = function(rejection) {\n\t\t\tenqueue(unreport, rejection);\n\t\t};\n\n\t\tPromise.onFatalRejection = function(rejection) {\n\t\t\tenqueue(throwit, rejection.value);\n\t\t};\n\n\t\tvar tasks = [];\n\t\tvar reported = [];\n\t\tvar running = null;\n\n\t\tfunction report(r) {\n\t\t\tif(!r.handled) {\n\t\t\t\treported.push(r);\n\t\t\t\tlogError('Potentially unhandled rejection [' + r.id + '] ' + format.formatError(r.value));\n\t\t\t}\n\t\t}\n\n\t\tfunction unreport(r) {\n\t\t\tvar i = reported.indexOf(r);\n\t\t\tif(i >= 0) {\n\t\t\t\treported.splice(i, 1);\n\t\t\t\tlogInfo('Handled previous rejection [' + r.id + '] ' + format.formatObject(r.value));\n\t\t\t}\n\t\t}\n\n\t\tfunction enqueue(f, x) {\n\t\t\ttasks.push(f, x);\n\t\t\tif(running === null) {\n\t\t\t\trunning = setTimer(flush, 0);\n\t\t\t}\n\t\t}\n\n\t\tfunction flush() {\n\t\t\trunning = null;\n\t\t\twhile(tasks.length > 0) {\n\t\t\t\ttasks.shift()(tasks.shift());\n\t\t\t}\n\t\t}\n\n\t\treturn Promise;\n\t};\n\n\tfunction throwit(e) {\n\t\tthrow e;\n\t}\n\n\tfunction noop() {}\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/decorators/unhandledRejection.js\n// module id = 171\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/decorators/unhandledRejection.js?");
1600
1601/***/ },
1602/* 172 */
1603/*!******************************!*\
1604 !*** ./~/when/lib/format.js ***!
1605 \******************************/
1606/***/ function(module, exports, __webpack_require__) {
1607
1608 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n\treturn {\n\t\tformatError: formatError,\n\t\tformatObject: formatObject,\n\t\ttryStringify: tryStringify\n\t};\n\n\t/**\n\t * Format an error into a string. If e is an Error and has a stack property,\n\t * it's returned. Otherwise, e is formatted using formatObject, with a\n\t * warning added about e not being a proper Error.\n\t * @param {*} e\n\t * @returns {String} formatted string, suitable for output to developers\n\t */\n\tfunction formatError(e) {\n\t\tvar s = typeof e === 'object' && e !== null && (e.stack || e.message) ? e.stack || e.message : formatObject(e);\n\t\treturn e instanceof Error ? s : s + ' (WARNING: non-Error used)';\n\t}\n\n\t/**\n\t * Format an object, detecting \"plain\" objects and running them through\n\t * JSON.stringify if possible.\n\t * @param {Object} o\n\t * @returns {string}\n\t */\n\tfunction formatObject(o) {\n\t\tvar s = String(o);\n\t\tif(s === '[object Object]' && typeof JSON !== 'undefined') {\n\t\t\ts = tryStringify(o, s);\n\t\t}\n\t\treturn s;\n\t}\n\n\t/**\n\t * Try to return the result of JSON.stringify(x). If that fails, return\n\t * defaultValue\n\t * @param {*} x\n\t * @param {*} defaultValue\n\t * @returns {String|*} JSON.stringify(x) or defaultValue\n\t */\n\tfunction tryStringify(x, defaultValue) {\n\t\ttry {\n\t\t\treturn JSON.stringify(x);\n\t\t} catch(e) {\n\t\t\treturn defaultValue;\n\t\t}\n\t}\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/format.js\n// module id = 172\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/format.js?");
1609
1610/***/ },
1611/* 173 */
1612/*!*******************************!*\
1613 !*** ./~/when/lib/Promise.js ***!
1614 \*******************************/
1615/***/ function(module, exports, __webpack_require__) {
1616
1617 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require) {\n\n\tvar makePromise = __webpack_require__(/*! ./makePromise */ 174);\n\tvar Scheduler = __webpack_require__(/*! ./Scheduler */ 175);\n\tvar async = __webpack_require__(/*! ./env */ 158).asap;\n\n\treturn makePromise({\n\t\tscheduler: new Scheduler(async)\n\t});\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n})(__webpack_require__(/*! !webpack amd define */ 160));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/Promise.js\n// module id = 173\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/Promise.js?");
1618
1619/***/ },
1620/* 174 */
1621/*!***********************************!*\
1622 !*** ./~/when/lib/makePromise.js ***!
1623 \***********************************/
1624/***/ function(module, exports, __webpack_require__) {
1625
1626 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(process) {/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n\treturn function makePromise(environment) {\n\n\t\tvar tasks = environment.scheduler;\n\t\tvar emitRejection = initEmitRejection();\n\n\t\tvar objectCreate = Object.create ||\n\t\t\tfunction(proto) {\n\t\t\t\tfunction Child() {}\n\t\t\t\tChild.prototype = proto;\n\t\t\t\treturn new Child();\n\t\t\t};\n\n\t\t/**\n\t\t * Create a promise whose fate is determined by resolver\n\t\t * @constructor\n\t\t * @returns {Promise} promise\n\t\t * @name Promise\n\t\t */\n\t\tfunction Promise(resolver, handler) {\n\t\t\tthis._handler = resolver === Handler ? handler : init(resolver);\n\t\t}\n\n\t\t/**\n\t\t * Run the supplied resolver\n\t\t * @param resolver\n\t\t * @returns {Pending}\n\t\t */\n\t\tfunction init(resolver) {\n\t\t\tvar handler = new Pending();\n\n\t\t\ttry {\n\t\t\t\tresolver(promiseResolve, promiseReject, promiseNotify);\n\t\t\t} catch (e) {\n\t\t\t\tpromiseReject(e);\n\t\t\t}\n\n\t\t\treturn handler;\n\n\t\t\t/**\n\t\t\t * Transition from pre-resolution state to post-resolution state, notifying\n\t\t\t * all listeners of the ultimate fulfillment or rejection\n\t\t\t * @param {*} x resolution value\n\t\t\t */\n\t\t\tfunction promiseResolve (x) {\n\t\t\t\thandler.resolve(x);\n\t\t\t}\n\t\t\t/**\n\t\t\t * Reject this promise with reason, which will be used verbatim\n\t\t\t * @param {Error|*} reason rejection reason, strongly suggested\n\t\t\t * to be an Error type\n\t\t\t */\n\t\t\tfunction promiseReject (reason) {\n\t\t\t\thandler.reject(reason);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * @deprecated\n\t\t\t * Issue a progress event, notifying all progress listeners\n\t\t\t * @param {*} x progress event payload to pass to all listeners\n\t\t\t */\n\t\t\tfunction promiseNotify (x) {\n\t\t\t\thandler.notify(x);\n\t\t\t}\n\t\t}\n\n\t\t// Creation\n\n\t\tPromise.resolve = resolve;\n\t\tPromise.reject = reject;\n\t\tPromise.never = never;\n\n\t\tPromise._defer = defer;\n\t\tPromise._handler = getHandler;\n\n\t\t/**\n\t\t * Returns a trusted promise. If x is already a trusted promise, it is\n\t\t * returned, otherwise returns a new trusted Promise which follows x.\n\t\t * @param {*} x\n\t\t * @return {Promise} promise\n\t\t */\n\t\tfunction resolve(x) {\n\t\t\treturn isPromise(x) ? x\n\t\t\t\t: new Promise(Handler, new Async(getHandler(x)));\n\t\t}\n\n\t\t/**\n\t\t * Return a reject promise with x as its reason (x is used verbatim)\n\t\t * @param {*} x\n\t\t * @returns {Promise} rejected promise\n\t\t */\n\t\tfunction reject(x) {\n\t\t\treturn new Promise(Handler, new Async(new Rejected(x)));\n\t\t}\n\n\t\t/**\n\t\t * Return a promise that remains pending forever\n\t\t * @returns {Promise} forever-pending promise.\n\t\t */\n\t\tfunction never() {\n\t\t\treturn foreverPendingPromise; // Should be frozen\n\t\t}\n\n\t\t/**\n\t\t * Creates an internal {promise, resolver} pair\n\t\t * @private\n\t\t * @returns {Promise}\n\t\t */\n\t\tfunction defer() {\n\t\t\treturn new Promise(Handler, new Pending());\n\t\t}\n\n\t\t// Transformation and flow control\n\n\t\t/**\n\t\t * Transform this promise's fulfillment value, returning a new Promise\n\t\t * for the transformed result. If the promise cannot be fulfilled, onRejected\n\t\t * is called with the reason. onProgress *may* be called with updates toward\n\t\t * this promise's fulfillment.\n\t\t * @param {function=} onFulfilled fulfillment handler\n\t\t * @param {function=} onRejected rejection handler\n\t\t * @param {function=} onProgress @deprecated progress handler\n\t\t * @return {Promise} new promise\n\t\t */\n\t\tPromise.prototype.then = function(onFulfilled, onRejected, onProgress) {\n\t\t\tvar parent = this._handler;\n\t\t\tvar state = parent.join().state();\n\n\t\t\tif ((typeof onFulfilled !== 'function' && state > 0) ||\n\t\t\t\t(typeof onRejected !== 'function' && state < 0)) {\n\t\t\t\t// Short circuit: value will not change, simply share handler\n\t\t\t\treturn new this.constructor(Handler, parent);\n\t\t\t}\n\n\t\t\tvar p = this._beget();\n\t\t\tvar child = p._handler;\n\n\t\t\tparent.chain(child, parent.receiver, onFulfilled, onRejected, onProgress);\n\n\t\t\treturn p;\n\t\t};\n\n\t\t/**\n\t\t * If this promise cannot be fulfilled due to an error, call onRejected to\n\t\t * handle the error. Shortcut for .then(undefined, onRejected)\n\t\t * @param {function?} onRejected\n\t\t * @return {Promise}\n\t\t */\n\t\tPromise.prototype['catch'] = function(onRejected) {\n\t\t\treturn this.then(void 0, onRejected);\n\t\t};\n\n\t\t/**\n\t\t * Creates a new, pending promise of the same type as this promise\n\t\t * @private\n\t\t * @returns {Promise}\n\t\t */\n\t\tPromise.prototype._beget = function() {\n\t\t\treturn begetFrom(this._handler, this.constructor);\n\t\t};\n\n\t\tfunction begetFrom(parent, Promise) {\n\t\t\tvar child = new Pending(parent.receiver, parent.join().context);\n\t\t\treturn new Promise(Handler, child);\n\t\t}\n\n\t\t// Array combinators\n\n\t\tPromise.all = all;\n\t\tPromise.race = race;\n\t\tPromise._traverse = traverse;\n\n\t\t/**\n\t\t * Return a promise that will fulfill when all promises in the\n\t\t * input array have fulfilled, or will reject when one of the\n\t\t * promises rejects.\n\t\t * @param {array} promises array of promises\n\t\t * @returns {Promise} promise for array of fulfillment values\n\t\t */\n\t\tfunction all(promises) {\n\t\t\treturn traverseWith(snd, null, promises);\n\t\t}\n\n\t\t/**\n\t\t * Array<Promise<X>> -> Promise<Array<f(X)>>\n\t\t * @private\n\t\t * @param {function} f function to apply to each promise's value\n\t\t * @param {Array} promises array of promises\n\t\t * @returns {Promise} promise for transformed values\n\t\t */\n\t\tfunction traverse(f, promises) {\n\t\t\treturn traverseWith(tryCatch2, f, promises);\n\t\t}\n\n\t\tfunction traverseWith(tryMap, f, promises) {\n\t\t\tvar handler = typeof f === 'function' ? mapAt : settleAt;\n\n\t\t\tvar resolver = new Pending();\n\t\t\tvar pending = promises.length >>> 0;\n\t\t\tvar results = new Array(pending);\n\n\t\t\tfor (var i = 0, x; i < promises.length && !resolver.resolved; ++i) {\n\t\t\t\tx = promises[i];\n\n\t\t\t\tif (x === void 0 && !(i in promises)) {\n\t\t\t\t\t--pending;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\ttraverseAt(promises, handler, i, x, resolver);\n\t\t\t}\n\n\t\t\tif(pending === 0) {\n\t\t\t\tresolver.become(new Fulfilled(results));\n\t\t\t}\n\n\t\t\treturn new Promise(Handler, resolver);\n\n\t\t\tfunction mapAt(i, x, resolver) {\n\t\t\t\tif(!resolver.resolved) {\n\t\t\t\t\ttraverseAt(promises, settleAt, i, tryMap(f, x, i), resolver);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction settleAt(i, x, resolver) {\n\t\t\t\tresults[i] = x;\n\t\t\t\tif(--pending === 0) {\n\t\t\t\t\tresolver.become(new Fulfilled(results));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction traverseAt(promises, handler, i, x, resolver) {\n\t\t\tif (maybeThenable(x)) {\n\t\t\t\tvar h = getHandlerMaybeThenable(x);\n\t\t\t\tvar s = h.state();\n\n\t\t\t\tif (s === 0) {\n\t\t\t\t\th.fold(handler, i, void 0, resolver);\n\t\t\t\t} else if (s > 0) {\n\t\t\t\t\thandler(i, h.value, resolver);\n\t\t\t\t} else {\n\t\t\t\t\tresolver.become(h);\n\t\t\t\t\tvisitRemaining(promises, i+1, h);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thandler(i, x, resolver);\n\t\t\t}\n\t\t}\n\n\t\tPromise._visitRemaining = visitRemaining;\n\t\tfunction visitRemaining(promises, start, handler) {\n\t\t\tfor(var i=start; i<promises.length; ++i) {\n\t\t\t\tmarkAsHandled(getHandler(promises[i]), handler);\n\t\t\t}\n\t\t}\n\n\t\tfunction markAsHandled(h, handler) {\n\t\t\tif(h === handler) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar s = h.state();\n\t\t\tif(s === 0) {\n\t\t\t\th.visit(h, void 0, h._unreport);\n\t\t\t} else if(s < 0) {\n\t\t\t\th._unreport();\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Fulfill-reject competitive race. Return a promise that will settle\n\t\t * to the same state as the earliest input promise to settle.\n\t\t *\n\t\t * WARNING: The ES6 Promise spec requires that race()ing an empty array\n\t\t * must return a promise that is pending forever. This implementation\n\t\t * returns a singleton forever-pending promise, the same singleton that is\n\t\t * returned by Promise.never(), thus can be checked with ===\n\t\t *\n\t\t * @param {array} promises array of promises to race\n\t\t * @returns {Promise} if input is non-empty, a promise that will settle\n\t\t * to the same outcome as the earliest input promise to settle. if empty\n\t\t * is empty, returns a promise that will never settle.\n\t\t */\n\t\tfunction race(promises) {\n\t\t\tif(typeof promises !== 'object' || promises === null) {\n\t\t\t\treturn reject(new TypeError('non-iterable passed to race()'));\n\t\t\t}\n\n\t\t\t// Sigh, race([]) is untestable unless we return *something*\n\t\t\t// that is recognizable without calling .then() on it.\n\t\t\treturn promises.length === 0 ? never()\n\t\t\t\t : promises.length === 1 ? resolve(promises[0])\n\t\t\t\t : runRace(promises);\n\t\t}\n\n\t\tfunction runRace(promises) {\n\t\t\tvar resolver = new Pending();\n\t\t\tvar i, x, h;\n\t\t\tfor(i=0; i<promises.length; ++i) {\n\t\t\t\tx = promises[i];\n\t\t\t\tif (x === void 0 && !(i in promises)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\th = getHandler(x);\n\t\t\t\tif(h.state() !== 0) {\n\t\t\t\t\tresolver.become(h);\n\t\t\t\t\tvisitRemaining(promises, i+1, h);\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\th.visit(resolver, resolver.resolve, resolver.reject);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn new Promise(Handler, resolver);\n\t\t}\n\n\t\t// Promise internals\n\t\t// Below this, everything is @private\n\n\t\t/**\n\t\t * Get an appropriate handler for x, without checking for cycles\n\t\t * @param {*} x\n\t\t * @returns {object} handler\n\t\t */\n\t\tfunction getHandler(x) {\n\t\t\tif(isPromise(x)) {\n\t\t\t\treturn x._handler.join();\n\t\t\t}\n\t\t\treturn maybeThenable(x) ? getHandlerUntrusted(x) : new Fulfilled(x);\n\t\t}\n\n\t\t/**\n\t\t * Get a handler for thenable x.\n\t\t * NOTE: You must only call this if maybeThenable(x) == true\n\t\t * @param {object|function|Promise} x\n\t\t * @returns {object} handler\n\t\t */\n\t\tfunction getHandlerMaybeThenable(x) {\n\t\t\treturn isPromise(x) ? x._handler.join() : getHandlerUntrusted(x);\n\t\t}\n\n\t\t/**\n\t\t * Get a handler for potentially untrusted thenable x\n\t\t * @param {*} x\n\t\t * @returns {object} handler\n\t\t */\n\t\tfunction getHandlerUntrusted(x) {\n\t\t\ttry {\n\t\t\t\tvar untrustedThen = x.then;\n\t\t\t\treturn typeof untrustedThen === 'function'\n\t\t\t\t\t? new Thenable(untrustedThen, x)\n\t\t\t\t\t: new Fulfilled(x);\n\t\t\t} catch(e) {\n\t\t\t\treturn new Rejected(e);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Handler for a promise that is pending forever\n\t\t * @constructor\n\t\t */\n\t\tfunction Handler() {}\n\n\t\tHandler.prototype.when\n\t\t\t= Handler.prototype.become\n\t\t\t= Handler.prototype.notify // deprecated\n\t\t\t= Handler.prototype.fail\n\t\t\t= Handler.prototype._unreport\n\t\t\t= Handler.prototype._report\n\t\t\t= noop;\n\n\t\tHandler.prototype._state = 0;\n\n\t\tHandler.prototype.state = function() {\n\t\t\treturn this._state;\n\t\t};\n\n\t\t/**\n\t\t * Recursively collapse handler chain to find the handler\n\t\t * nearest to the fully resolved value.\n\t\t * @returns {object} handler nearest the fully resolved value\n\t\t */\n\t\tHandler.prototype.join = function() {\n\t\t\tvar h = this;\n\t\t\twhile(h.handler !== void 0) {\n\t\t\t\th = h.handler;\n\t\t\t}\n\t\t\treturn h;\n\t\t};\n\n\t\tHandler.prototype.chain = function(to, receiver, fulfilled, rejected, progress) {\n\t\t\tthis.when({\n\t\t\t\tresolver: to,\n\t\t\t\treceiver: receiver,\n\t\t\t\tfulfilled: fulfilled,\n\t\t\t\trejected: rejected,\n\t\t\t\tprogress: progress\n\t\t\t});\n\t\t};\n\n\t\tHandler.prototype.visit = function(receiver, fulfilled, rejected, progress) {\n\t\t\tthis.chain(failIfRejected, receiver, fulfilled, rejected, progress);\n\t\t};\n\n\t\tHandler.prototype.fold = function(f, z, c, to) {\n\t\t\tthis.when(new Fold(f, z, c, to));\n\t\t};\n\n\t\t/**\n\t\t * Handler that invokes fail() on any handler it becomes\n\t\t * @constructor\n\t\t */\n\t\tfunction FailIfRejected() {}\n\n\t\tinherit(Handler, FailIfRejected);\n\n\t\tFailIfRejected.prototype.become = function(h) {\n\t\t\th.fail();\n\t\t};\n\n\t\tvar failIfRejected = new FailIfRejected();\n\n\t\t/**\n\t\t * Handler that manages a queue of consumers waiting on a pending promise\n\t\t * @constructor\n\t\t */\n\t\tfunction Pending(receiver, inheritedContext) {\n\t\t\tPromise.createContext(this, inheritedContext);\n\n\t\t\tthis.consumers = void 0;\n\t\t\tthis.receiver = receiver;\n\t\t\tthis.handler = void 0;\n\t\t\tthis.resolved = false;\n\t\t}\n\n\t\tinherit(Handler, Pending);\n\n\t\tPending.prototype._state = 0;\n\n\t\tPending.prototype.resolve = function(x) {\n\t\t\tthis.become(getHandler(x));\n\t\t};\n\n\t\tPending.prototype.reject = function(x) {\n\t\t\tif(this.resolved) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.become(new Rejected(x));\n\t\t};\n\n\t\tPending.prototype.join = function() {\n\t\t\tif (!this.resolved) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tvar h = this;\n\n\t\t\twhile (h.handler !== void 0) {\n\t\t\t\th = h.handler;\n\t\t\t\tif (h === this) {\n\t\t\t\t\treturn this.handler = cycle();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn h;\n\t\t};\n\n\t\tPending.prototype.run = function() {\n\t\t\tvar q = this.consumers;\n\t\t\tvar handler = this.handler;\n\t\t\tthis.handler = this.handler.join();\n\t\t\tthis.consumers = void 0;\n\n\t\t\tfor (var i = 0; i < q.length; ++i) {\n\t\t\t\thandler.when(q[i]);\n\t\t\t}\n\t\t};\n\n\t\tPending.prototype.become = function(handler) {\n\t\t\tif(this.resolved) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.resolved = true;\n\t\t\tthis.handler = handler;\n\t\t\tif(this.consumers !== void 0) {\n\t\t\t\ttasks.enqueue(this);\n\t\t\t}\n\n\t\t\tif(this.context !== void 0) {\n\t\t\t\thandler._report(this.context);\n\t\t\t}\n\t\t};\n\n\t\tPending.prototype.when = function(continuation) {\n\t\t\tif(this.resolved) {\n\t\t\t\ttasks.enqueue(new ContinuationTask(continuation, this.handler));\n\t\t\t} else {\n\t\t\t\tif(this.consumers === void 0) {\n\t\t\t\t\tthis.consumers = [continuation];\n\t\t\t\t} else {\n\t\t\t\t\tthis.consumers.push(continuation);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * @deprecated\n\t\t */\n\t\tPending.prototype.notify = function(x) {\n\t\t\tif(!this.resolved) {\n\t\t\t\ttasks.enqueue(new ProgressTask(x, this));\n\t\t\t}\n\t\t};\n\n\t\tPending.prototype.fail = function(context) {\n\t\t\tvar c = typeof context === 'undefined' ? this.context : context;\n\t\t\tthis.resolved && this.handler.join().fail(c);\n\t\t};\n\n\t\tPending.prototype._report = function(context) {\n\t\t\tthis.resolved && this.handler.join()._report(context);\n\t\t};\n\n\t\tPending.prototype._unreport = function() {\n\t\t\tthis.resolved && this.handler.join()._unreport();\n\t\t};\n\n\t\t/**\n\t\t * Wrap another handler and force it into a future stack\n\t\t * @param {object} handler\n\t\t * @constructor\n\t\t */\n\t\tfunction Async(handler) {\n\t\t\tthis.handler = handler;\n\t\t}\n\n\t\tinherit(Handler, Async);\n\n\t\tAsync.prototype.when = function(continuation) {\n\t\t\ttasks.enqueue(new ContinuationTask(continuation, this));\n\t\t};\n\n\t\tAsync.prototype._report = function(context) {\n\t\t\tthis.join()._report(context);\n\t\t};\n\n\t\tAsync.prototype._unreport = function() {\n\t\t\tthis.join()._unreport();\n\t\t};\n\n\t\t/**\n\t\t * Handler that wraps an untrusted thenable and assimilates it in a future stack\n\t\t * @param {function} then\n\t\t * @param {{then: function}} thenable\n\t\t * @constructor\n\t\t */\n\t\tfunction Thenable(then, thenable) {\n\t\t\tPending.call(this);\n\t\t\ttasks.enqueue(new AssimilateTask(then, thenable, this));\n\t\t}\n\n\t\tinherit(Pending, Thenable);\n\n\t\t/**\n\t\t * Handler for a fulfilled promise\n\t\t * @param {*} x fulfillment value\n\t\t * @constructor\n\t\t */\n\t\tfunction Fulfilled(x) {\n\t\t\tPromise.createContext(this);\n\t\t\tthis.value = x;\n\t\t}\n\n\t\tinherit(Handler, Fulfilled);\n\n\t\tFulfilled.prototype._state = 1;\n\n\t\tFulfilled.prototype.fold = function(f, z, c, to) {\n\t\t\trunContinuation3(f, z, this, c, to);\n\t\t};\n\n\t\tFulfilled.prototype.when = function(cont) {\n\t\t\trunContinuation1(cont.fulfilled, this, cont.receiver, cont.resolver);\n\t\t};\n\n\t\tvar errorId = 0;\n\n\t\t/**\n\t\t * Handler for a rejected promise\n\t\t * @param {*} x rejection reason\n\t\t * @constructor\n\t\t */\n\t\tfunction Rejected(x) {\n\t\t\tPromise.createContext(this);\n\n\t\t\tthis.id = ++errorId;\n\t\t\tthis.value = x;\n\t\t\tthis.handled = false;\n\t\t\tthis.reported = false;\n\n\t\t\tthis._report();\n\t\t}\n\n\t\tinherit(Handler, Rejected);\n\n\t\tRejected.prototype._state = -1;\n\n\t\tRejected.prototype.fold = function(f, z, c, to) {\n\t\t\tto.become(this);\n\t\t};\n\n\t\tRejected.prototype.when = function(cont) {\n\t\t\tif(typeof cont.rejected === 'function') {\n\t\t\t\tthis._unreport();\n\t\t\t}\n\t\t\trunContinuation1(cont.rejected, this, cont.receiver, cont.resolver);\n\t\t};\n\n\t\tRejected.prototype._report = function(context) {\n\t\t\ttasks.afterQueue(new ReportTask(this, context));\n\t\t};\n\n\t\tRejected.prototype._unreport = function() {\n\t\t\tif(this.handled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.handled = true;\n\t\t\ttasks.afterQueue(new UnreportTask(this));\n\t\t};\n\n\t\tRejected.prototype.fail = function(context) {\n\t\t\tthis.reported = true;\n\t\t\temitRejection('unhandledRejection', this);\n\t\t\tPromise.onFatalRejection(this, context === void 0 ? this.context : context);\n\t\t};\n\n\t\tfunction ReportTask(rejection, context) {\n\t\t\tthis.rejection = rejection;\n\t\t\tthis.context = context;\n\t\t}\n\n\t\tReportTask.prototype.run = function() {\n\t\t\tif(!this.rejection.handled && !this.rejection.reported) {\n\t\t\t\tthis.rejection.reported = true;\n\t\t\t\temitRejection('unhandledRejection', this.rejection) ||\n\t\t\t\t\tPromise.onPotentiallyUnhandledRejection(this.rejection, this.context);\n\t\t\t}\n\t\t};\n\n\t\tfunction UnreportTask(rejection) {\n\t\t\tthis.rejection = rejection;\n\t\t}\n\n\t\tUnreportTask.prototype.run = function() {\n\t\t\tif(this.rejection.reported) {\n\t\t\t\temitRejection('rejectionHandled', this.rejection) ||\n\t\t\t\t\tPromise.onPotentiallyUnhandledRejectionHandled(this.rejection);\n\t\t\t}\n\t\t};\n\n\t\t// Unhandled rejection hooks\n\t\t// By default, everything is a noop\n\n\t\tPromise.createContext\n\t\t\t= Promise.enterContext\n\t\t\t= Promise.exitContext\n\t\t\t= Promise.onPotentiallyUnhandledRejection\n\t\t\t= Promise.onPotentiallyUnhandledRejectionHandled\n\t\t\t= Promise.onFatalRejection\n\t\t\t= noop;\n\n\t\t// Errors and singletons\n\n\t\tvar foreverPendingHandler = new Handler();\n\t\tvar foreverPendingPromise = new Promise(Handler, foreverPendingHandler);\n\n\t\tfunction cycle() {\n\t\t\treturn new Rejected(new TypeError('Promise cycle'));\n\t\t}\n\n\t\t// Task runners\n\n\t\t/**\n\t\t * Run a single consumer\n\t\t * @constructor\n\t\t */\n\t\tfunction ContinuationTask(continuation, handler) {\n\t\t\tthis.continuation = continuation;\n\t\t\tthis.handler = handler;\n\t\t}\n\n\t\tContinuationTask.prototype.run = function() {\n\t\t\tthis.handler.join().when(this.continuation);\n\t\t};\n\n\t\t/**\n\t\t * Run a queue of progress handlers\n\t\t * @constructor\n\t\t */\n\t\tfunction ProgressTask(value, handler) {\n\t\t\tthis.handler = handler;\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tProgressTask.prototype.run = function() {\n\t\t\tvar q = this.handler.consumers;\n\t\t\tif(q === void 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var c, i = 0; i < q.length; ++i) {\n\t\t\t\tc = q[i];\n\t\t\t\trunNotify(c.progress, this.value, this.handler, c.receiver, c.resolver);\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Assimilate a thenable, sending it's value to resolver\n\t\t * @param {function} then\n\t\t * @param {object|function} thenable\n\t\t * @param {object} resolver\n\t\t * @constructor\n\t\t */\n\t\tfunction AssimilateTask(then, thenable, resolver) {\n\t\t\tthis._then = then;\n\t\t\tthis.thenable = thenable;\n\t\t\tthis.resolver = resolver;\n\t\t}\n\n\t\tAssimilateTask.prototype.run = function() {\n\t\t\tvar h = this.resolver;\n\t\t\ttryAssimilate(this._then, this.thenable, _resolve, _reject, _notify);\n\n\t\t\tfunction _resolve(x) { h.resolve(x); }\n\t\t\tfunction _reject(x) { h.reject(x); }\n\t\t\tfunction _notify(x) { h.notify(x); }\n\t\t};\n\n\t\tfunction tryAssimilate(then, thenable, resolve, reject, notify) {\n\t\t\ttry {\n\t\t\t\tthen.call(thenable, resolve, reject, notify);\n\t\t\t} catch (e) {\n\t\t\t\treject(e);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Fold a handler value with z\n\t\t * @constructor\n\t\t */\n\t\tfunction Fold(f, z, c, to) {\n\t\t\tthis.f = f; this.z = z; this.c = c; this.to = to;\n\t\t\tthis.resolver = failIfRejected;\n\t\t\tthis.receiver = this;\n\t\t}\n\n\t\tFold.prototype.fulfilled = function(x) {\n\t\t\tthis.f.call(this.c, this.z, x, this.to);\n\t\t};\n\n\t\tFold.prototype.rejected = function(x) {\n\t\t\tthis.to.reject(x);\n\t\t};\n\n\t\tFold.prototype.progress = function(x) {\n\t\t\tthis.to.notify(x);\n\t\t};\n\n\t\t// Other helpers\n\n\t\t/**\n\t\t * @param {*} x\n\t\t * @returns {boolean} true iff x is a trusted Promise\n\t\t */\n\t\tfunction isPromise(x) {\n\t\t\treturn x instanceof Promise;\n\t\t}\n\n\t\t/**\n\t\t * Test just enough to rule out primitives, in order to take faster\n\t\t * paths in some code\n\t\t * @param {*} x\n\t\t * @returns {boolean} false iff x is guaranteed *not* to be a thenable\n\t\t */\n\t\tfunction maybeThenable(x) {\n\t\t\treturn (typeof x === 'object' || typeof x === 'function') && x !== null;\n\t\t}\n\n\t\tfunction runContinuation1(f, h, receiver, next) {\n\t\t\tif(typeof f !== 'function') {\n\t\t\t\treturn next.become(h);\n\t\t\t}\n\n\t\t\tPromise.enterContext(h);\n\t\t\ttryCatchReject(f, h.value, receiver, next);\n\t\t\tPromise.exitContext();\n\t\t}\n\n\t\tfunction runContinuation3(f, x, h, receiver, next) {\n\t\t\tif(typeof f !== 'function') {\n\t\t\t\treturn next.become(h);\n\t\t\t}\n\n\t\t\tPromise.enterContext(h);\n\t\t\ttryCatchReject3(f, x, h.value, receiver, next);\n\t\t\tPromise.exitContext();\n\t\t}\n\n\t\t/**\n\t\t * @deprecated\n\t\t */\n\t\tfunction runNotify(f, x, h, receiver, next) {\n\t\t\tif(typeof f !== 'function') {\n\t\t\t\treturn next.notify(x);\n\t\t\t}\n\n\t\t\tPromise.enterContext(h);\n\t\t\ttryCatchReturn(f, x, receiver, next);\n\t\t\tPromise.exitContext();\n\t\t}\n\n\t\tfunction tryCatch2(f, a, b) {\n\t\t\ttry {\n\t\t\t\treturn f(a, b);\n\t\t\t} catch(e) {\n\t\t\t\treturn reject(e);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Return f.call(thisArg, x), or if it throws return a rejected promise for\n\t\t * the thrown exception\n\t\t */\n\t\tfunction tryCatchReject(f, x, thisArg, next) {\n\t\t\ttry {\n\t\t\t\tnext.become(getHandler(f.call(thisArg, x)));\n\t\t\t} catch(e) {\n\t\t\t\tnext.become(new Rejected(e));\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Same as above, but includes the extra argument parameter.\n\t\t */\n\t\tfunction tryCatchReject3(f, x, y, thisArg, next) {\n\t\t\ttry {\n\t\t\t\tf.call(thisArg, x, y, next);\n\t\t\t} catch(e) {\n\t\t\t\tnext.become(new Rejected(e));\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * @deprecated\n\t\t * Return f.call(thisArg, x), or if it throws, *return* the exception\n\t\t */\n\t\tfunction tryCatchReturn(f, x, thisArg, next) {\n\t\t\ttry {\n\t\t\t\tnext.notify(f.call(thisArg, x));\n\t\t\t} catch(e) {\n\t\t\t\tnext.notify(e);\n\t\t\t}\n\t\t}\n\n\t\tfunction inherit(Parent, Child) {\n\t\t\tChild.prototype = objectCreate(Parent.prototype);\n\t\t\tChild.prototype.constructor = Child;\n\t\t}\n\n\t\tfunction snd(x, y) {\n\t\t\treturn y;\n\t\t}\n\n\t\tfunction noop() {}\n\n\t\tfunction hasCustomEvent() {\n\t\t\tif(typeof CustomEvent === 'function') {\n\t\t\t\ttry {\n\t\t\t\t\tvar ev = new CustomEvent('unhandledRejection');\n\t\t\t\t\treturn ev instanceof CustomEvent;\n\t\t\t\t} catch (ignoredException) {}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction hasInternetExplorerCustomEvent() {\n\t\t\tif(typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n\t\t\t\ttry {\n\t\t\t\t\t// Try to create one event to make sure it's supported\n\t\t\t\t\tvar ev = document.createEvent('CustomEvent');\n\t\t\t\t\tev.initCustomEvent('eventType', false, true, {});\n\t\t\t\t\treturn true;\n\t\t\t\t} catch (ignoredException) {}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction initEmitRejection() {\n\t\t\t/*global process, self, CustomEvent*/\n\t\t\tif(typeof process !== 'undefined' && process !== null\n\t\t\t\t&& typeof process.emit === 'function') {\n\t\t\t\t// Returning falsy here means to call the default\n\t\t\t\t// onPotentiallyUnhandledRejection API. This is safe even in\n\t\t\t\t// browserify since process.emit always returns falsy in browserify:\n\t\t\t\t// https://github.com/defunctzombie/node-process/blob/master/browser.js#L40-L46\n\t\t\t\treturn function(type, rejection) {\n\t\t\t\t\treturn type === 'unhandledRejection'\n\t\t\t\t\t\t? process.emit(type, rejection.value, rejection)\n\t\t\t\t\t\t: process.emit(type, rejection);\n\t\t\t\t};\n\t\t\t} else if(typeof self !== 'undefined' && hasCustomEvent()) {\n\t\t\t\treturn (function (self, CustomEvent) {\n\t\t\t\t\treturn function (type, rejection) {\n\t\t\t\t\t\tvar ev = new CustomEvent(type, {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\treason: rejection.value,\n\t\t\t\t\t\t\t\tkey: rejection\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbubbles: false,\n\t\t\t\t\t\t\tcancelable: true\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn !self.dispatchEvent(ev);\n\t\t\t\t\t};\n\t\t\t\t}(self, CustomEvent));\n\t\t\t} else if(typeof self !== 'undefined' && hasInternetExplorerCustomEvent()) {\n\t\t\t\treturn (function(self, document) {\n\t\t\t\t\treturn function(type, rejection) {\n\t\t\t\t\t\tvar ev = document.createEvent('CustomEvent');\n\t\t\t\t\t\tev.initCustomEvent(type, false, true, {\n\t\t\t\t\t\t\treason: rejection.value,\n\t\t\t\t\t\t\tkey: rejection\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn !self.dispatchEvent(ev);\n\t\t\t\t\t};\n\t\t\t\t}(self, document));\n\t\t\t}\n\n\t\t\treturn noop;\n\t\t}\n\n\t\treturn Promise;\n\t};\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/makePromise.js\n// module id = 174\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/makePromise.js?");
1627
1628/***/ },
1629/* 175 */
1630/*!*********************************!*\
1631 !*** ./~/when/lib/Scheduler.js ***!
1632 \*********************************/
1633/***/ function(module, exports, __webpack_require__) {
1634
1635 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n\t// Credit to Twisol (https://github.com/Twisol) for suggesting\n\t// this type of extensible queue + trampoline approach for next-tick conflation.\n\n\t/**\n\t * Async task scheduler\n\t * @param {function} async function to schedule a single async function\n\t * @constructor\n\t */\n\tfunction Scheduler(async) {\n\t\tthis._async = async;\n\t\tthis._running = false;\n\n\t\tthis._queue = this;\n\t\tthis._queueLen = 0;\n\t\tthis._afterQueue = {};\n\t\tthis._afterQueueLen = 0;\n\n\t\tvar self = this;\n\t\tthis.drain = function() {\n\t\t\tself._drain();\n\t\t};\n\t}\n\n\t/**\n\t * Enqueue a task\n\t * @param {{ run:function }} task\n\t */\n\tScheduler.prototype.enqueue = function(task) {\n\t\tthis._queue[this._queueLen++] = task;\n\t\tthis.run();\n\t};\n\n\t/**\n\t * Enqueue a task to run after the main task queue\n\t * @param {{ run:function }} task\n\t */\n\tScheduler.prototype.afterQueue = function(task) {\n\t\tthis._afterQueue[this._afterQueueLen++] = task;\n\t\tthis.run();\n\t};\n\n\tScheduler.prototype.run = function() {\n\t\tif (!this._running) {\n\t\t\tthis._running = true;\n\t\t\tthis._async(this.drain);\n\t\t}\n\t};\n\n\t/**\n\t * Drain the handler queue entirely, and then the after queue\n\t */\n\tScheduler.prototype._drain = function() {\n\t\tvar i = 0;\n\t\tfor (; i < this._queueLen; ++i) {\n\t\t\tthis._queue[i].run();\n\t\t\tthis._queue[i] = void 0;\n\t\t}\n\n\t\tthis._queueLen = 0;\n\t\tthis._running = false;\n\n\t\tfor (i = 0; i < this._afterQueueLen; ++i) {\n\t\t\tthis._afterQueue[i].run();\n\t\t\tthis._afterQueue[i] = void 0;\n\t\t}\n\n\t\tthis._afterQueueLen = 0;\n\t};\n\n\treturn Scheduler;\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/Scheduler.js\n// module id = 175\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/Scheduler.js?");
1636
1637/***/ },
1638/* 176 */
1639/*!***************************************!*\
1640 !*** ./~/msgpack-lite/lib/browser.js ***!
1641 \***************************************/
1642/***/ function(module, exports, __webpack_require__) {
1643
1644 eval("// browser.js\n\nexports.encode = __webpack_require__(/*! ./encode */ 177).encode;\nexports.decode = __webpack_require__(/*! ./decode */ 195).decode;\n\nexports.Encoder = __webpack_require__(/*! ./encoder */ 201).Encoder;\nexports.Decoder = __webpack_require__(/*! ./decoder */ 203).Decoder;\n\nexports.createCodec = __webpack_require__(/*! ./ext */ 204).createCodec;\nexports.codec = __webpack_require__(/*! ./codec */ 205).codec;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/browser.js\n// module id = 176\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/browser.js?");
1645
1646/***/ },
1647/* 177 */
1648/*!**************************************!*\
1649 !*** ./~/msgpack-lite/lib/encode.js ***!
1650 \**************************************/
1651/***/ function(module, exports, __webpack_require__) {
1652
1653 eval("// encode.js\n\nexports.encode = encode;\n\nvar EncodeBuffer = __webpack_require__(/*! ./encode-buffer */ 178).EncodeBuffer;\n\nfunction encode(input, options) {\n var encoder = new EncodeBuffer(options);\n encoder.write(input);\n return encoder.read();\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/encode.js\n// module id = 177\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/encode.js?");
1654
1655/***/ },
1656/* 178 */
1657/*!*********************************************!*\
1658 !*** ./~/msgpack-lite/lib/encode-buffer.js ***!
1659 \*********************************************/
1660/***/ function(module, exports, __webpack_require__) {
1661
1662 eval("// encode-buffer.js\n\nexports.EncodeBuffer = EncodeBuffer;\n\nvar preset = __webpack_require__(/*! ./write-core */ 179).preset;\n\nvar FlexEncoder = __webpack_require__(/*! ./flex-buffer */ 194).FlexEncoder;\n\nFlexEncoder.mixin(EncodeBuffer.prototype);\n\nfunction EncodeBuffer(options) {\n if (!(this instanceof EncodeBuffer)) return new EncodeBuffer(options);\n\n if (options) {\n this.options = options;\n if (options.codec) {\n var codec = this.codec = options.codec;\n if (codec.bufferish) this.bufferish = codec.bufferish;\n }\n }\n}\n\nEncodeBuffer.prototype.codec = preset;\n\nEncodeBuffer.prototype.write = function(input) {\n this.codec.encode(this, input);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/encode-buffer.js\n// module id = 178\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/encode-buffer.js?");
1663
1664/***/ },
1665/* 179 */
1666/*!******************************************!*\
1667 !*** ./~/msgpack-lite/lib/write-core.js ***!
1668 \******************************************/
1669/***/ function(module, exports, __webpack_require__) {
1670
1671 eval("// write-core.js\n\nvar ExtBuffer = __webpack_require__(/*! ./ext-buffer */ 180).ExtBuffer;\nvar ExtPacker = __webpack_require__(/*! ./ext-packer */ 188);\nvar WriteType = __webpack_require__(/*! ./write-type */ 189);\nvar CodecBase = __webpack_require__(/*! ./codec-base */ 193);\n\nCodecBase.install({\n addExtPacker: addExtPacker,\n getExtPacker: getExtPacker,\n init: init\n});\n\nexports.preset = init.call(CodecBase.preset);\n\nfunction getEncoder(options) {\n var writeType = WriteType.getWriteType(options);\n return encode;\n\n function encode(encoder, value) {\n var func = writeType[typeof value];\n if (!func) throw new Error(\"Unsupported type \\\"\" + (typeof value) + \"\\\": \" + value);\n func(encoder, value);\n }\n}\n\nfunction init() {\n var options = this.options;\n this.encode = getEncoder(options);\n\n if (options && options.preset) {\n ExtPacker.setExtPackers(this);\n }\n\n return this;\n}\n\nfunction addExtPacker(etype, Class, packer) {\n packer = CodecBase.filter(packer);\n var name = Class.name;\n if (name && name !== \"Object\") {\n var packers = this.extPackers || (this.extPackers = {});\n packers[name] = extPacker;\n } else {\n // fallback for IE\n var list = this.extEncoderList || (this.extEncoderList = []);\n list.unshift([Class, extPacker]);\n }\n\n function extPacker(value) {\n if (packer) value = packer(value);\n return new ExtBuffer(value, etype);\n }\n}\n\nfunction getExtPacker(value) {\n var packers = this.extPackers || (this.extPackers = {});\n var c = value.constructor;\n var e = c && c.name && packers[c.name];\n if (e) return e;\n\n // fallback for IE\n var list = this.extEncoderList || (this.extEncoderList = []);\n var len = list.length;\n for (var i = 0; i < len; i++) {\n var pair = list[i];\n if (c === pair[0]) return pair[1];\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/write-core.js\n// module id = 179\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/write-core.js?");
1672
1673/***/ },
1674/* 180 */
1675/*!******************************************!*\
1676 !*** ./~/msgpack-lite/lib/ext-buffer.js ***!
1677 \******************************************/
1678/***/ function(module, exports, __webpack_require__) {
1679
1680 eval("// ext-buffer.js\n\nexports.ExtBuffer = ExtBuffer;\n\nvar Bufferish = __webpack_require__(/*! ./bufferish */ 181);\n\nfunction ExtBuffer(buffer, type) {\n if (!(this instanceof ExtBuffer)) return new ExtBuffer(buffer, type);\n this.buffer = Bufferish.from(buffer);\n this.type = type;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/ext-buffer.js\n// module id = 180\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/ext-buffer.js?");
1681
1682/***/ },
1683/* 181 */
1684/*!*****************************************!*\
1685 !*** ./~/msgpack-lite/lib/bufferish.js ***!
1686 \*****************************************/
1687/***/ function(module, exports, __webpack_require__) {
1688
1689 eval("// bufferish.js\n\nvar Buffer = exports.global = __webpack_require__(/*! ./buffer-global */ 182);\nvar hasBuffer = exports.hasBuffer = Buffer && !!Buffer.isBuffer;\nvar hasArrayBuffer = exports.hasArrayBuffer = (\"undefined\" !== typeof ArrayBuffer);\n\nvar isArray = exports.isArray = __webpack_require__(/*! isarray */ 32);\nexports.isArrayBuffer = hasArrayBuffer ? isArrayBuffer : _false;\nvar isBuffer = exports.isBuffer = hasBuffer ? Buffer.isBuffer : _false;\nvar isView = exports.isView = hasArrayBuffer ? (ArrayBuffer.isView || _is(\"ArrayBuffer\", \"buffer\")) : _false;\n\nexports.alloc = alloc;\nexports.concat = concat;\nexports.from = from;\n\nvar BufferArray = exports.Array = __webpack_require__(/*! ./bufferish-array */ 183);\nvar BufferBuffer = exports.Buffer = __webpack_require__(/*! ./bufferish-buffer */ 184);\nvar BufferUint8Array = exports.Uint8Array = __webpack_require__(/*! ./bufferish-uint8array */ 185);\nvar BufferProto = exports.prototype = __webpack_require__(/*! ./bufferish-proto */ 186);\n\n/**\n * @param value {Array|ArrayBuffer|Buffer|String}\n * @returns {Buffer|Uint8Array|Array}\n */\n\nfunction from(value) {\n if (typeof value === \"string\") {\n return fromString.call(this, value);\n } else {\n return auto(this).from(value);\n }\n}\n\n/**\n * @param size {Number}\n * @returns {Buffer|Uint8Array|Array}\n */\n\nfunction alloc(size) {\n return auto(this).alloc(size);\n}\n\n/**\n * @param list {Array} array of (Buffer|Uint8Array|Array)s\n * @param [length]\n * @returns {Buffer|Uint8Array|Array}\n */\n\nfunction concat(list, length) {\n if (!length) {\n length = 0;\n Array.prototype.forEach.call(list, dryrun);\n }\n var ref = (this !== exports) && this || list[0];\n var result = alloc.call(ref, length);\n var offset = 0;\n Array.prototype.forEach.call(list, append);\n return result;\n\n function dryrun(buffer) {\n length += buffer.length;\n }\n\n function append(buffer) {\n offset += BufferProto.copy.call(buffer, result, offset);\n }\n}\n\nvar _isArrayBuffer = _is(\"ArrayBuffer\");\n\nfunction isArrayBuffer(value) {\n return (value instanceof ArrayBuffer) || _isArrayBuffer(value);\n}\n\n/**\n * @private\n */\n\nfunction fromString(value) {\n var expected = value.length * 3;\n var that = alloc.call(this, expected);\n var actual = BufferProto.write.call(that, value);\n if (expected !== actual) {\n that = BufferProto.slice.call(that, 0, actual);\n }\n return that;\n}\n\nfunction auto(that) {\n return isBuffer(that) ? BufferBuffer\n : isView(that) ? BufferUint8Array\n : isArray(that) ? BufferArray\n : hasBuffer ? BufferBuffer\n : hasArrayBuffer ? BufferUint8Array\n : BufferArray;\n}\n\nfunction _false() {\n return false;\n}\n\nfunction _is(name, key) {\n /* jshint eqnull:true */\n name = \"[object \" + name + \"]\";\n return function(value) {\n return (value != null) && {}.toString.call(key ? value[key] : value) === name;\n };\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/bufferish.js\n// module id = 181\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/bufferish.js?");
1690
1691/***/ },
1692/* 182 */
1693/*!*********************************************!*\
1694 !*** ./~/msgpack-lite/lib/buffer-global.js ***!
1695 \*********************************************/
1696/***/ function(module, exports, __webpack_require__) {
1697
1698 eval("/* WEBPACK VAR INJECTION */(function(Buffer) {/* globals Buffer */\n\nmodule.exports =\n c((\"undefined\" !== typeof Buffer) && Buffer) ||\n c(this.Buffer) ||\n c((\"undefined\" !== typeof window) && window.Buffer) ||\n this.Buffer;\n\nfunction c(B) {\n return B && B.isBuffer && B;\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../buffer/index.js */ 29).Buffer))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/buffer-global.js\n// module id = 182\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/buffer-global.js?");
1699
1700/***/ },
1701/* 183 */
1702/*!***********************************************!*\
1703 !*** ./~/msgpack-lite/lib/bufferish-array.js ***!
1704 \***********************************************/
1705/***/ function(module, exports, __webpack_require__) {
1706
1707 eval("// bufferish-array.js\n\nvar Bufferish = __webpack_require__(/*! ./bufferish */ 181);\n\nvar exports = module.exports = alloc(0);\n\nexports.alloc = alloc;\nexports.concat = Bufferish.concat;\nexports.from = from;\n\n/**\n * @param size {Number}\n * @returns {Buffer|Uint8Array|Array}\n */\n\nfunction alloc(size) {\n return new Array(size);\n}\n\n/**\n * @param value {Array|ArrayBuffer|Buffer|String}\n * @returns {Array}\n */\n\nfunction from(value) {\n if (!Bufferish.isBuffer(value) && Bufferish.isView(value)) {\n // TypedArray to Uint8Array\n value = Bufferish.Uint8Array.from(value);\n } else if (Bufferish.isArrayBuffer(value)) {\n // ArrayBuffer to Uint8Array\n value = new Uint8Array(value);\n } else if (typeof value === \"string\") {\n // String to Array\n return Bufferish.from.call(exports, value);\n } else if (typeof value === \"number\") {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n // Array-like to Array\n return Array.prototype.slice.call(value);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/bufferish-array.js\n// module id = 183\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/bufferish-array.js?");
1708
1709/***/ },
1710/* 184 */
1711/*!************************************************!*\
1712 !*** ./~/msgpack-lite/lib/bufferish-buffer.js ***!
1713 \************************************************/
1714/***/ function(module, exports, __webpack_require__) {
1715
1716 eval("// bufferish-buffer.js\n\nvar Bufferish = __webpack_require__(/*! ./bufferish */ 181);\nvar Buffer = Bufferish.global;\n\nvar exports = module.exports = Bufferish.hasBuffer ? alloc(0) : [];\n\nexports.alloc = Bufferish.hasBuffer && Buffer.alloc || alloc;\nexports.concat = Bufferish.concat;\nexports.from = from;\n\n/**\n * @param size {Number}\n * @returns {Buffer|Uint8Array|Array}\n */\n\nfunction alloc(size) {\n return new Buffer(size);\n}\n\n/**\n * @param value {Array|ArrayBuffer|Buffer|String}\n * @returns {Buffer}\n */\n\nfunction from(value) {\n if (!Bufferish.isBuffer(value) && Bufferish.isView(value)) {\n // TypedArray to Uint8Array\n value = Bufferish.Uint8Array.from(value);\n } else if (Bufferish.isArrayBuffer(value)) {\n // ArrayBuffer to Uint8Array\n value = new Uint8Array(value);\n } else if (typeof value === \"string\") {\n // String to Buffer\n return Bufferish.from.call(exports, value);\n } else if (typeof value === \"number\") {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n // Array-like to Buffer\n if (Buffer.from && Buffer.from.length !== 1) {\n return Buffer.from(value); // node v6+\n } else {\n return new Buffer(value); // node v4\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/bufferish-buffer.js\n// module id = 184\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/bufferish-buffer.js?");
1717
1718/***/ },
1719/* 185 */
1720/*!****************************************************!*\
1721 !*** ./~/msgpack-lite/lib/bufferish-uint8array.js ***!
1722 \****************************************************/
1723/***/ function(module, exports, __webpack_require__) {
1724
1725 eval("// bufferish-uint8array.js\n\nvar Bufferish = __webpack_require__(/*! ./bufferish */ 181);\n\nvar exports = module.exports = Bufferish.hasArrayBuffer ? alloc(0) : [];\n\nexports.alloc = alloc;\nexports.concat = Bufferish.concat;\nexports.from = from;\n\n/**\n * @param size {Number}\n * @returns {Buffer|Uint8Array|Array}\n */\n\nfunction alloc(size) {\n return new Uint8Array(size);\n}\n\n/**\n * @param value {Array|ArrayBuffer|Buffer|String}\n * @returns {Uint8Array}\n */\n\nfunction from(value) {\n if (Bufferish.isView(value)) {\n // TypedArray to ArrayBuffer\n var byteOffset = value.byteOffset;\n var byteLength = value.byteLength;\n value = value.buffer;\n if (value.byteLength !== byteLength) {\n if (value.slice) {\n value = value.slice(byteOffset, byteOffset + byteLength);\n } else {\n // Android 4.1 does not have ArrayBuffer.prototype.slice\n value = new Uint8Array(value);\n if (value.byteLength !== byteLength) {\n // TypedArray to ArrayBuffer to Uint8Array to Array\n value = Array.prototype.slice.call(value, byteOffset, byteOffset + byteLength);\n }\n }\n }\n } else if (typeof value === \"string\") {\n // String to Uint8Array\n return Bufferish.from.call(exports, value);\n } else if (typeof value === \"number\") {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n return new Uint8Array(value);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/bufferish-uint8array.js\n// module id = 185\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/bufferish-uint8array.js?");
1726
1727/***/ },
1728/* 186 */
1729/*!***********************************************!*\
1730 !*** ./~/msgpack-lite/lib/bufferish-proto.js ***!
1731 \***********************************************/
1732/***/ function(module, exports, __webpack_require__) {
1733
1734 eval("// bufferish-proto.js\n\n/* jshint eqnull:true */\n\nvar BufferLite = __webpack_require__(/*! ./buffer-lite */ 187);\n\nexports.copy = copy;\nexports.slice = slice;\nexports.toString = toString;\nexports.write = gen(\"write\");\n\nvar Bufferish = __webpack_require__(/*! ./bufferish */ 181);\nvar Buffer = Bufferish.global;\n\nvar isBufferShim = Bufferish.hasBuffer && (\"TYPED_ARRAY_SUPPORT\" in Buffer);\nvar brokenTypedArray = isBufferShim && !Buffer.TYPED_ARRAY_SUPPORT;\n\n/**\n * @param target {Buffer|Uint8Array|Array}\n * @param [targetStart] {Number}\n * @param [start] {Number}\n * @param [end] {Number}\n * @returns {Buffer|Uint8Array|Array}\n */\n\nfunction copy(target, targetStart, start, end) {\n var thisIsBuffer = Bufferish.isBuffer(this);\n var targetIsBuffer = Bufferish.isBuffer(target);\n if (thisIsBuffer && targetIsBuffer) {\n // Buffer to Buffer\n return this.copy(target, targetStart, start, end);\n } else if (!brokenTypedArray && !thisIsBuffer && !targetIsBuffer &&\n Bufferish.isView(this) && Bufferish.isView(target)) {\n // Uint8Array to Uint8Array (except for minor some browsers)\n var buffer = (start || end != null) ? slice.call(this, start, end) : this;\n target.set(buffer, targetStart);\n return buffer.length;\n } else {\n // other cases\n return BufferLite.copy.call(this, target, targetStart, start, end);\n }\n}\n\n/**\n * @param [start] {Number}\n * @param [end] {Number}\n * @returns {Buffer|Uint8Array|Array}\n */\n\nfunction slice(start, end) {\n // for Buffer, Uint8Array (except for minor some browsers) and Array\n var f = this.slice || (!brokenTypedArray && this.subarray);\n if (f) return f.call(this, start, end);\n\n // Uint8Array (for minor some browsers)\n var target = Bufferish.alloc.call(this, end - start);\n copy.call(this, target, 0, start, end);\n return target;\n}\n\n/**\n * Buffer.prototype.toString()\n *\n * @param [encoding] {String} ignored\n * @param [start] {Number}\n * @param [end] {Number}\n * @returns {String}\n */\n\nfunction toString(encoding, start, end) {\n var f = (!isBufferShim && Bufferish.isBuffer(this)) ? this.toString : BufferLite.toString;\n return f.apply(this, arguments);\n}\n\n/**\n * @private\n */\n\nfunction gen(method) {\n return wrap;\n\n function wrap() {\n var f = this[method] || BufferLite[method];\n return f.apply(this, arguments);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/bufferish-proto.js\n// module id = 186\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/bufferish-proto.js?");
1735
1736/***/ },
1737/* 187 */
1738/*!*******************************************!*\
1739 !*** ./~/msgpack-lite/lib/buffer-lite.js ***!
1740 \*******************************************/
1741/***/ function(module, exports) {
1742
1743 eval("// buffer-lite.js\n\nvar MAXBUFLEN = 8192;\n\nexports.copy = copy;\nexports.toString = toString;\nexports.write = write;\n\n/**\n * Buffer.prototype.write()\n *\n * @param string {String}\n * @param [offset] {Number}\n * @returns {Number}\n */\n\nfunction write(string, offset) {\n var buffer = this;\n var index = offset || (offset |= 0);\n var length = string.length;\n var chr = 0;\n var i = 0;\n while (i < length) {\n chr = string.charCodeAt(i++);\n\n if (chr < 128) {\n buffer[index++] = chr;\n } else if (chr < 0x800) {\n // 2 bytes\n buffer[index++] = 0xC0 | (chr >>> 6);\n buffer[index++] = 0x80 | (chr & 0x3F);\n } else if (chr < 0xD800 || chr > 0xDFFF) {\n // 3 bytes\n buffer[index++] = 0xE0 | (chr >>> 12);\n buffer[index++] = 0x80 | ((chr >>> 6) & 0x3F);\n buffer[index++] = 0x80 | (chr & 0x3F);\n } else {\n // 4 bytes - surrogate pair\n chr = (((chr - 0xD800) << 10) | (string.charCodeAt(i++) - 0xDC00)) + 0x10000;\n buffer[index++] = 0xF0 | (chr >>> 18);\n buffer[index++] = 0x80 | ((chr >>> 12) & 0x3F);\n buffer[index++] = 0x80 | ((chr >>> 6) & 0x3F);\n buffer[index++] = 0x80 | (chr & 0x3F);\n }\n }\n return index - offset;\n}\n\n/**\n * Buffer.prototype.toString()\n *\n * @param [encoding] {String} ignored\n * @param [start] {Number}\n * @param [end] {Number}\n * @returns {String}\n */\n\nfunction toString(encoding, start, end) {\n var buffer = this;\n var index = start|0;\n if (!end) end = buffer.length;\n var string = '';\n var chr = 0;\n\n while (index < end) {\n chr = buffer[index++];\n if (chr < 128) {\n string += String.fromCharCode(chr);\n continue;\n }\n\n if ((chr & 0xE0) === 0xC0) {\n // 2 bytes\n chr = (chr & 0x1F) << 6 |\n (buffer[index++] & 0x3F);\n\n } else if ((chr & 0xF0) === 0xE0) {\n // 3 bytes\n chr = (chr & 0x0F) << 12 |\n (buffer[index++] & 0x3F) << 6 |\n (buffer[index++] & 0x3F);\n\n } else if ((chr & 0xF8) === 0xF0) {\n // 4 bytes\n chr = (chr & 0x07) << 18 |\n (buffer[index++] & 0x3F) << 12 |\n (buffer[index++] & 0x3F) << 6 |\n (buffer[index++] & 0x3F);\n }\n\n if (chr >= 0x010000) {\n // A surrogate pair\n chr -= 0x010000;\n\n string += String.fromCharCode((chr >>> 10) + 0xD800, (chr & 0x3FF) + 0xDC00);\n } else {\n string += String.fromCharCode(chr);\n }\n }\n\n return string;\n}\n\n/**\n * Buffer.prototype.copy()\n *\n * @param target {Buffer}\n * @param [targetStart] {Number}\n * @param [start] {Number}\n * @param [end] {Number}\n * @returns {number}\n */\n\nfunction copy(target, targetStart, start, end) {\n var i;\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (!targetStart) targetStart = 0;\n var len = end - start;\n\n if (target === this && start < targetStart && targetStart < end) {\n // descending\n for (i = len - 1; i >= 0; i--) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n // ascending\n for (i = 0; i < len; i++) {\n target[i + targetStart] = this[i + start];\n }\n }\n\n return len;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/buffer-lite.js\n// module id = 187\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/buffer-lite.js?");
1744
1745/***/ },
1746/* 188 */
1747/*!******************************************!*\
1748 !*** ./~/msgpack-lite/lib/ext-packer.js ***!
1749 \******************************************/
1750/***/ function(module, exports, __webpack_require__) {
1751
1752 eval("// ext-packer.js\n\nexports.setExtPackers = setExtPackers;\n\nvar Bufferish = __webpack_require__(/*! ./bufferish */ 181);\nvar Buffer = Bufferish.global;\nvar packTypedArray = Bufferish.Uint8Array.from;\nvar _encode;\n\nvar ERROR_COLUMNS = {name: 1, message: 1, stack: 1, columnNumber: 1, fileName: 1, lineNumber: 1};\n\nfunction setExtPackers(codec) {\n codec.addExtPacker(0x0E, Error, [packError, encode]);\n codec.addExtPacker(0x01, EvalError, [packError, encode]);\n codec.addExtPacker(0x02, RangeError, [packError, encode]);\n codec.addExtPacker(0x03, ReferenceError, [packError, encode]);\n codec.addExtPacker(0x04, SyntaxError, [packError, encode]);\n codec.addExtPacker(0x05, TypeError, [packError, encode]);\n codec.addExtPacker(0x06, URIError, [packError, encode]);\n\n codec.addExtPacker(0x0A, RegExp, [packRegExp, encode]);\n codec.addExtPacker(0x0B, Boolean, [packValueOf, encode]);\n codec.addExtPacker(0x0C, String, [packValueOf, encode]);\n codec.addExtPacker(0x0D, Date, [Number, encode]);\n codec.addExtPacker(0x0F, Number, [packValueOf, encode]);\n\n if (\"undefined\" !== typeof Uint8Array) {\n codec.addExtPacker(0x11, Int8Array, packTypedArray);\n codec.addExtPacker(0x12, Uint8Array, packTypedArray);\n codec.addExtPacker(0x13, Int16Array, packTypedArray);\n codec.addExtPacker(0x14, Uint16Array, packTypedArray);\n codec.addExtPacker(0x15, Int32Array, packTypedArray);\n codec.addExtPacker(0x16, Uint32Array, packTypedArray);\n codec.addExtPacker(0x17, Float32Array, packTypedArray);\n\n // PhantomJS/1.9.7 doesn't have Float64Array\n if (\"undefined\" !== typeof Float64Array) {\n codec.addExtPacker(0x18, Float64Array, packTypedArray);\n }\n\n // IE10 doesn't have Uint8ClampedArray\n if (\"undefined\" !== typeof Uint8ClampedArray) {\n codec.addExtPacker(0x19, Uint8ClampedArray, packTypedArray);\n }\n\n codec.addExtPacker(0x1A, ArrayBuffer, packTypedArray);\n codec.addExtPacker(0x1D, DataView, packTypedArray);\n }\n\n if (Bufferish.hasBuffer) {\n codec.addExtPacker(0x1B, Buffer, Bufferish.from);\n }\n}\n\nfunction encode(input) {\n if (!_encode) _encode = __webpack_require__(/*! ./encode */ 177).encode; // lazy load\n return _encode(input);\n}\n\nfunction packValueOf(value) {\n return (value).valueOf();\n}\n\nfunction packRegExp(value) {\n value = RegExp.prototype.toString.call(value).split(\"/\");\n value.shift();\n var out = [value.pop()];\n out.unshift(value.join(\"/\"));\n return out;\n}\n\nfunction packError(value) {\n var out = {};\n for (var key in ERROR_COLUMNS) {\n out[key] = value[key];\n }\n return out;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/ext-packer.js\n// module id = 188\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/ext-packer.js?");
1753
1754/***/ },
1755/* 189 */
1756/*!******************************************!*\
1757 !*** ./~/msgpack-lite/lib/write-type.js ***!
1758 \******************************************/
1759/***/ function(module, exports, __webpack_require__) {
1760
1761 eval("// write-type.js\n\nvar IS_ARRAY = __webpack_require__(/*! isarray */ 32);\nvar Int64Buffer = __webpack_require__(/*! int64-buffer */ 190);\nvar Uint64BE = Int64Buffer.Uint64BE;\nvar Int64BE = Int64Buffer.Int64BE;\n\nvar Bufferish = __webpack_require__(/*! ./bufferish */ 181);\nvar BufferProto = __webpack_require__(/*! ./bufferish-proto */ 186);\nvar WriteToken = __webpack_require__(/*! ./write-token */ 191);\nvar uint8 = __webpack_require__(/*! ./write-uint8 */ 192).uint8;\nvar ExtBuffer = __webpack_require__(/*! ./ext-buffer */ 180).ExtBuffer;\n\nvar HAS_UINT8ARRAY = (\"undefined\" !== typeof Uint8Array);\nvar HAS_MAP = (\"undefined\" !== typeof Map);\n\nvar extmap = [];\nextmap[1] = 0xd4;\nextmap[2] = 0xd5;\nextmap[4] = 0xd6;\nextmap[8] = 0xd7;\nextmap[16] = 0xd8;\n\nexports.getWriteType = getWriteType;\n\nfunction getWriteType(options) {\n var token = WriteToken.getWriteToken(options);\n var useraw = options && options.useraw;\n var binarraybuffer = HAS_UINT8ARRAY && options && options.binarraybuffer;\n var isBuffer = binarraybuffer ? Bufferish.isArrayBuffer : Bufferish.isBuffer;\n var bin = binarraybuffer ? bin_arraybuffer : bin_buffer;\n var usemap = HAS_MAP && options && options.usemap;\n var map = usemap ? map_to_map : obj_to_map;\n\n var writeType = {\n \"boolean\": bool,\n \"function\": nil,\n \"number\": number,\n \"object\": (useraw ? object_raw : object),\n \"string\": _string(useraw ? raw_head_size : str_head_size),\n \"symbol\": nil,\n \"undefined\": nil\n };\n\n return writeType;\n\n // false -- 0xc2\n // true -- 0xc3\n function bool(encoder, value) {\n var type = value ? 0xc3 : 0xc2;\n token[type](encoder, value);\n }\n\n function number(encoder, value) {\n var ivalue = value | 0;\n var type;\n if (value !== ivalue) {\n // float 64 -- 0xcb\n type = 0xcb;\n token[type](encoder, value);\n return;\n } else if (-0x20 <= ivalue && ivalue <= 0x7F) {\n // positive fixint -- 0x00 - 0x7f\n // negative fixint -- 0xe0 - 0xff\n type = ivalue & 0xFF;\n } else if (0 <= ivalue) {\n // uint 8 -- 0xcc\n // uint 16 -- 0xcd\n // uint 32 -- 0xce\n type = (ivalue <= 0xFF) ? 0xcc : (ivalue <= 0xFFFF) ? 0xcd : 0xce;\n } else {\n // int 8 -- 0xd0\n // int 16 -- 0xd1\n // int 32 -- 0xd2\n type = (-0x80 <= ivalue) ? 0xd0 : (-0x8000 <= ivalue) ? 0xd1 : 0xd2;\n }\n token[type](encoder, ivalue);\n }\n\n // uint 64 -- 0xcf\n function uint64(encoder, value) {\n var type = 0xcf;\n token[type](encoder, value.toArray());\n }\n\n // int 64 -- 0xd3\n function int64(encoder, value) {\n var type = 0xd3;\n token[type](encoder, value.toArray());\n }\n\n // str 8 -- 0xd9\n // str 16 -- 0xda\n // str 32 -- 0xdb\n // fixstr -- 0xa0 - 0xbf\n function str_head_size(length) {\n return (length < 32) ? 1 : (length <= 0xFF) ? 2 : (length <= 0xFFFF) ? 3 : 5;\n }\n\n // raw 16 -- 0xda\n // raw 32 -- 0xdb\n // fixraw -- 0xa0 - 0xbf\n function raw_head_size(length) {\n return (length < 32) ? 1 : (length <= 0xFFFF) ? 3 : 5;\n }\n\n function _string(head_size) {\n return string;\n\n function string(encoder, value) {\n // prepare buffer\n var length = value.length;\n var maxsize = 5 + length * 3;\n encoder.offset = encoder.reserve(maxsize);\n var buffer = encoder.buffer;\n\n // expected header size\n var expected = head_size(length);\n\n // expected start point\n var start = encoder.offset + expected;\n\n // write string\n length = BufferProto.write.call(buffer, value, start);\n\n // actual header size\n var actual = head_size(length);\n\n // move content when needed\n if (expected !== actual) {\n var targetStart = start + actual - expected;\n var end = start + length;\n BufferProto.copy.call(buffer, buffer, targetStart, start, end);\n }\n\n // write header\n var type = (actual === 1) ? (0xa0 + length) : (actual <= 3) ? (0xd7 + actual) : 0xdb;\n token[type](encoder, length);\n\n // move cursor\n encoder.offset += length;\n }\n }\n\n function object(encoder, value) {\n // null\n if (value === null) return nil(encoder, value);\n\n // Buffer\n if (isBuffer(value)) return bin(encoder, value);\n\n // Array\n if (IS_ARRAY(value)) return array(encoder, value);\n\n // int64-buffer objects\n if (Uint64BE.isUint64BE(value)) return uint64(encoder, value);\n if (Int64BE.isInt64BE(value)) return int64(encoder, value);\n\n // ext formats\n var packer = encoder.codec.getExtPacker(value);\n if (packer) value = packer(value);\n if (value instanceof ExtBuffer) return ext(encoder, value);\n\n // plain old Objects or Map\n map(encoder, value);\n }\n\n function object_raw(encoder, value) {\n // Buffer\n if (isBuffer(value)) return raw(encoder, value);\n\n // others\n object(encoder, value);\n }\n\n // nil -- 0xc0\n function nil(encoder, value) {\n var type = 0xc0;\n token[type](encoder, value);\n }\n\n // fixarray -- 0x90 - 0x9f\n // array 16 -- 0xdc\n // array 32 -- 0xdd\n function array(encoder, value) {\n var length = value.length;\n var type = (length < 16) ? (0x90 + length) : (length <= 0xFFFF) ? 0xdc : 0xdd;\n token[type](encoder, length);\n\n var encode = encoder.codec.encode;\n for (var i = 0; i < length; i++) {\n encode(encoder, value[i]);\n }\n }\n\n // bin 8 -- 0xc4\n // bin 16 -- 0xc5\n // bin 32 -- 0xc6\n function bin_buffer(encoder, value) {\n var length = value.length;\n var type = (length < 0xFF) ? 0xc4 : (length <= 0xFFFF) ? 0xc5 : 0xc6;\n token[type](encoder, length);\n encoder.send(value);\n }\n\n function bin_arraybuffer(encoder, value) {\n bin_buffer(encoder, new Uint8Array(value));\n }\n\n // fixext 1 -- 0xd4\n // fixext 2 -- 0xd5\n // fixext 4 -- 0xd6\n // fixext 8 -- 0xd7\n // fixext 16 -- 0xd8\n // ext 8 -- 0xc7\n // ext 16 -- 0xc8\n // ext 32 -- 0xc9\n function ext(encoder, value) {\n var buffer = value.buffer;\n var length = buffer.length;\n var type = extmap[length] || ((length < 0xFF) ? 0xc7 : (length <= 0xFFFF) ? 0xc8 : 0xc9);\n token[type](encoder, length);\n uint8[value.type](encoder);\n encoder.send(buffer);\n }\n\n // fixmap -- 0x80 - 0x8f\n // map 16 -- 0xde\n // map 32 -- 0xdf\n function obj_to_map(encoder, value) {\n var keys = Object.keys(value);\n var length = keys.length;\n var type = (length < 16) ? (0x80 + length) : (length <= 0xFFFF) ? 0xde : 0xdf;\n token[type](encoder, length);\n\n var encode = encoder.codec.encode;\n keys.forEach(function(key) {\n encode(encoder, key);\n encode(encoder, value[key]);\n });\n }\n\n // fixmap -- 0x80 - 0x8f\n // map 16 -- 0xde\n // map 32 -- 0xdf\n function map_to_map(encoder, value) {\n if (!(value instanceof Map)) return obj_to_map(encoder, value);\n\n var length = value.size;\n var type = (length < 16) ? (0x80 + length) : (length <= 0xFFFF) ? 0xde : 0xdf;\n token[type](encoder, length);\n\n var encode = encoder.codec.encode;\n value.forEach(function(val, key, m) {\n encode(encoder, key);\n encode(encoder, val);\n });\n }\n\n // raw 16 -- 0xda\n // raw 32 -- 0xdb\n // fixraw -- 0xa0 - 0xbf\n function raw(encoder, value) {\n var length = value.length;\n var type = (length < 32) ? (0xa0 + length) : (length <= 0xFFFF) ? 0xda : 0xdb;\n token[type](encoder, length);\n encoder.send(value);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/write-type.js\n// module id = 189\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/write-type.js?");
1762
1763/***/ },
1764/* 190 */
1765/*!****************************************!*\
1766 !*** ./~/int64-buffer/int64-buffer.js ***!
1767 \****************************************/
1768/***/ function(module, exports, __webpack_require__) {
1769
1770 eval("/* WEBPACK VAR INJECTION */(function(Buffer) {// int64-buffer.js\n\n/*jshint -W018 */ // Confusing use of '!'.\n/*jshint -W030 */ // Expected an assignment or function call and instead saw an expression.\n/*jshint -W093 */ // Did you mean to return a conditional instead of an assignment?\n\nvar Uint64BE, Int64BE, Uint64LE, Int64LE;\n\n!function(exports) {\n // constants\n\n var UNDEFINED = \"undefined\";\n var BUFFER = (UNDEFINED !== typeof Buffer) && Buffer;\n var UINT8ARRAY = (UNDEFINED !== typeof Uint8Array) && Uint8Array;\n var ARRAYBUFFER = (UNDEFINED !== typeof ArrayBuffer) && ArrayBuffer;\n var ZERO = [0, 0, 0, 0, 0, 0, 0, 0];\n var isArray = Array.isArray || _isArray;\n var BIT32 = 4294967296;\n var BIT24 = 16777216;\n\n // storage class\n\n var storage; // Array;\n\n // generate classes\n\n Uint64BE = factory(\"Uint64BE\", true, true);\n Int64BE = factory(\"Int64BE\", true, false);\n Uint64LE = factory(\"Uint64LE\", false, true);\n Int64LE = factory(\"Int64LE\", false, false);\n\n // class factory\n\n function factory(name, bigendian, unsigned) {\n var posH = bigendian ? 0 : 4;\n var posL = bigendian ? 4 : 0;\n var pos0 = bigendian ? 0 : 3;\n var pos1 = bigendian ? 1 : 2;\n var pos2 = bigendian ? 2 : 1;\n var pos3 = bigendian ? 3 : 0;\n var fromPositive = bigendian ? fromPositiveBE : fromPositiveLE;\n var fromNegative = bigendian ? fromNegativeBE : fromNegativeLE;\n var proto = Int64.prototype;\n var isName = \"is\" + name;\n var _isInt64 = \"_\" + isName;\n\n // properties\n proto.buffer = void 0;\n proto.offset = 0;\n proto[_isInt64] = true;\n\n // methods\n proto.toNumber = toNumber;\n proto.toString = toString;\n proto.toJSON = toNumber;\n proto.toArray = toArray;\n\n // add .toBuffer() method only when Buffer available\n if (BUFFER) proto.toBuffer = toBuffer;\n\n // add .toArrayBuffer() method only when Uint8Array available\n if (UINT8ARRAY) proto.toArrayBuffer = toArrayBuffer;\n\n // isUint64BE, isInt64BE\n Int64[isName] = isInt64;\n\n // CommonJS\n exports[name] = Int64;\n\n return Int64;\n\n // constructor\n function Int64(buffer, offset, value, raddix) {\n if (!(this instanceof Int64)) return new Int64(buffer, offset, value, raddix);\n return init(this, buffer, offset, value, raddix);\n }\n\n // isUint64BE, isInt64BE\n function isInt64(b) {\n return !!(b && b[_isInt64]);\n }\n\n // initializer\n function init(that, buffer, offset, value, raddix) {\n if (UINT8ARRAY && ARRAYBUFFER) {\n if (buffer instanceof ARRAYBUFFER) buffer = new UINT8ARRAY(buffer);\n if (value instanceof ARRAYBUFFER) value = new UINT8ARRAY(value);\n }\n\n // Int64BE() style\n if (!buffer && !offset && !value && !storage) {\n // shortcut to initialize with zero\n that.buffer = newArray(ZERO, 0);\n return;\n }\n\n // Int64BE(value, raddix) style\n if (!isValidBuffer(buffer, offset)) {\n var _storage = storage || Array;\n raddix = offset;\n value = buffer;\n offset = 0;\n buffer = new _storage(8);\n }\n\n that.buffer = buffer;\n that.offset = offset |= 0;\n\n // Int64BE(buffer, offset) style\n if (UNDEFINED === typeof value) return;\n\n // Int64BE(buffer, offset, value, raddix) style\n if (\"string\" === typeof value) {\n fromString(buffer, offset, value, raddix || 10);\n } else if (isValidBuffer(value, raddix)) {\n fromArray(buffer, offset, value, raddix);\n } else if (\"number\" === typeof raddix) {\n writeInt32(buffer, offset + posH, value); // high\n writeInt32(buffer, offset + posL, raddix); // low\n } else if (value > 0) {\n fromPositive(buffer, offset, value); // positive\n } else if (value < 0) {\n fromNegative(buffer, offset, value); // negative\n } else {\n fromArray(buffer, offset, ZERO, 0); // zero, NaN and others\n }\n }\n\n function fromString(buffer, offset, str, raddix) {\n var pos = 0;\n var len = str.length;\n var high = 0;\n var low = 0;\n if (str[0] === \"-\") pos++;\n var sign = pos;\n while (pos < len) {\n var chr = parseInt(str[pos++], raddix);\n if (!(chr >= 0)) break; // NaN\n low = low * raddix + chr;\n high = high * raddix + Math.floor(low / BIT32);\n low %= BIT32;\n }\n if (sign) {\n high = ~high;\n if (low) {\n low = BIT32 - low;\n } else {\n high++;\n }\n }\n writeInt32(buffer, offset + posH, high);\n writeInt32(buffer, offset + posL, low);\n }\n\n function toNumber() {\n var buffer = this.buffer;\n var offset = this.offset;\n var high = readInt32(buffer, offset + posH);\n var low = readInt32(buffer, offset + posL);\n if (!unsigned) high |= 0; // a trick to get signed\n return high ? (high * BIT32 + low) : low;\n }\n\n function toString(radix) {\n var buffer = this.buffer;\n var offset = this.offset;\n var high = readInt32(buffer, offset + posH);\n var low = readInt32(buffer, offset + posL);\n var str = \"\";\n var sign = !unsigned && (high & 0x80000000);\n if (sign) {\n high = ~high;\n low = BIT32 - low;\n }\n radix = radix || 10;\n while (1) {\n var mod = (high % radix) * BIT32 + low;\n high = Math.floor(high / radix);\n low = Math.floor(mod / radix);\n str = (mod % radix).toString(radix) + str;\n if (!high && !low) break;\n }\n if (sign) {\n str = \"-\" + str;\n }\n return str;\n }\n\n function writeInt32(buffer, offset, value) {\n buffer[offset + pos3] = value & 255;\n value = value >> 8;\n buffer[offset + pos2] = value & 255;\n value = value >> 8;\n buffer[offset + pos1] = value & 255;\n value = value >> 8;\n buffer[offset + pos0] = value & 255;\n }\n\n function readInt32(buffer, offset) {\n return (buffer[offset + pos0] * BIT24) +\n (buffer[offset + pos1] << 16) +\n (buffer[offset + pos2] << 8) +\n buffer[offset + pos3];\n }\n }\n\n function toArray(raw) {\n var buffer = this.buffer;\n var offset = this.offset;\n storage = null; // Array\n if (raw !== false && offset === 0 && buffer.length === 8 && isArray(buffer)) return buffer;\n return newArray(buffer, offset);\n }\n\n function toBuffer(raw) {\n var buffer = this.buffer;\n var offset = this.offset;\n storage = BUFFER;\n if (raw !== false && offset === 0 && buffer.length === 8 && Buffer.isBuffer(buffer)) return buffer;\n var dest = new BUFFER(8);\n fromArray(dest, 0, buffer, offset);\n return dest;\n }\n\n function toArrayBuffer(raw) {\n var buffer = this.buffer;\n var offset = this.offset;\n var arrbuf = buffer.buffer;\n storage = UINT8ARRAY;\n if (raw !== false && offset === 0 && (arrbuf instanceof ARRAYBUFFER) && arrbuf.byteLength === 8) return arrbuf;\n var dest = new UINT8ARRAY(8);\n fromArray(dest, 0, buffer, offset);\n return dest.buffer;\n }\n\n function isValidBuffer(buffer, offset) {\n var len = buffer && buffer.length;\n offset |= 0;\n return len && (offset + 8 <= len) && (\"string\" !== typeof buffer[offset]);\n }\n\n function fromArray(destbuf, destoff, srcbuf, srcoff) {\n destoff |= 0;\n srcoff |= 0;\n for (var i = 0; i < 8; i++) {\n destbuf[destoff++] = srcbuf[srcoff++] & 255;\n }\n }\n\n function newArray(buffer, offset) {\n return Array.prototype.slice.call(buffer, offset, offset + 8);\n }\n\n function fromPositiveBE(buffer, offset, value) {\n var pos = offset + 8;\n while (pos > offset) {\n buffer[--pos] = value & 255;\n value /= 256;\n }\n }\n\n function fromNegativeBE(buffer, offset, value) {\n var pos = offset + 8;\n value++;\n while (pos > offset) {\n buffer[--pos] = ((-value) & 255) ^ 255;\n value /= 256;\n }\n }\n\n function fromPositiveLE(buffer, offset, value) {\n var end = offset + 8;\n while (offset < end) {\n buffer[offset++] = value & 255;\n value /= 256;\n }\n }\n\n function fromNegativeLE(buffer, offset, value) {\n var end = offset + 8;\n value++;\n while (offset < end) {\n buffer[offset++] = ((-value) & 255) ^ 255;\n value /= 256;\n }\n }\n\n // https://github.com/retrofox/is-array\n function _isArray(val) {\n return !!val && \"[object Array]\" == Object.prototype.toString.call(val);\n }\n\n}(typeof exports === 'object' && typeof exports.nodeName !== 'string' ? exports : (this || {}));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../buffer/index.js */ 29).Buffer))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/int64-buffer/int64-buffer.js\n// module id = 190\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/int64-buffer/int64-buffer.js?");
1771
1772/***/ },
1773/* 191 */
1774/*!*******************************************!*\
1775 !*** ./~/msgpack-lite/lib/write-token.js ***!
1776 \*******************************************/
1777/***/ function(module, exports, __webpack_require__) {
1778
1779 eval("// write-token.js\n\nvar ieee754 = __webpack_require__(/*! ieee754 */ 31);\nvar Int64Buffer = __webpack_require__(/*! int64-buffer */ 190);\nvar Uint64BE = Int64Buffer.Uint64BE;\nvar Int64BE = Int64Buffer.Int64BE;\n\nvar uint8 = __webpack_require__(/*! ./write-uint8 */ 192).uint8;\nvar Bufferish = __webpack_require__(/*! ./bufferish */ 181);\nvar Buffer = Bufferish.global;\nvar IS_BUFFER_SHIM = Bufferish.hasBuffer && (\"TYPED_ARRAY_SUPPORT\" in Buffer);\nvar NO_TYPED_ARRAY = IS_BUFFER_SHIM && !Buffer.TYPED_ARRAY_SUPPORT;\nvar Buffer_prototype = Bufferish.hasBuffer && Buffer.prototype || {};\n\nexports.getWriteToken = getWriteToken;\n\nfunction getWriteToken(options) {\n if (options && options.uint8array) {\n return init_uint8array();\n } else if (NO_TYPED_ARRAY || (Bufferish.hasBuffer && options && options.safe)) {\n return init_safe();\n } else {\n return init_token();\n }\n}\n\nfunction init_uint8array() {\n var token = init_token();\n\n // float 32 -- 0xca\n // float 64 -- 0xcb\n token[0xca] = writeN(0xca, 4, writeFloatBE);\n token[0xcb] = writeN(0xcb, 8, writeDoubleBE);\n\n return token;\n}\n\n// Node.js and browsers with TypedArray\n\nfunction init_token() {\n // (immediate values)\n // positive fixint -- 0x00 - 0x7f\n // nil -- 0xc0\n // false -- 0xc2\n // true -- 0xc3\n // negative fixint -- 0xe0 - 0xff\n var token = uint8.slice();\n\n // bin 8 -- 0xc4\n // bin 16 -- 0xc5\n // bin 32 -- 0xc6\n token[0xc4] = write1(0xc4);\n token[0xc5] = write2(0xc5);\n token[0xc6] = write4(0xc6);\n\n // ext 8 -- 0xc7\n // ext 16 -- 0xc8\n // ext 32 -- 0xc9\n token[0xc7] = write1(0xc7);\n token[0xc8] = write2(0xc8);\n token[0xc9] = write4(0xc9);\n\n // float 32 -- 0xca\n // float 64 -- 0xcb\n token[0xca] = writeN(0xca, 4, (Buffer_prototype.writeFloatBE || writeFloatBE), true);\n token[0xcb] = writeN(0xcb, 8, (Buffer_prototype.writeDoubleBE || writeDoubleBE), true);\n\n // uint 8 -- 0xcc\n // uint 16 -- 0xcd\n // uint 32 -- 0xce\n // uint 64 -- 0xcf\n token[0xcc] = write1(0xcc);\n token[0xcd] = write2(0xcd);\n token[0xce] = write4(0xce);\n token[0xcf] = writeN(0xcf, 8, writeUInt64BE);\n\n // int 8 -- 0xd0\n // int 16 -- 0xd1\n // int 32 -- 0xd2\n // int 64 -- 0xd3\n token[0xd0] = write1(0xd0);\n token[0xd1] = write2(0xd1);\n token[0xd2] = write4(0xd2);\n token[0xd3] = writeN(0xd3, 8, writeInt64BE);\n\n // str 8 -- 0xd9\n // str 16 -- 0xda\n // str 32 -- 0xdb\n token[0xd9] = write1(0xd9);\n token[0xda] = write2(0xda);\n token[0xdb] = write4(0xdb);\n\n // array 16 -- 0xdc\n // array 32 -- 0xdd\n token[0xdc] = write2(0xdc);\n token[0xdd] = write4(0xdd);\n\n // map 16 -- 0xde\n // map 32 -- 0xdf\n token[0xde] = write2(0xde);\n token[0xdf] = write4(0xdf);\n\n return token;\n}\n\n// safe mode: for old browsers and who needs asserts\n\nfunction init_safe() {\n // (immediate values)\n // positive fixint -- 0x00 - 0x7f\n // nil -- 0xc0\n // false -- 0xc2\n // true -- 0xc3\n // negative fixint -- 0xe0 - 0xff\n var token = uint8.slice();\n\n // bin 8 -- 0xc4\n // bin 16 -- 0xc5\n // bin 32 -- 0xc6\n token[0xc4] = writeN(0xc4, 1, Buffer.prototype.writeUInt8);\n token[0xc5] = writeN(0xc5, 2, Buffer.prototype.writeUInt16BE);\n token[0xc6] = writeN(0xc6, 4, Buffer.prototype.writeUInt32BE);\n\n // ext 8 -- 0xc7\n // ext 16 -- 0xc8\n // ext 32 -- 0xc9\n token[0xc7] = writeN(0xc7, 1, Buffer.prototype.writeUInt8);\n token[0xc8] = writeN(0xc8, 2, Buffer.prototype.writeUInt16BE);\n token[0xc9] = writeN(0xc9, 4, Buffer.prototype.writeUInt32BE);\n\n // float 32 -- 0xca\n // float 64 -- 0xcb\n token[0xca] = writeN(0xca, 4, Buffer.prototype.writeFloatBE);\n token[0xcb] = writeN(0xcb, 8, Buffer.prototype.writeDoubleBE);\n\n // uint 8 -- 0xcc\n // uint 16 -- 0xcd\n // uint 32 -- 0xce\n // uint 64 -- 0xcf\n token[0xcc] = writeN(0xcc, 1, Buffer.prototype.writeUInt8);\n token[0xcd] = writeN(0xcd, 2, Buffer.prototype.writeUInt16BE);\n token[0xce] = writeN(0xce, 4, Buffer.prototype.writeUInt32BE);\n token[0xcf] = writeN(0xcf, 8, writeUInt64BE);\n\n // int 8 -- 0xd0\n // int 16 -- 0xd1\n // int 32 -- 0xd2\n // int 64 -- 0xd3\n token[0xd0] = writeN(0xd0, 1, Buffer.prototype.writeInt8);\n token[0xd1] = writeN(0xd1, 2, Buffer.prototype.writeInt16BE);\n token[0xd2] = writeN(0xd2, 4, Buffer.prototype.writeInt32BE);\n token[0xd3] = writeN(0xd3, 8, writeInt64BE);\n\n // str 8 -- 0xd9\n // str 16 -- 0xda\n // str 32 -- 0xdb\n token[0xd9] = writeN(0xd9, 1, Buffer.prototype.writeUInt8);\n token[0xda] = writeN(0xda, 2, Buffer.prototype.writeUInt16BE);\n token[0xdb] = writeN(0xdb, 4, Buffer.prototype.writeUInt32BE);\n\n // array 16 -- 0xdc\n // array 32 -- 0xdd\n token[0xdc] = writeN(0xdc, 2, Buffer.prototype.writeUInt16BE);\n token[0xdd] = writeN(0xdd, 4, Buffer.prototype.writeUInt32BE);\n\n // map 16 -- 0xde\n // map 32 -- 0xdf\n token[0xde] = writeN(0xde, 2, Buffer.prototype.writeUInt16BE);\n token[0xdf] = writeN(0xdf, 4, Buffer.prototype.writeUInt32BE);\n\n return token;\n}\n\nfunction write1(type) {\n return function(encoder, value) {\n var offset = encoder.reserve(2);\n var buffer = encoder.buffer;\n buffer[offset++] = type;\n buffer[offset] = value;\n };\n}\n\nfunction write2(type) {\n return function(encoder, value) {\n var offset = encoder.reserve(3);\n var buffer = encoder.buffer;\n buffer[offset++] = type;\n buffer[offset++] = value >>> 8;\n buffer[offset] = value;\n };\n}\n\nfunction write4(type) {\n return function(encoder, value) {\n var offset = encoder.reserve(5);\n var buffer = encoder.buffer;\n buffer[offset++] = type;\n buffer[offset++] = value >>> 24;\n buffer[offset++] = value >>> 16;\n buffer[offset++] = value >>> 8;\n buffer[offset] = value;\n };\n}\n\nfunction writeN(type, len, method, noAssert) {\n return function(encoder, value) {\n var offset = encoder.reserve(len + 1);\n encoder.buffer[offset++] = type;\n method.call(encoder.buffer, value, offset, noAssert);\n };\n}\n\nfunction writeUInt64BE(value, offset) {\n new Uint64BE(this, offset, value);\n}\n\nfunction writeInt64BE(value, offset) {\n new Int64BE(this, offset, value);\n}\n\nfunction writeFloatBE(value, offset) {\n ieee754.write(this, value, offset, false, 23, 4);\n}\n\nfunction writeDoubleBE(value, offset) {\n ieee754.write(this, value, offset, false, 52, 8);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/write-token.js\n// module id = 191\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/write-token.js?");
1780
1781/***/ },
1782/* 192 */
1783/*!*******************************************!*\
1784 !*** ./~/msgpack-lite/lib/write-uint8.js ***!
1785 \*******************************************/
1786/***/ function(module, exports) {
1787
1788 eval("// write-unit8.js\n\nvar constant = exports.uint8 = new Array(256);\n\nfor (var i = 0x00; i <= 0xFF; i++) {\n constant[i] = write0(i);\n}\n\nfunction write0(type) {\n return function(encoder) {\n var offset = encoder.reserve(1);\n encoder.buffer[offset] = type;\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/write-uint8.js\n// module id = 192\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/write-uint8.js?");
1789
1790/***/ },
1791/* 193 */
1792/*!******************************************!*\
1793 !*** ./~/msgpack-lite/lib/codec-base.js ***!
1794 \******************************************/
1795/***/ function(module, exports, __webpack_require__) {
1796
1797 eval("// codec-base.js\n\nvar IS_ARRAY = __webpack_require__(/*! isarray */ 32);\n\nexports.createCodec = createCodec;\nexports.install = install;\nexports.filter = filter;\n\nvar Bufferish = __webpack_require__(/*! ./bufferish */ 181);\n\nfunction Codec(options) {\n if (!(this instanceof Codec)) return new Codec(options);\n this.options = options;\n this.init();\n}\n\nCodec.prototype.init = function() {\n var options = this.options;\n\n if (options && options.uint8array) {\n this.bufferish = Bufferish.Uint8Array;\n }\n\n return this;\n};\n\nfunction install(props) {\n for (var key in props) {\n Codec.prototype[key] = add(Codec.prototype[key], props[key]);\n }\n}\n\nfunction add(a, b) {\n return (a && b) ? ab : (a || b);\n\n function ab() {\n a.apply(this, arguments);\n return b.apply(this, arguments);\n }\n}\n\nfunction join(filters) {\n filters = filters.slice();\n\n return function(value) {\n return filters.reduce(iterator, value);\n };\n\n function iterator(value, filter) {\n return filter(value);\n }\n}\n\nfunction filter(filter) {\n return IS_ARRAY(filter) ? join(filter) : filter;\n}\n\n// @public\n// msgpack.createCodec()\n\nfunction createCodec(options) {\n return new Codec(options);\n}\n\n// default shared codec\n\nexports.preset = createCodec({preset: true});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/codec-base.js\n// module id = 193\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/codec-base.js?");
1798
1799/***/ },
1800/* 194 */
1801/*!*******************************************!*\
1802 !*** ./~/msgpack-lite/lib/flex-buffer.js ***!
1803 \*******************************************/
1804/***/ function(module, exports, __webpack_require__) {
1805
1806 eval("// flex-buffer.js\n\nexports.FlexDecoder = FlexDecoder;\nexports.FlexEncoder = FlexEncoder;\n\nvar Bufferish = __webpack_require__(/*! ./bufferish */ 181);\n\nvar MIN_BUFFER_SIZE = 2048;\nvar MAX_BUFFER_SIZE = 65536;\nvar BUFFER_SHORTAGE = \"BUFFER_SHORTAGE\";\n\nfunction FlexDecoder() {\n if (!(this instanceof FlexDecoder)) return new FlexDecoder();\n}\n\nfunction FlexEncoder() {\n if (!(this instanceof FlexEncoder)) return new FlexEncoder();\n}\n\nFlexDecoder.mixin = mixinFactory(getDecoderMethods());\nFlexDecoder.mixin(FlexDecoder.prototype);\n\nFlexEncoder.mixin = mixinFactory(getEncoderMethods());\nFlexEncoder.mixin(FlexEncoder.prototype);\n\nfunction getDecoderMethods() {\n return {\n bufferish: Bufferish,\n write: write,\n fetch: fetch,\n flush: flush,\n push: push,\n pull: pull,\n read: read,\n reserve: reserve,\n offset: 0\n };\n\n function write(chunk) {\n var prev = this.offset ? Bufferish.prototype.slice.call(this.buffer, this.offset) : this.buffer;\n this.buffer = prev ? (chunk ? this.bufferish.concat([prev, chunk]) : prev) : chunk;\n this.offset = 0;\n }\n\n function flush() {\n while (this.offset < this.buffer.length) {\n var start = this.offset;\n var value;\n try {\n value = this.fetch();\n } catch (e) {\n if (e && e.message != BUFFER_SHORTAGE) throw e;\n // rollback\n this.offset = start;\n break;\n }\n this.push(value);\n }\n }\n\n function reserve(length) {\n var start = this.offset;\n var end = start + length;\n if (end > this.buffer.length) throw new Error(BUFFER_SHORTAGE);\n this.offset = end;\n return start;\n }\n}\n\nfunction getEncoderMethods() {\n return {\n bufferish: Bufferish,\n write: write,\n fetch: fetch,\n flush: flush,\n push: push,\n pull: pull,\n read: read,\n reserve: reserve,\n send: send,\n maxBufferSize: MAX_BUFFER_SIZE,\n minBufferSize: MIN_BUFFER_SIZE,\n offset: 0,\n start: 0\n };\n\n function fetch() {\n var start = this.start;\n if (start < this.offset) {\n var end = this.start = this.offset;\n return Bufferish.prototype.slice.call(this.buffer, start, end);\n }\n }\n\n function flush() {\n while (this.start < this.offset) {\n var value = this.fetch();\n if (value) this.push(value);\n }\n }\n\n function pull() {\n var buffers = this.buffers || (this.buffers = []);\n var chunk = buffers.length > 1 ? this.bufferish.concat(buffers) : buffers[0];\n buffers.length = 0; // buffer exhausted\n return chunk;\n }\n\n function reserve(length) {\n var req = length | 0;\n\n if (this.buffer) {\n var size = this.buffer.length;\n var start = this.offset | 0;\n var end = start + req;\n\n // is it long enough?\n if (end < size) {\n this.offset = end;\n return start;\n }\n\n // flush current buffer\n this.flush();\n\n // resize it to 2x current length\n length = Math.max(length, Math.min(size * 2, this.maxBufferSize));\n }\n\n // minimum buffer size\n length = Math.max(length, this.minBufferSize);\n\n // allocate new buffer\n this.buffer = this.bufferish.alloc(length);\n this.start = 0;\n this.offset = req;\n return 0;\n }\n\n function send(buffer) {\n var length = buffer.length;\n if (length > this.minBufferSize) {\n this.flush();\n this.push(buffer);\n } else {\n var offset = this.reserve(length);\n Bufferish.prototype.copy.call(buffer, this.buffer, offset);\n }\n }\n}\n\n// common methods\n\nfunction write() {\n throw new Error(\"method not implemented: write()\");\n}\n\nfunction fetch() {\n throw new Error(\"method not implemented: fetch()\");\n}\n\nfunction read() {\n var length = this.buffers && this.buffers.length;\n\n // fetch the first result\n if (!length) return this.fetch();\n\n // flush current buffer\n this.flush();\n\n // read from the results\n return this.pull();\n}\n\nfunction push(chunk) {\n var buffers = this.buffers || (this.buffers = []);\n buffers.push(chunk);\n}\n\nfunction pull() {\n var buffers = this.buffers || (this.buffers = []);\n return buffers.shift();\n}\n\nfunction mixinFactory(source) {\n return mixin;\n\n function mixin(target) {\n for (var key in source) {\n target[key] = source[key];\n }\n return target;\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/flex-buffer.js\n// module id = 194\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/flex-buffer.js?");
1807
1808/***/ },
1809/* 195 */
1810/*!**************************************!*\
1811 !*** ./~/msgpack-lite/lib/decode.js ***!
1812 \**************************************/
1813/***/ function(module, exports, __webpack_require__) {
1814
1815 eval("// decode.js\n\nexports.decode = decode;\n\nvar DecodeBuffer = __webpack_require__(/*! ./decode-buffer */ 196).DecodeBuffer;\n\nfunction decode(input, options) {\n var decoder = new DecodeBuffer(options);\n decoder.write(input);\n return decoder.read();\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/decode.js\n// module id = 195\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/decode.js?");
1816
1817/***/ },
1818/* 196 */
1819/*!*********************************************!*\
1820 !*** ./~/msgpack-lite/lib/decode-buffer.js ***!
1821 \*********************************************/
1822/***/ function(module, exports, __webpack_require__) {
1823
1824 eval("// decode-buffer.js\n\nexports.DecodeBuffer = DecodeBuffer;\n\nvar preset = __webpack_require__(/*! ./read-core */ 197).preset;\n\nvar FlexDecoder = __webpack_require__(/*! ./flex-buffer */ 194).FlexDecoder;\n\nFlexDecoder.mixin(DecodeBuffer.prototype);\n\nfunction DecodeBuffer(options) {\n if (!(this instanceof DecodeBuffer)) return new DecodeBuffer(options);\n\n if (options) {\n this.options = options;\n if (options.codec) {\n var codec = this.codec = options.codec;\n if (codec.bufferish) this.bufferish = codec.bufferish;\n }\n }\n}\n\nDecodeBuffer.prototype.codec = preset;\n\nDecodeBuffer.prototype.fetch = function() {\n return this.codec.decode(this);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/decode-buffer.js\n// module id = 196\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/decode-buffer.js?");
1825
1826/***/ },
1827/* 197 */
1828/*!*****************************************!*\
1829 !*** ./~/msgpack-lite/lib/read-core.js ***!
1830 \*****************************************/
1831/***/ function(module, exports, __webpack_require__) {
1832
1833 eval("// read-core.js\n\nvar ExtBuffer = __webpack_require__(/*! ./ext-buffer */ 180).ExtBuffer;\nvar ExtUnpacker = __webpack_require__(/*! ./ext-unpacker */ 198);\nvar readUint8 = __webpack_require__(/*! ./read-format */ 199).readUint8;\nvar ReadToken = __webpack_require__(/*! ./read-token */ 200);\nvar CodecBase = __webpack_require__(/*! ./codec-base */ 193);\n\nCodecBase.install({\n addExtUnpacker: addExtUnpacker,\n getExtUnpacker: getExtUnpacker,\n init: init\n});\n\nexports.preset = init.call(CodecBase.preset);\n\nfunction getDecoder(options) {\n var readToken = ReadToken.getReadToken(options);\n return decode;\n\n function decode(decoder) {\n var type = readUint8(decoder);\n var func = readToken[type];\n if (!func) throw new Error(\"Invalid type: \" + (type ? (\"0x\" + type.toString(16)) : type));\n return func(decoder);\n }\n}\n\nfunction init() {\n var options = this.options;\n this.decode = getDecoder(options);\n\n if (options && options.preset) {\n ExtUnpacker.setExtUnpackers(this);\n }\n\n return this;\n}\n\nfunction addExtUnpacker(etype, unpacker) {\n var unpackers = this.extUnpackers || (this.extUnpackers = []);\n unpackers[etype] = CodecBase.filter(unpacker);\n}\n\nfunction getExtUnpacker(type) {\n var unpackers = this.extUnpackers || (this.extUnpackers = []);\n return unpackers[type] || extUnpacker;\n\n function extUnpacker(buffer) {\n return new ExtBuffer(buffer, type);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/read-core.js\n// module id = 197\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/read-core.js?");
1834
1835/***/ },
1836/* 198 */
1837/*!********************************************!*\
1838 !*** ./~/msgpack-lite/lib/ext-unpacker.js ***!
1839 \********************************************/
1840/***/ function(module, exports, __webpack_require__) {
1841
1842 eval("// ext-unpacker.js\n\nexports.setExtUnpackers = setExtUnpackers;\n\nvar Bufferish = __webpack_require__(/*! ./bufferish */ 181);\nvar Buffer = Bufferish.global;\nvar _decode;\n\nvar ERROR_COLUMNS = {name: 1, message: 1, stack: 1, columnNumber: 1, fileName: 1, lineNumber: 1};\n\nfunction setExtUnpackers(codec) {\n codec.addExtUnpacker(0x0E, [decode, unpackError(Error)]);\n codec.addExtUnpacker(0x01, [decode, unpackError(EvalError)]);\n codec.addExtUnpacker(0x02, [decode, unpackError(RangeError)]);\n codec.addExtUnpacker(0x03, [decode, unpackError(ReferenceError)]);\n codec.addExtUnpacker(0x04, [decode, unpackError(SyntaxError)]);\n codec.addExtUnpacker(0x05, [decode, unpackError(TypeError)]);\n codec.addExtUnpacker(0x06, [decode, unpackError(URIError)]);\n\n codec.addExtUnpacker(0x0A, [decode, unpackRegExp]);\n codec.addExtUnpacker(0x0B, [decode, unpackClass(Boolean)]);\n codec.addExtUnpacker(0x0C, [decode, unpackClass(String)]);\n codec.addExtUnpacker(0x0D, [decode, unpackClass(Date)]);\n codec.addExtUnpacker(0x0F, [decode, unpackClass(Number)]);\n\n if (\"undefined\" !== typeof Uint8Array) {\n codec.addExtUnpacker(0x11, unpackClass(Int8Array));\n codec.addExtUnpacker(0x12, unpackClass(Uint8Array));\n codec.addExtUnpacker(0x13, [unpackArrayBuffer, unpackClass(Int16Array)]);\n codec.addExtUnpacker(0x14, [unpackArrayBuffer, unpackClass(Uint16Array)]);\n codec.addExtUnpacker(0x15, [unpackArrayBuffer, unpackClass(Int32Array)]);\n codec.addExtUnpacker(0x16, [unpackArrayBuffer, unpackClass(Uint32Array)]);\n codec.addExtUnpacker(0x17, [unpackArrayBuffer, unpackClass(Float32Array)]);\n\n // PhantomJS/1.9.7 doesn't have Float64Array\n if (\"undefined\" !== typeof Float64Array) {\n codec.addExtUnpacker(0x18, [unpackArrayBuffer, unpackClass(Float64Array)]);\n }\n\n // IE10 doesn't have Uint8ClampedArray\n if (\"undefined\" !== typeof Uint8ClampedArray) {\n codec.addExtUnpacker(0x19, unpackClass(Uint8ClampedArray));\n }\n\n codec.addExtUnpacker(0x1A, unpackArrayBuffer);\n codec.addExtUnpacker(0x1D, [unpackArrayBuffer, unpackClass(DataView)]);\n }\n\n if (Bufferish.hasBuffer) {\n codec.addExtUnpacker(0x1B, unpackClass(Buffer));\n }\n}\n\nfunction decode(input) {\n if (!_decode) _decode = __webpack_require__(/*! ./decode */ 195).decode; // lazy load\n return _decode(input);\n}\n\nfunction unpackRegExp(value) {\n return RegExp.apply(null, value);\n}\n\nfunction unpackError(Class) {\n return function(value) {\n var out = new Class();\n for (var key in ERROR_COLUMNS) {\n out[key] = value[key];\n }\n return out;\n };\n}\n\nfunction unpackClass(Class) {\n return function(value) {\n return new Class(value);\n };\n}\n\nfunction unpackArrayBuffer(value) {\n return (new Uint8Array(value)).buffer;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/ext-unpacker.js\n// module id = 198\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/ext-unpacker.js?");
1843
1844/***/ },
1845/* 199 */
1846/*!*******************************************!*\
1847 !*** ./~/msgpack-lite/lib/read-format.js ***!
1848 \*******************************************/
1849/***/ function(module, exports, __webpack_require__) {
1850
1851 eval("// read-format.js\n\nvar ieee754 = __webpack_require__(/*! ieee754 */ 31);\nvar Int64Buffer = __webpack_require__(/*! int64-buffer */ 190);\nvar Uint64BE = Int64Buffer.Uint64BE;\nvar Int64BE = Int64Buffer.Int64BE;\n\nexports.getReadFormat = getReadFormat;\nexports.readUint8 = uint8;\n\nvar Bufferish = __webpack_require__(/*! ./bufferish */ 181);\nvar BufferProto = __webpack_require__(/*! ./bufferish-proto */ 186);\n\nvar HAS_MAP = (\"undefined\" !== typeof Map);\nvar NO_ASSERT = true;\n\nfunction getReadFormat(options) {\n var binarraybuffer = Bufferish.hasArrayBuffer && options && options.binarraybuffer;\n var int64 = options && options.int64;\n var usemap = HAS_MAP && options && options.usemap;\n\n var readFormat = {\n map: (usemap ? map_to_map : map_to_obj),\n array: array,\n str: str,\n bin: (binarraybuffer ? bin_arraybuffer : bin_buffer),\n ext: ext,\n uint8: uint8,\n uint16: uint16,\n uint32: uint32,\n uint64: read(8, int64 ? readUInt64BE_int64 : readUInt64BE),\n int8: int8,\n int16: int16,\n int32: int32,\n int64: read(8, int64 ? readInt64BE_int64 : readInt64BE),\n float32: read(4, readFloatBE),\n float64: read(8, readDoubleBE)\n };\n\n return readFormat;\n}\n\nfunction map_to_obj(decoder, len) {\n var value = {};\n var i;\n var k = new Array(len);\n var v = new Array(len);\n\n var decode = decoder.codec.decode;\n for (i = 0; i < len; i++) {\n k[i] = decode(decoder);\n v[i] = decode(decoder);\n }\n for (i = 0; i < len; i++) {\n value[k[i]] = v[i];\n }\n return value;\n}\n\nfunction map_to_map(decoder, len) {\n var value = new Map();\n var i;\n var k = new Array(len);\n var v = new Array(len);\n\n var decode = decoder.codec.decode;\n for (i = 0; i < len; i++) {\n k[i] = decode(decoder);\n v[i] = decode(decoder);\n }\n for (i = 0; i < len; i++) {\n value.set(k[i], v[i]);\n }\n return value;\n}\n\nfunction array(decoder, len) {\n var value = new Array(len);\n var decode = decoder.codec.decode;\n for (var i = 0; i < len; i++) {\n value[i] = decode(decoder);\n }\n return value;\n}\n\nfunction str(decoder, len) {\n var start = decoder.reserve(len);\n var end = start + len;\n return BufferProto.toString.call(decoder.buffer, \"utf-8\", start, end);\n}\n\nfunction bin_buffer(decoder, len) {\n var start = decoder.reserve(len);\n var end = start + len;\n var buf = BufferProto.slice.call(decoder.buffer, start, end);\n return Bufferish.from(buf);\n}\n\nfunction bin_arraybuffer(decoder, len) {\n var start = decoder.reserve(len);\n var end = start + len;\n var buf = BufferProto.slice.call(decoder.buffer, start, end);\n return Bufferish.Uint8Array.from(buf).buffer;\n}\n\nfunction ext(decoder, len) {\n var start = decoder.reserve(len+1);\n var type = decoder.buffer[start++];\n var end = start + len;\n var unpack = decoder.codec.getExtUnpacker(type);\n if (!unpack) throw new Error(\"Invalid ext type: \" + (type ? (\"0x\" + type.toString(16)) : type));\n var buf = BufferProto.slice.call(decoder.buffer, start, end);\n return unpack(buf);\n}\n\nfunction uint8(decoder) {\n var start = decoder.reserve(1);\n return decoder.buffer[start];\n}\n\nfunction int8(decoder) {\n var start = decoder.reserve(1);\n var value = decoder.buffer[start];\n return (value & 0x80) ? value - 0x100 : value;\n}\n\nfunction uint16(decoder) {\n var start = decoder.reserve(2);\n var buffer = decoder.buffer;\n return (buffer[start++] << 8) | buffer[start];\n}\n\nfunction int16(decoder) {\n var start = decoder.reserve(2);\n var buffer = decoder.buffer;\n var value = (buffer[start++] << 8) | buffer[start];\n return (value & 0x8000) ? value - 0x10000 : value;\n}\n\nfunction uint32(decoder) {\n var start = decoder.reserve(4);\n var buffer = decoder.buffer;\n return (buffer[start++] * 16777216) + (buffer[start++] << 16) + (buffer[start++] << 8) + buffer[start];\n}\n\nfunction int32(decoder) {\n var start = decoder.reserve(4);\n var buffer = decoder.buffer;\n return (buffer[start++] << 24) | (buffer[start++] << 16) | (buffer[start++] << 8) | buffer[start];\n}\n\nfunction read(len, method) {\n return function(decoder) {\n var start = decoder.reserve(len);\n return method.call(decoder.buffer, start, NO_ASSERT);\n };\n}\n\nfunction readUInt64BE(start) {\n return new Uint64BE(this, start).toNumber();\n}\n\nfunction readInt64BE(start) {\n return new Int64BE(this, start).toNumber();\n}\n\nfunction readUInt64BE_int64(start) {\n return new Uint64BE(this, start);\n}\n\nfunction readInt64BE_int64(start) {\n return new Int64BE(this, start);\n}\n\nfunction readFloatBE(start) {\n return ieee754.read(this, start, false, 23, 4);\n}\n\nfunction readDoubleBE(start) {\n return ieee754.read(this, start, false, 52, 8);\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/read-format.js\n// module id = 199\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/read-format.js?");
1852
1853/***/ },
1854/* 200 */
1855/*!******************************************!*\
1856 !*** ./~/msgpack-lite/lib/read-token.js ***!
1857 \******************************************/
1858/***/ function(module, exports, __webpack_require__) {
1859
1860 eval("// read-token.js\n\nvar ReadFormat = __webpack_require__(/*! ./read-format */ 199);\n\nexports.getReadToken = getReadToken;\n\nfunction getReadToken(options) {\n var format = ReadFormat.getReadFormat(options);\n\n if (options && options.useraw) {\n return init_useraw(format);\n } else {\n return init_token(format);\n }\n}\n\nfunction init_token(format) {\n var i;\n var token = new Array(256);\n\n // positive fixint -- 0x00 - 0x7f\n for (i = 0x00; i <= 0x7f; i++) {\n token[i] = constant(i);\n }\n\n // fixmap -- 0x80 - 0x8f\n for (i = 0x80; i <= 0x8f; i++) {\n token[i] = fix(i - 0x80, format.map);\n }\n\n // fixarray -- 0x90 - 0x9f\n for (i = 0x90; i <= 0x9f; i++) {\n token[i] = fix(i - 0x90, format.array);\n }\n\n // fixstr -- 0xa0 - 0xbf\n for (i = 0xa0; i <= 0xbf; i++) {\n token[i] = fix(i - 0xa0, format.str);\n }\n\n // nil -- 0xc0\n token[0xc0] = constant(null);\n\n // (never used) -- 0xc1\n token[0xc1] = null;\n\n // false -- 0xc2\n // true -- 0xc3\n token[0xc2] = constant(false);\n token[0xc3] = constant(true);\n\n // bin 8 -- 0xc4\n // bin 16 -- 0xc5\n // bin 32 -- 0xc6\n token[0xc4] = flex(format.uint8, format.bin);\n token[0xc5] = flex(format.uint16, format.bin);\n token[0xc6] = flex(format.uint32, format.bin);\n\n // ext 8 -- 0xc7\n // ext 16 -- 0xc8\n // ext 32 -- 0xc9\n token[0xc7] = flex(format.uint8, format.ext);\n token[0xc8] = flex(format.uint16, format.ext);\n token[0xc9] = flex(format.uint32, format.ext);\n\n // float 32 -- 0xca\n // float 64 -- 0xcb\n token[0xca] = format.float32;\n token[0xcb] = format.float64;\n\n // uint 8 -- 0xcc\n // uint 16 -- 0xcd\n // uint 32 -- 0xce\n // uint 64 -- 0xcf\n token[0xcc] = format.uint8;\n token[0xcd] = format.uint16;\n token[0xce] = format.uint32;\n token[0xcf] = format.uint64;\n\n // int 8 -- 0xd0\n // int 16 -- 0xd1\n // int 32 -- 0xd2\n // int 64 -- 0xd3\n token[0xd0] = format.int8;\n token[0xd1] = format.int16;\n token[0xd2] = format.int32;\n token[0xd3] = format.int64;\n\n // fixext 1 -- 0xd4\n // fixext 2 -- 0xd5\n // fixext 4 -- 0xd6\n // fixext 8 -- 0xd7\n // fixext 16 -- 0xd8\n token[0xd4] = fix(1, format.ext);\n token[0xd5] = fix(2, format.ext);\n token[0xd6] = fix(4, format.ext);\n token[0xd7] = fix(8, format.ext);\n token[0xd8] = fix(16, format.ext);\n\n // str 8 -- 0xd9\n // str 16 -- 0xda\n // str 32 -- 0xdb\n token[0xd9] = flex(format.uint8, format.str);\n token[0xda] = flex(format.uint16, format.str);\n token[0xdb] = flex(format.uint32, format.str);\n\n // array 16 -- 0xdc\n // array 32 -- 0xdd\n token[0xdc] = flex(format.uint16, format.array);\n token[0xdd] = flex(format.uint32, format.array);\n\n // map 16 -- 0xde\n // map 32 -- 0xdf\n token[0xde] = flex(format.uint16, format.map);\n token[0xdf] = flex(format.uint32, format.map);\n\n // negative fixint -- 0xe0 - 0xff\n for (i = 0xe0; i <= 0xff; i++) {\n token[i] = constant(i - 0x100);\n }\n\n return token;\n}\n\nfunction init_useraw(format) {\n var i;\n var token = init_token(format).slice();\n\n // raw 8 -- 0xd9\n // raw 16 -- 0xda\n // raw 32 -- 0xdb\n token[0xd9] = token[0xc4];\n token[0xda] = token[0xc5];\n token[0xdb] = token[0xc6];\n\n // fixraw -- 0xa0 - 0xbf\n for (i = 0xa0; i <= 0xbf; i++) {\n token[i] = fix(i - 0xa0, format.bin);\n }\n\n return token;\n}\n\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nfunction flex(lenFunc, decodeFunc) {\n return function(decoder) {\n var len = lenFunc(decoder);\n return decodeFunc(decoder, len);\n };\n}\n\nfunction fix(len, method) {\n return function(decoder) {\n return method(decoder, len);\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/read-token.js\n// module id = 200\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/read-token.js?");
1861
1862/***/ },
1863/* 201 */
1864/*!***************************************!*\
1865 !*** ./~/msgpack-lite/lib/encoder.js ***!
1866 \***************************************/
1867/***/ function(module, exports, __webpack_require__) {
1868
1869 eval("// encoder.js\n\nexports.Encoder = Encoder;\n\nvar EventLite = __webpack_require__(/*! event-lite */ 202);\nvar EncodeBuffer = __webpack_require__(/*! ./encode-buffer */ 178).EncodeBuffer;\n\nfunction Encoder(options) {\n if (!(this instanceof Encoder)) return new Encoder(options);\n EncodeBuffer.call(this, options);\n}\n\nEncoder.prototype = new EncodeBuffer();\n\nEventLite.mixin(Encoder.prototype);\n\nEncoder.prototype.encode = function(chunk) {\n this.write(chunk);\n this.emit(\"data\", this.read());\n};\n\nEncoder.prototype.end = function(chunk) {\n if (arguments.length) this.encode(chunk);\n this.flush();\n this.emit(\"end\");\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/encoder.js\n// module id = 201\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/encoder.js?");
1870
1871/***/ },
1872/* 202 */
1873/*!************************************!*\
1874 !*** ./~/event-lite/event-lite.js ***!
1875 \************************************/
1876/***/ function(module, exports, __webpack_require__) {
1877
1878 eval("/**\n * event-lite.js - Light-weight EventEmitter (less than 1KB when gzipped)\n *\n * @copyright Yusuke Kawasaki\n * @license MIT\n * @constructor\n * @see https://github.com/kawanet/event-lite\n * @see http://kawanet.github.io/event-lite/EventLite.html\n * @example\n * var EventLite = require(\"event-lite\");\n *\n * function MyClass() {...} // your class\n *\n * EventLite.mixin(MyClass.prototype); // import event methods\n *\n * var obj = new MyClass();\n * obj.on(\"foo\", function() {...}); // add event listener\n * obj.once(\"bar\", function() {...}); // add one-time event listener\n * obj.emit(\"foo\"); // dispatch event\n * obj.emit(\"bar\"); // dispatch another event\n * obj.off(\"foo\"); // remove event listener\n */\n\nfunction EventLite() {\n if (!(this instanceof EventLite)) return new EventLite();\n}\n\n(function(EventLite) {\n // export the class for node.js\n if (true) module.exports = EventLite;\n\n // property name to hold listeners\n var LISTENERS = \"listeners\";\n\n // methods to export\n var methods = {\n on: on,\n once: once,\n off: off,\n emit: emit\n };\n\n // mixin to self\n mixin(EventLite.prototype);\n\n // export mixin function\n EventLite.mixin = mixin;\n\n /**\n * Import on(), once(), off() and emit() methods into target object.\n *\n * @function EventLite.mixin\n * @param target {Prototype}\n */\n\n function mixin(target) {\n for (var key in methods) {\n target[key] = methods[key];\n }\n return target;\n }\n\n /**\n * Add an event listener.\n *\n * @function EventLite.prototype.on\n * @param type {string}\n * @param func {Function}\n * @returns {EventLite} Self for method chaining\n */\n\n function on(type, func) {\n getListeners(this, type).push(func);\n return this;\n }\n\n /**\n * Add one-time event listener.\n *\n * @function EventLite.prototype.once\n * @param type {string}\n * @param func {Function}\n * @returns {EventLite} Self for method chaining\n */\n\n function once(type, func) {\n var that = this;\n wrap.originalListener = func;\n getListeners(that, type).push(wrap);\n return that;\n\n function wrap() {\n off.call(that, type, wrap);\n func.apply(this, arguments);\n }\n }\n\n /**\n * Remove an event listener.\n *\n * @function EventLite.prototype.off\n * @param [type] {string}\n * @param [func] {Function}\n * @returns {EventLite} Self for method chaining\n */\n\n function off(type, func) {\n var that = this;\n var listners;\n if (!arguments.length) {\n delete that[LISTENERS];\n } else if (!func) {\n listners = that[LISTENERS];\n if (listners) {\n delete listners[type];\n if (!Object.keys(listners).length) return off.call(that);\n }\n } else {\n listners = getListeners(that, type, true);\n if (listners) {\n listners = listners.filter(ne);\n if (!listners.length) return off.call(that, type);\n that[LISTENERS][type] = listners;\n }\n }\n return that;\n\n function ne(test) {\n return test !== func && test.originalListener !== func;\n }\n }\n\n /**\n * Dispatch (trigger) an event.\n *\n * @function EventLite.prototype.emit\n * @param type {string}\n * @param [value] {*}\n * @returns {boolean} True when a listener received the event\n */\n\n function emit(type, value) {\n var that = this;\n var listeners = getListeners(that, type, true);\n if (!listeners) return false;\n var arglen = arguments.length;\n if (arglen === 1) {\n listeners.forEach(zeroarg);\n } else if (arglen === 2) {\n listeners.forEach(onearg);\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n listeners.forEach(moreargs);\n }\n return !!listeners.length;\n\n function zeroarg(func) {\n func.call(that);\n }\n\n function onearg(func) {\n func.call(that, value);\n }\n\n function moreargs(func) {\n func.apply(that, args);\n }\n }\n\n /**\n * @ignore\n */\n\n function getListeners(that, type, readonly) {\n if (readonly && !that[LISTENERS]) return;\n var listeners = that[LISTENERS] || (that[LISTENERS] = {});\n return listeners[type] || (listeners[type] = []);\n }\n\n})(EventLite);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/event-lite/event-lite.js\n// module id = 202\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/event-lite/event-lite.js?");
1879
1880/***/ },
1881/* 203 */
1882/*!***************************************!*\
1883 !*** ./~/msgpack-lite/lib/decoder.js ***!
1884 \***************************************/
1885/***/ function(module, exports, __webpack_require__) {
1886
1887 eval("// decoder.js\n\nexports.Decoder = Decoder;\n\nvar EventLite = __webpack_require__(/*! event-lite */ 202);\nvar DecodeBuffer = __webpack_require__(/*! ./decode-buffer */ 196).DecodeBuffer;\n\nfunction Decoder(options) {\n if (!(this instanceof Decoder)) return new Decoder(options);\n DecodeBuffer.call(this, options);\n}\n\nDecoder.prototype = new DecodeBuffer();\n\nEventLite.mixin(Decoder.prototype);\n\nDecoder.prototype.decode = function(chunk) {\n if (arguments.length) this.write(chunk);\n this.flush();\n};\n\nDecoder.prototype.push = function(chunk) {\n this.emit(\"data\", chunk);\n};\n\nDecoder.prototype.end = function(chunk) {\n this.decode(chunk);\n this.emit(\"end\");\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/decoder.js\n// module id = 203\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/decoder.js?");
1888
1889/***/ },
1890/* 204 */
1891/*!***********************************!*\
1892 !*** ./~/msgpack-lite/lib/ext.js ***!
1893 \***********************************/
1894/***/ function(module, exports, __webpack_require__) {
1895
1896 eval("// ext.js\n\n// load both interfaces\n__webpack_require__(/*! ./read-core */ 197);\n__webpack_require__(/*! ./write-core */ 179);\n\nexports.createCodec = __webpack_require__(/*! ./codec-base */ 193).createCodec;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/ext.js\n// module id = 204\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/ext.js?");
1897
1898/***/ },
1899/* 205 */
1900/*!*************************************!*\
1901 !*** ./~/msgpack-lite/lib/codec.js ***!
1902 \*************************************/
1903/***/ function(module, exports, __webpack_require__) {
1904
1905 eval("// codec.js\n\n// load both interfaces\n__webpack_require__(/*! ./read-core */ 197);\n__webpack_require__(/*! ./write-core */ 179);\n\n// @public\n// msgpack.codec.preset\n\nexports.codec = {\n preset: __webpack_require__(/*! ./codec-base */ 193).preset\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/msgpack-lite/lib/codec.js\n// module id = 205\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/msgpack-lite/lib/codec.js?");
1906
1907/***/ },
1908/* 206 */
1909/*!****************************!*\
1910 !*** ./~/cbor/lib/cbor.js ***!
1911 \****************************/
1912/***/ function(module, exports, __webpack_require__) {
1913
1914 eval("'use strict'\n\nexports.Commented = __webpack_require__(/*! ./commented */ 207)\nexports.Diagnose = __webpack_require__(/*! ./diagnose */ 249)\nexports.Decoder = __webpack_require__(/*! ./decoder */ 239)\nexports.Encoder = __webpack_require__(/*! ./encoder */ 250)\nexports.Simple = __webpack_require__(/*! ./simple */ 238)\nexports.Tagged = __webpack_require__(/*! ./tagged */ 242)\n\nexports.comment = exports.Commented.comment\nexports.decodeAll = exports.Decoder.decodeAll\nexports.decodeFirst = exports.Decoder.decodeFirst\nexports.decodeAllSync = exports.Decoder.decodeAllSync\nexports.decodeFirstSync = exports.Decoder.decodeFirstSync\nexports.diagnose = exports.Diagnose.diagnose\nexports.encode = exports.Encoder.encode\nexports.decode = exports.Decoder.decodeFirstSync\n\nexports.leveldb = {\n decode: exports.Decoder.decodeAllSync,\n encode: exports.Encoder.encode,\n buffer: true,\n name: 'cbor'\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cbor/lib/cbor.js\n// module id = 206\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/cbor/lib/cbor.js?");
1915
1916/***/ },
1917/* 207 */
1918/*!*********************************!*\
1919 !*** ./~/cbor/lib/commented.js ***!
1920 \*********************************/
1921/***/ function(module, exports, __webpack_require__) {
1922
1923 eval("/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict'\n\nconst stream = __webpack_require__(/*! stream */ 208)\nconst util = __webpack_require__(/*! util */ 231)\nconst utils = __webpack_require__(/*! ./utils */ 234)\nconst Simple = __webpack_require__(/*! ./simple */ 238)\nconst Decoder = __webpack_require__(/*! ./decoder */ 239)\nconst constants = __webpack_require__(/*! ./constants */ 237)\nconst bignumber = __webpack_require__(/*! bignumber.js */ 236)\nconst NoFilter = __webpack_require__(/*! nofilter */ 241)\n\nconst MT = constants.MT,\n NUMBYTES = constants.NUMBYTES,\n SYMS = constants.SYMS\n\nfunction plural (c) {\n if (c > 1) {\n return 's'\n } else {\n return ''\n }\n}\n\n/**\n * Generate the expanded format of RFC 7049, section 2.2.1\n *\n * @extends {stream.Transform}\n */\nclass Commented extends stream.Transform {\n /**\n * Create a CBOR commenter.\n *\n * @param {any} [options={}] - Stream options\n * @param {bool} [options.max_depth=10] - how many times to indent the dashes\n */\n constructor (options) {\n options = options || {}\n options.readableObjectMode = false\n options.writableObjectMode = false\n const max_depth = (options.max_depth != null) ? options.max_depth : 10\n delete options.max_depth\n super(options)\n\n this.depth = 1\n this.max_depth = max_depth\n this.all = new NoFilter\n this.parser = new Decoder(options)\n this.parser.on('value', this._on_value.bind(this))\n this.parser.on('start', this._on_start.bind(this))\n this.parser.on('start-string', this._on_start_string.bind(this))\n this.parser.on('stop', this._on_stop.bind(this))\n this.parser.on('more-bytes', this._on_more.bind(this))\n this.parser.on('error', this._on_error.bind(this))\n this.parser.on('data', this._on_data.bind(this))\n this.parser.bs.on('read', this._on_read.bind(this))\n }\n\n /**\n * @private\n */\n _transform (fresh, encoding, cb) {\n this.parser.write(fresh, encoding, function (er) {\n cb(er)\n })\n }\n\n /**\n * @private\n */\n _flush (cb) {\n // TODO: find the test that covers this, and look at the return value\n return this.parser._flush(cb)\n }\n\n /**\n * @callback commentCallback\n * @param {Error} error - if one was generated\n * @param {string} commented - the comment string\n */\n\n /**\n * Comment on an input Buffer or string, creating a string passed to the\n * callback. If callback not specified, a promise is returned.\n *\n * @static\n * @param {(string|Buffer|NoFilter)} input\n * @param {(string|object|function)} options\n * @param {number} [options.max_depth=10] - how many times to indent the dashes\n * @param {commentCallback=} cb\n * @returns {Promise} if cb not specified\n */\n static comment (input, options, cb) {\n if (input == null) {\n throw new Error('input required')\n }\n let encoding = (typeof input === 'string') ? 'hex' : void 0\n let max_depth = 10\n switch (typeof options) {\n case 'function':\n cb = options\n break\n case 'string':\n encoding = options\n break\n case 'number':\n max_depth = options\n break\n case 'object':\n let ref1, ref2\n encoding = (ref1 = options.encoding) != null ? ref1 : encoding\n max_depth = (ref2 = options.max_depth) != null ? ref2 : max_depth\n break\n case 'undefined':\n break\n default:\n throw new Error('Unknown option type')\n }\n const bs = new NoFilter\n const d = new Commented({\n max_depth: max_depth\n })\n let p = null\n if (typeof cb === 'function') {\n d.on('end', function () {\n return cb(null, bs.toString('utf8'))\n })\n d.on('error', cb)\n } else {\n p = new Promise(function (resolve, reject) {\n d.on('end', function () {\n return resolve(bs.toString('utf8'))\n })\n return d.on('error', reject)\n })\n }\n d.pipe(bs)\n d.end(input, encoding)\n return p\n }\n\n /**\n * @private\n */\n _on_error (er) {\n return this.push('ERROR: ') &&\n this.push(er.toString()) &&\n this.push('\\n')\n }\n\n /**\n * @private\n */\n _on_read (buf) {\n this.all.write(buf)\n const hex = buf.toString('hex')\n this.push(new Array(this.depth + 1).join(' '))\n this.push(hex)\n let ind = (this.max_depth - this.depth) * 2\n ind -= hex.length\n if (ind < 1) {\n ind = 1\n }\n this.push(new Array(ind + 1).join(' '))\n return this.push('-- ')\n }\n\n /**\n * @private\n */\n _on_more (mt, len, parent_mt, pos) {\n this.depth++\n let desc = ''\n switch (mt) {\n case MT.POS_INT:\n desc = 'Positive number,'\n break\n case MT.NEG_INT:\n desc = 'Negative number,'\n break\n case MT.ARRAY:\n desc = 'Array, length'\n break\n case MT.MAP:\n desc = 'Map, count'\n break\n case MT.BYTE_STRING:\n desc = 'Bytes, length'\n break\n case MT.UTF8_STRING:\n desc = 'String, length'\n break\n case MT.SIMPLE_FLOAT:\n if (len === 1) {\n desc = 'Simple value,'\n } else {\n desc = 'Float,'\n }\n break\n }\n return this.push(desc + ' next ' + len + ' byte' + (plural(len)) + '\\n')\n }\n\n /**\n * @private\n */\n _on_start_string (mt, tag, parent_mt, pos) {\n this.depth++\n let desc = ''\n switch (mt) {\n case MT.BYTE_STRING:\n desc = 'Bytes, length: ' + tag\n break\n case MT.UTF8_STRING:\n desc = 'String, length: ' + (tag.toString())\n break\n }\n return this.push(desc + '\\n')\n }\n\n /**\n * @private\n */\n _on_start (mt, tag, parent_mt, pos) {\n this.depth++\n if (tag !== SYMS.BREAK) {\n this.push((function () {\n switch (parent_mt) {\n case MT.ARRAY:\n return '[' + pos + '], '\n case MT.MAP:\n if (pos % 2) {\n return '{Val:' + (Math.floor(pos / 2)) + '}, '\n } else {\n return '{Key:' + (Math.floor(pos / 2)) + '}, '\n }\n }\n })())\n }\n this.push((function () {\n switch (mt) {\n case MT.TAG:\n return 'Tag #' + tag\n case MT.ARRAY:\n if (tag === SYMS.STREAM) {\n return 'Array (streaming)'\n } else {\n return 'Array, ' + tag + ' item' + (plural(tag))\n }\n case MT.MAP:\n if (tag === SYMS.STREAM) {\n return 'Map (streaming)'\n } else {\n return 'Map, ' + tag + ' pair' + (plural(tag))\n }\n case MT.BYTE_STRING:\n return 'Bytes (streaming)'\n case MT.UTF8_STRING:\n return 'String (streaming)'\n }\n })())\n return this.push('\\n')\n }\n\n /**\n * @private\n */\n _on_stop (mt) {\n return this.depth--\n }\n\n /**\n * @private\n */\n _on_value (val, parent_mt, pos, ai) {\n if (val !== SYMS.BREAK) {\n this.push((function () {\n switch (parent_mt) {\n case MT.ARRAY:\n return '[' + pos + '], '\n case MT.MAP:\n if (pos % 2) {\n return '{Val:' + (Math.floor(pos / 2)) + '}, '\n } else {\n return '{Key:' + (Math.floor(pos / 2)) + '}, '\n }\n }\n })())\n }\n\n if (val === SYMS.BREAK) {\n this.push('BREAK\\n')\n } else if (val === SYMS.NULL) {\n this.push('null\\n')\n } else if (val === SYMS.UNDEFINED) {\n this.push('undefined\\n')\n } else if (typeof val === 'string') {\n this.depth--\n if (val.length > 0 ) {\n this.push(JSON.stringify(val))\n this.push('\\n')\n }\n } else if (Buffer.isBuffer(val)) {\n this.depth--\n if (val.length > 0) {\n this.push(val.toString('hex'))\n this.push('\\n')\n }\n } else if (val instanceof bignumber) {\n this.push(val.toString())\n this.push('\\n')\n } else {\n this.push(util.inspect(val))\n this.push('\\n')\n }\n\n switch (ai) {\n case NUMBYTES.ONE:\n case NUMBYTES.TWO:\n case NUMBYTES.FOUR:\n case NUMBYTES.EIGHT:\n this.depth--\n }\n }\n\n /**\n * @private\n */\n _on_data () {\n this.push('0x')\n this.push(this.all.read().toString('hex'))\n return this.push('\\n')\n }\n}\n\nmodule.exports = Commented\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../buffer/index.js */ 29).Buffer))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cbor/lib/commented.js\n// module id = 207\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/cbor/lib/commented.js?");
1924
1925/***/ },
1926/* 208 */
1927/*!**************************************!*\
1928 !*** ./~/stream-browserify/index.js ***!
1929 \**************************************/
1930/***/ function(module, exports, __webpack_require__) {
1931
1932 eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = __webpack_require__(/*! events */ 209).EventEmitter;\nvar inherits = __webpack_require__(/*! inherits */ 210);\n\ninherits(Stream, EE);\nStream.Readable = __webpack_require__(/*! readable-stream/readable.js */ 211);\nStream.Writable = __webpack_require__(/*! readable-stream/writable.js */ 227);\nStream.Duplex = __webpack_require__(/*! readable-stream/duplex.js */ 228);\nStream.Transform = __webpack_require__(/*! readable-stream/transform.js */ 229);\nStream.PassThrough = __webpack_require__(/*! readable-stream/passthrough.js */ 230);\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/stream-browserify/index.js\n// module id = 208\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/stream-browserify/index.js?");
1933
1934/***/ },
1935/* 209 */
1936/*!****************************!*\
1937 !*** ./~/events/events.js ***!
1938 \****************************/
1939/***/ function(module, exports) {
1940
1941 eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/events/events.js\n// module id = 209\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/events/events.js?");
1942
1943/***/ },
1944/* 210 */
1945/*!****************************************!*\
1946 !*** ./~/inherits/inherits_browser.js ***!
1947 \****************************************/
1948/***/ function(module, exports) {
1949
1950 eval("if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/inherits/inherits_browser.js\n// module id = 210\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/inherits/inherits_browser.js?");
1951
1952/***/ },
1953/* 211 */
1954/*!***********************************************!*\
1955 !*** ./~/readable-stream/readable-browser.js ***!
1956 \***********************************************/
1957/***/ function(module, exports, __webpack_require__) {
1958
1959 eval("exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ 212);\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ 221);\nexports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ 220);\nexports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ 225);\nexports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ 226);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/readable-browser.js\n// module id = 211\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/readable-browser.js?");
1960
1961/***/ },
1962/* 212 */
1963/*!***************************************************!*\
1964 !*** ./~/readable-stream/lib/_stream_readable.js ***!
1965 \***************************************************/
1966/***/ function(module, exports, __webpack_require__) {
1967
1968 eval("/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = __webpack_require__(/*! process-nextick-args */ 213);\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = __webpack_require__(/*! isarray */ 32);\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = __webpack_require__(/*! events */ 209).EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ 214);\n/*</replacement>*/\n\n/*<replacement>*/\nvar Buffer = __webpack_require__(/*! safe-buffer */ 215).Buffer;\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]' || Buffer.isBuffer(obj);\n}\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = __webpack_require__(/*! core-util-is */ 216);\nutil.inherits = __webpack_require__(/*! inherits */ 210);\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = __webpack_require__(/*! util */ 217);\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = __webpack_require__(/*! ./internal/streams/BufferList */ 218);\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ 219);\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') {\n return emitter.prependListener(event, fn);\n } else {\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n }\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ 220);\n\n options = options || {};\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ 223).StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ 220);\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && Object.getPrototypeOf(chunk) !== Buffer.prototype && !state.objectMode) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = __webpack_require__(/*! string_decoder/ */ 223).StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n processNextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n processNextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n processNextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n processNextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_readable.js\n// module id = 212\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/lib/_stream_readable.js?");
1969
1970/***/ },
1971/* 213 */
1972/*!*****************************************!*\
1973 !*** ./~/process-nextick-args/index.js ***!
1974 \*****************************************/
1975/***/ function(module, exports, __webpack_require__) {
1976
1977 eval("/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\nif (!process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = nextTick;\n} else {\n module.exports = process.nextTick;\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process-nextick-args/index.js\n// module id = 213\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/process-nextick-args/index.js?");
1978
1979/***/ },
1980/* 214 */
1981/*!******************************************************************!*\
1982 !*** ./~/readable-stream/lib/internal/streams/stream-browser.js ***!
1983 \******************************************************************/
1984/***/ function(module, exports, __webpack_require__) {
1985
1986 eval("module.exports = __webpack_require__(/*! events */ 209).EventEmitter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/internal/streams/stream-browser.js\n// module id = 214\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/lib/internal/streams/stream-browser.js?");
1987
1988/***/ },
1989/* 215 */
1990/*!**************************************************!*\
1991 !*** ./~/readable-stream/~/safe-buffer/index.js ***!
1992 \**************************************************/
1993/***/ function(module, exports, __webpack_require__) {
1994
1995 eval("/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(/*! buffer */ 29)\nvar Buffer = buffer.Buffer\n\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n Object.keys(buffer).forEach(function (prop) {\n exports[prop] = buffer[prop]\n })\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\nObject.keys(Buffer).forEach(function (prop) {\n SafeBuffer[prop] = Buffer[prop]\n})\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/~/safe-buffer/index.js\n// module id = 215\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/~/safe-buffer/index.js?");
1996
1997/***/ },
1998/* 216 */
1999/*!************************************!*\
2000 !*** ./~/core-util-is/lib/util.js ***!
2001 \************************************/
2002/***/ function(module, exports, __webpack_require__) {
2003
2004 eval("/* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../buffer/index.js */ 29).Buffer))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-util-is/lib/util.js\n// module id = 216\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/core-util-is/lib/util.js?");
2005
2006/***/ },
2007/* 217 */
2008/*!**********************!*\
2009 !*** util (ignored) ***!
2010 \**********************/
2011/***/ function(module, exports) {
2012
2013 eval("/* (ignored) */\n\n//////////////////\n// WEBPACK FOOTER\n// util (ignored)\n// module id = 217\n// module chunks = 0 1\n//# sourceURL=webpack:///util_(ignored)?");
2014
2015/***/ },
2016/* 218 */
2017/*!**************************************************************!*\
2018 !*** ./~/readable-stream/lib/internal/streams/BufferList.js ***!
2019 \**************************************************************/
2020/***/ function(module, exports, __webpack_require__) {
2021
2022 eval("'use strict';\n\n/*<replacement>*/\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ 215).Buffer;\n/*</replacement>*/\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: 'push',\n value: function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: 'unshift',\n value: function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: 'shift',\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: 'join',\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n }\n }, {\n key: 'concat',\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n }]);\n\n return BufferList;\n}();\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/internal/streams/BufferList.js\n// module id = 218\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/lib/internal/streams/BufferList.js?");
2023
2024/***/ },
2025/* 219 */
2026/*!***********************************************************!*\
2027 !*** ./~/readable-stream/lib/internal/streams/destroy.js ***!
2028 \***********************************************************/
2029/***/ function(module, exports, __webpack_require__) {
2030
2031 eval("'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = __webpack_require__(/*! process-nextick-args */ 213);\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n processNextTick(emitErrorNT, this, err);\n }\n return;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n processNextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/internal/streams/destroy.js\n// module id = 219\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/lib/internal/streams/destroy.js?");
2032
2033/***/ },
2034/* 220 */
2035/*!*************************************************!*\
2036 !*** ./~/readable-stream/lib/_stream_duplex.js ***!
2037 \*************************************************/
2038/***/ function(module, exports, __webpack_require__) {
2039
2040 eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = __webpack_require__(/*! process-nextick-args */ 213);\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = __webpack_require__(/*! core-util-is */ 216);\nutil.inherits = __webpack_require__(/*! inherits */ 210);\n/*</replacement>*/\n\nvar Readable = __webpack_require__(/*! ./_stream_readable */ 212);\nvar Writable = __webpack_require__(/*! ./_stream_writable */ 221);\n\nutil.inherits(Duplex, Readable);\n\nvar keys = objectKeys(Writable.prototype);\nfor (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n processNextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n processNextTick(cb, err);\n};\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_duplex.js\n// module id = 220\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/lib/_stream_duplex.js?");
2041
2042/***/ },
2043/* 221 */
2044/*!***************************************************!*\
2045 !*** ./~/readable-stream/lib/_stream_writable.js ***!
2046 \***************************************************/
2047/***/ function(module, exports, __webpack_require__) {
2048
2049 eval("/* WEBPACK VAR INJECTION */(function(process, setImmediate) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = __webpack_require__(/*! process-nextick-args */ 213);\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n this.next = null;\n this.entry = null;\n this.finish = onCorkedFinish.bind(undefined, this, state);\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = __webpack_require__(/*! core-util-is */ 216);\nutil.inherits = __webpack_require__(/*! inherits */ 210);\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: __webpack_require__(/*! util-deprecate */ 222)\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ 214);\n/*</replacement>*/\n\n/*<replacement>*/\nvar Buffer = __webpack_require__(/*! safe-buffer */ 215).Buffer;\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]' || Buffer.isBuffer(obj);\n}\n/*</replacement>*/\n\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ 219);\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ 220);\n\n options = options || {};\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ 220);\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n processNextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n processNextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = _isUint8Array(chunk) && !state.objectMode;\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) processNextTick(afterError, stream, state, cb, er);else afterError(stream, state, cb, er);\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n}\n\nfunction afterError(stream, state, cb, err) {\n cb(err);\n finishMaybe(stream, state);\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequestCount = 0;\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n processNextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) processNextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 49), __webpack_require__(/*! ./../../timers-browserify/main.js */ 54).setImmediate))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_writable.js\n// module id = 221\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/lib/_stream_writable.js?");
2050
2051/***/ },
2052/* 222 */
2053/*!*************************************!*\
2054 !*** ./~/util-deprecate/browser.js ***!
2055 \*************************************/
2056/***/ function(module, exports) {
2057
2058 eval("/* WEBPACK VAR INJECTION */(function(global) {\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/util-deprecate/browser.js\n// module id = 222\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/util-deprecate/browser.js?");
2059
2060/***/ },
2061/* 223 */
2062/*!************************************************!*\
2063 !*** ./~/string_decoder/lib/string_decoder.js ***!
2064 \************************************************/
2065/***/ function(module, exports, __webpack_require__) {
2066
2067 eval("'use strict';\n\nvar Buffer = __webpack_require__(/*! safe-buffer */ 224).Buffer;\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return -1;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// UTF-8 replacement characters ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd'.repeat(p);\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd'.repeat(p + 1);\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd'.repeat(p + 2);\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character for each buffered byte of a (partial)\n// character needs to be added to the output.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd'.repeat(this.lastTotal - this.lastNeed);\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/string_decoder/lib/string_decoder.js\n// module id = 223\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/string_decoder/lib/string_decoder.js?");
2068
2069/***/ },
2070/* 224 */
2071/*!**********************************!*\
2072 !*** ./~/safe-buffer/browser.js ***!
2073 \**********************************/
2074/***/ function(module, exports, __webpack_require__) {
2075
2076 eval("module.exports = __webpack_require__(/*! buffer */ 29)\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/safe-buffer/browser.js\n// module id = 224\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/safe-buffer/browser.js?");
2077
2078/***/ },
2079/* 225 */
2080/*!****************************************************!*\
2081 !*** ./~/readable-stream/lib/_stream_transform.js ***!
2082 \****************************************************/
2083/***/ function(module, exports, __webpack_require__) {
2084
2085 eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = __webpack_require__(/*! ./_stream_duplex */ 220);\n\n/*<replacement>*/\nvar util = __webpack_require__(/*! core-util-is */ 216);\nutil.inherits = __webpack_require__(/*! inherits */ 210);\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction TransformState(stream) {\n this.afterTransform = function (er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n this.writeencoding = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return stream.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined) stream.push(data);\n\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = new TransformState(this);\n\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.once('prefinish', function () {\n if (typeof this._flush === 'function') this._flush(function (er, data) {\n done(stream, er, data);\n });else done(stream);\n });\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data !== null && data !== undefined) stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var ts = stream._transformState;\n\n if (ws.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (ts.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_transform.js\n// module id = 225\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/lib/_stream_transform.js?");
2086
2087/***/ },
2088/* 226 */
2089/*!******************************************************!*\
2090 !*** ./~/readable-stream/lib/_stream_passthrough.js ***!
2091 \******************************************************/
2092/***/ function(module, exports, __webpack_require__) {
2093
2094 eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = __webpack_require__(/*! ./_stream_transform */ 225);\n\n/*<replacement>*/\nvar util = __webpack_require__(/*! core-util-is */ 216);\nutil.inherits = __webpack_require__(/*! inherits */ 210);\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_passthrough.js\n// module id = 226\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/lib/_stream_passthrough.js?");
2095
2096/***/ },
2097/* 227 */
2098/*!***********************************************!*\
2099 !*** ./~/readable-stream/writable-browser.js ***!
2100 \***********************************************/
2101/***/ function(module, exports, __webpack_require__) {
2102
2103 eval("module.exports = __webpack_require__(/*! ./lib/_stream_writable.js */ 221);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/writable-browser.js\n// module id = 227\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/writable-browser.js?");
2104
2105/***/ },
2106/* 228 */
2107/*!*********************************************!*\
2108 !*** ./~/readable-stream/duplex-browser.js ***!
2109 \*********************************************/
2110/***/ function(module, exports, __webpack_require__) {
2111
2112 eval("module.exports = __webpack_require__(/*! ./lib/_stream_duplex.js */ 220);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/duplex-browser.js\n// module id = 228\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/duplex-browser.js?");
2113
2114/***/ },
2115/* 229 */
2116/*!****************************************!*\
2117 !*** ./~/readable-stream/transform.js ***!
2118 \****************************************/
2119/***/ function(module, exports, __webpack_require__) {
2120
2121 eval("module.exports = __webpack_require__(/*! ./readable */ 211).Transform\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/transform.js\n// module id = 229\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/transform.js?");
2122
2123/***/ },
2124/* 230 */
2125/*!******************************************!*\
2126 !*** ./~/readable-stream/passthrough.js ***!
2127 \******************************************/
2128/***/ function(module, exports, __webpack_require__) {
2129
2130 eval("module.exports = __webpack_require__(/*! ./readable */ 211).PassThrough\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/passthrough.js\n// module id = 230\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/readable-stream/passthrough.js?");
2131
2132/***/ },
2133/* 231 */
2134/*!************************!*\
2135 !*** ./~/util/util.js ***!
2136 \************************/
2137/***/ function(module, exports, __webpack_require__) {
2138
2139 eval("/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = __webpack_require__(/*! ./support/isBuffer */ 232);\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = __webpack_require__(/*! inherits */ 233);\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(/*! ./../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/util/util.js\n// module id = 231\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/util/util.js?");
2140
2141/***/ },
2142/* 232 */
2143/*!*******************************************!*\
2144 !*** ./~/util/support/isBufferBrowser.js ***!
2145 \*******************************************/
2146/***/ function(module, exports) {
2147
2148 eval("module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/util/support/isBufferBrowser.js\n// module id = 232\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/util/support/isBufferBrowser.js?");
2149
2150/***/ },
2151/* 233 */
2152/*!***********************************************!*\
2153 !*** ./~/util/~/inherits/inherits_browser.js ***!
2154 \***********************************************/
2155/***/ function(module, exports) {
2156
2157 eval("if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/util/~/inherits/inherits_browser.js\n// module id = 233\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/util/~/inherits/inherits_browser.js?");
2158
2159/***/ },
2160/* 234 */
2161/*!*****************************!*\
2162 !*** ./~/cbor/lib/utils.js ***!
2163 \*****************************/
2164/***/ function(module, exports, __webpack_require__) {
2165
2166 eval("/* WEBPACK VAR INJECTION */(function(Buffer, process) {'use strict'\n\nconst fs = __webpack_require__(/*! fs */ 235)\nconst stream = __webpack_require__(/*! stream */ 208)\nconst bignumber = __webpack_require__(/*! bignumber.js */ 236)\n\nconst constants = __webpack_require__(/*! ./constants */ 237)\nconst NUMBYTES = constants.NUMBYTES, SHIFT32 = constants.SHIFT32\nconst MAX_SAFE_HIGH = 0x1fffff\n\nexports.parseCBORint = function (ai, buf) {\n var f, g\n switch (ai) {\n case NUMBYTES.ONE:\n return buf.readUInt8(0, true)\n case NUMBYTES.TWO:\n return buf.readUInt16BE(0, true)\n case NUMBYTES.FOUR:\n return buf.readUInt32BE(0, true)\n case NUMBYTES.EIGHT:\n f = buf.readUInt32BE(0)\n g = buf.readUInt32BE(4)\n if (f > MAX_SAFE_HIGH) {\n return new bignumber(f).times(SHIFT32).plus(g)\n } else {\n return (f * SHIFT32) + g\n }\n default:\n throw new Error('Invalid additional info for int: ' + ai)\n }\n}\n\nexports.writeHalf = function writeHalf (buf, half) {\n // assume 0, -0, NaN, Infinity, and -Infinity have already been caught\n\n // HACK: everyone settle in. This isn't going to be pretty.\n // Translate cn-cbor's C code (from Carsten Borman):\n\n // uint32_t be32;\n // uint16_t be16, u16;\n // union {\n // float f;\n // uint32_t u;\n // } u32;\n // u32.f = float_val;\n\n const u32 = new Buffer(4)\n u32.writeFloatBE(half)\n const u = u32.readUInt32BE()\n\n // if ((u32.u & 0x1FFF) == 0) { /* worth trying half */\n\n // hildjj: If the lower 13 bits are 0, we won't lose anything in the conversion\n if ((u & 0x1FFF) !== 0) {\n return false\n }\n\n // int s16 = (u32.u >> 16) & 0x8000;\n // int exp = (u32.u >> 23) & 0xff;\n // int mant = u32.u & 0x7fffff;\n\n let s16 = (u >> 16) & 0x8000 // top bit is sign\n const exp = (u >> 23) & 0xff // then 5 bits of exponent\n const mant = u & 0x7fffff\n\n // if (exp == 0 && mant == 0)\n // ; /* 0.0, -0.0 */\n\n // hildjj: zeros already handled. Assert if you don't believe me.\n\n // else if (exp >= 113 && exp <= 142) /* normalized */\n // s16 += ((exp - 112) << 10) + (mant >> 13);\n\n if ((exp >= 113) && (exp <= 142)) {\n s16 += ((exp - 112) << 10) + (mant >> 13)\n }\n\n // else if (exp >= 103 && exp < 113) { /* denorm, exp16 = 0 */\n // if (mant & ((1 << (126 - exp)) - 1))\n // goto float32; /* loss of precision */\n // s16 += ((mant + 0x800000) >> (126 - exp));\n\n else if ((exp >= 103) && (exp < 113)) {\n if (mant & ((1 << (126 - exp)) - 1)) {\n return false\n }\n s16 += ((mant + 0x800000) >> (126 - exp))\n }\n\n // } else if (exp == 255 && mant == 0) { /* Inf */\n // s16 += 0x7c00;\n\n // hildjj: Infinity already handled\n\n // } else\n // goto float32; /* loss of range */\n\n else {\n return false\n }\n\n // ensure_writable(3);\n // u16 = s16;\n // be16 = hton16p((const uint8_t*)&u16);\n buf.writeUInt16BE(s16)\n return true\n}\n\nexports.parseHalf = function parseHalf (buf) {\n var exp, mant, sign\n sign = buf[0] & 0x80 ? -1 : 1\n exp = (buf[0] & 0x7C) >> 2\n mant = ((buf[0] & 0x03) << 8) | buf[1]\n if (!exp) {\n return sign * 5.9604644775390625e-8 * mant\n } else if (exp === 0x1f) {\n return sign * (mant ? 0 / 0 : 2e308)\n } else {\n return sign * Math.pow(2, exp - 25) * (1024 + mant)\n }\n}\n\nexports.parseCBORfloat = function (buf) {\n switch (buf.length) {\n case 2:\n return exports.parseHalf(buf)\n case 4:\n return buf.readFloatBE(0, true)\n case 8:\n return buf.readDoubleBE(0, true)\n default:\n throw new Error('Invalid float size: ' + buf.length)\n }\n}\n\nexports.hex = function (s) {\n return new Buffer(s.replace(/^0x/, ''), 'hex')\n}\n\nexports.bin = function (s) {\n var chunks, end, start\n s = s.replace(/\\s/g, '')\n start = 0\n end = (s.length % 8) || 8\n chunks = []\n while (end <= s.length) {\n chunks.push(parseInt(s.slice(start, end), 2))\n start = end\n end += 8\n }\n return new Buffer(chunks)\n}\n\nexports.extend = function () {\n var a, adds, j, k, len, old, v\n old = arguments[0], adds = 2 <= arguments.length ? Array.prototype.slice.call(arguments, 1) : []\n if (old == null) {\n old = {}\n }\n for (j = 0, len = adds.length; j < len; j++) {\n a = adds[j]\n for (k in a) {\n v = a[k]\n old[k] = v\n }\n }\n return old\n}\n\nexports.arrayEqual = function (a, b) {\n if ((a == null) && (b == null)) {\n return true\n }\n if ((a == null) || (b == null)) {\n return false\n }\n return (a.length === b.length) && a.every(function (elem, i) {\n return elem === b[i]\n })\n}\n\nexports.bufferEqual = function (a, b) {\n var byte, i, j, len, ret\n if ((a == null) && (b == null)) {\n return true\n }\n if ((a == null) || (b == null)) {\n return false\n }\n if (!(Buffer.isBuffer(a) && Buffer.isBuffer(b) && (a.length === b.length))) {\n return false\n }\n ret = true\n for (i = j = 0, len = a.length; j < len; i = ++j) {\n byte = a[i]\n ret &= b[i] === byte\n }\n return !!ret\n}\n\nexports.bufferToBignumber = function (buf) {\n return new bignumber(buf.toString('hex'), 16)\n}\n\nexports.DeHexStream = class DeHexStream extends stream.Readable {\n constructor (hex) {\n super()\n hex = hex.replace(/^0x/, '')\n if (hex) {\n this.push(new Buffer(hex, 'hex'))\n }\n this.push(null)\n }\n}\n\nexports.HexStream = class HexStream extends stream.Transform {\n constructor (options) {\n super(options)\n }\n\n _transform (fresh, encoding, cb) {\n this.push(fresh.toString('hex'))\n return cb()\n }\n}\n\nfunction printError (er) {\n if (er != null) {\n return console.log(er)\n }\n}\n\nexports.streamFiles = function (files, streamFunc, cb) {\n if (cb == null) {\n cb = printError\n }\n const f = files.shift()\n if (!f) {\n return cb()\n }\n const sf = streamFunc()\n sf.on('end', function () {\n return exports.streamFiles(files, streamFunc, cb)\n })\n sf.on('error', cb)\n const s = (f === '-') ? process.stdin : (f instanceof stream.Stream) ? f : fs.createReadStream(f)\n s.on('error', cb)\n return s.pipe(sf)\n}\n\nexports.guessEncoding = function (input) {\n switch (false) {\n case typeof input !== 'string':\n return 'hex'\n case !Buffer.isBuffer(input):\n return undefined\n default:\n throw new Error('Unknown input type')\n }\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../buffer/index.js */ 29).Buffer, __webpack_require__(/*! ./../../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cbor/lib/utils.js\n// module id = 234\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/cbor/lib/utils.js?");
2167
2168/***/ },
2169/* 235 */
2170/*!********************!*\
2171 !*** fs (ignored) ***!
2172 \********************/
2173/***/ function(module, exports) {
2174
2175 eval("/* (ignored) */\n\n//////////////////\n// WEBPACK FOOTER\n// fs (ignored)\n// module id = 235\n// module chunks = 0 1\n//# sourceURL=webpack:///fs_(ignored)?");
2176
2177/***/ },
2178/* 236 */
2179/*!*************************************!*\
2180 !*** ./~/bignumber.js/bignumber.js ***!
2181 \*************************************/
2182/***/ function(module, exports, __webpack_require__) {
2183
2184 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/*! bignumber.js v3.0.1 https://github.com/MikeMcl/bignumber.js/LICENCE */\r\n\r\n;(function (globalObj) {\r\n 'use strict';\r\n\r\n /*\r\n bignumber.js v3.0.1\r\n A JavaScript library for arbitrary-precision arithmetic.\r\n https://github.com/MikeMcl/bignumber.js\r\n Copyright (c) 2016 Michael Mclaughlin <M8ch88l@gmail.com>\r\n MIT Expat Licence\r\n */\r\n\r\n\r\n var BigNumber, parseNumeric,\r\n isNumeric = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n notBool = ' not a boolean or binary digit',\r\n roundingMode = 'rounding mode',\r\n tooManyDigits = 'number type has more than 15 significant digits',\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_',\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n /*\r\n * The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n * the arguments to toExponential, toFixed, toFormat, and toPrecision, beyond which an\r\n * exception is thrown (if ERRORS is true).\r\n */\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function constructorFactory(configObj) {\r\n var div,\r\n\r\n // id tracks the caller function, so its name can be included in error messages.\r\n id = 0,\r\n P = BigNumber.prototype,\r\n ONE = new BigNumber(1),\r\n\r\n\r\n /********************************* EDITABLE DEFAULTS **********************************/\r\n\r\n\r\n /*\r\n * The default values below must be integers within the inclusive ranges stated.\r\n * The values can also be changed at run-time using BigNumber.config.\r\n */\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n /*\r\n * The rounding mode used when rounding to the above decimal places, and when using\r\n * toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n * UP 0 Away from zero.\r\n * DOWN 1 Towards zero.\r\n * CEIL 2 Towards +Infinity.\r\n * FLOOR 3 Towards -Infinity.\r\n * HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n * HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n * HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n * HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n * HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n */\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether BigNumber Errors are ever thrown.\r\n ERRORS = true, // true or false\r\n\r\n // Change to intValidatorNoErrors if ERRORS is false.\r\n isValidInt = intValidatorWithErrors, // intValidatorWithErrors/intValidatorNoErrors\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n /*\r\n * The modulo mode used when calculating the modulus: a mod n.\r\n * The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n * The remainder (r) is calculated as: r = a - n * q.\r\n *\r\n * UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n * DOWN 1 The remainder has the same sign as the dividend.\r\n * This modulo mode is commonly known as 'truncated division' and is\r\n * equivalent to (a % n) in JavaScript.\r\n * FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n * HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n * EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n * The remainder is always positive.\r\n *\r\n * The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n * modes are commonly used for the modulus operation.\r\n * Although the other rounding modes can also be used, they may not give useful results.\r\n */\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the toPower operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n decimalSeparator: '.',\r\n groupSeparator: ',',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n fractionGroupSize: 0\r\n };\r\n\r\n\r\n /******************************************************************************************/\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * n {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of n. Integer, 2 to 64 inclusive.\r\n */\r\n function BigNumber( n, b ) {\r\n var c, e, i, num, len, str,\r\n x = this;\r\n\r\n // Enable constructor usage without new.\r\n if ( !( x instanceof BigNumber ) ) {\r\n\r\n // 'BigNumber() constructor call without new: {n}'\r\n if (ERRORS) raise( 26, 'constructor call without new', n );\r\n return new BigNumber( n, b );\r\n }\r\n\r\n // 'new BigNumber() base not an integer: {b}'\r\n // 'new BigNumber() base out of range: {b}'\r\n if ( b == null || !isValidInt( b, 2, 64, id, 'base' ) ) {\r\n\r\n // Duplicate.\r\n if ( n instanceof BigNumber ) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = ( n = n.c ) ? n.slice() : n;\r\n id = 0;\r\n return;\r\n }\r\n\r\n if ( ( num = typeof n == 'number' ) && n * 0 == 0 ) {\r\n x.s = 1 / n < 0 ? ( n = -n, -1 ) : 1;\r\n\r\n // Fast path for integers.\r\n if ( n === ~~n ) {\r\n for ( e = 0, i = n; i >= 10; i /= 10, e++ );\r\n x.e = e;\r\n x.c = [n];\r\n id = 0;\r\n return;\r\n }\r\n\r\n str = n + '';\r\n } else {\r\n if ( !isNumeric.test( str = n + '' ) ) return parseNumeric( x, str, num );\r\n x.s = str.charCodeAt(0) === 45 ? ( str = str.slice(1), -1 ) : 1;\r\n }\r\n } else {\r\n b = b | 0;\r\n str = n + '';\r\n\r\n // Ensure return value is rounded to DECIMAL_PLACES as with other bases.\r\n // Allow exponential notation to be used with base 10 argument.\r\n if ( b == 10 ) {\r\n x = new BigNumber( n instanceof BigNumber ? n : str );\r\n return round( x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE );\r\n }\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n // Any number in exponential form will fail due to the [Ee][+-].\r\n if ( ( num = typeof n == 'number' ) && n * 0 != 0 ||\r\n !( new RegExp( '^-?' + ( c = '[' + ALPHABET.slice( 0, b ) + ']+' ) +\r\n '(?:\\\\.' + c + ')?$',b < 37 ? 'i' : '' ) ).test(str) ) {\r\n return parseNumeric( x, str, num, b );\r\n }\r\n\r\n if (num) {\r\n x.s = 1 / n < 0 ? ( str = str.slice(1), -1 ) : 1;\r\n\r\n if ( ERRORS && str.replace( /^0\\.0*|\\./, '' ).length > 15 ) {\r\n\r\n // 'new BigNumber() number type has more than 15 significant digits: {n}'\r\n raise( id, tooManyDigits, n );\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n num = false;\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? ( str = str.slice(1), -1 ) : 1;\r\n }\r\n\r\n str = convertBase( str, 10, b, x.s );\r\n }\r\n\r\n // Decimal point?\r\n if ( ( e = str.indexOf('.') ) > -1 ) str = str.replace( '.', '' );\r\n\r\n // Exponential form?\r\n if ( ( i = str.search( /e/i ) ) > 0 ) {\r\n\r\n // Determine exponent.\r\n if ( e < 0 ) e = i;\r\n e += +str.slice( i + 1 );\r\n str = str.substring( 0, i );\r\n } else if ( e < 0 ) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for ( i = 0; str.charCodeAt(i) === 48; i++ );\r\n\r\n // Determine trailing zeros.\r\n for ( len = str.length; str.charCodeAt(--len) === 48; );\r\n str = str.slice( i, len + 1 );\r\n\r\n if (str) {\r\n len = str.length;\r\n\r\n // Disallow numbers with over 15 significant digits if number type.\r\n // 'new BigNumber() number type has more than 15 significant digits: {n}'\r\n if ( num && ERRORS && len > 15 && ( n > MAX_SAFE_INTEGER || n !== mathfloor(n) ) ) {\r\n raise( id, tooManyDigits, x.s * n );\r\n }\r\n\r\n e = e - i - 1;\r\n\r\n // Overflow?\r\n if ( e > MAX_EXP ) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if ( e < MIN_EXP ) {\r\n\r\n // Zero.\r\n x.c = [ x.e = 0 ];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = ( e + 1 ) % LOG_BASE;\r\n if ( e < 0 ) i += LOG_BASE;\r\n\r\n if ( i < len ) {\r\n if (i) x.c.push( +str.slice( 0, i ) );\r\n\r\n for ( len -= LOG_BASE; i < len; ) {\r\n x.c.push( +str.slice( i, i += LOG_BASE ) );\r\n }\r\n\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for ( ; i--; str += '0' );\r\n x.c.push( +str );\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [ x.e = 0 ];\r\n }\r\n\r\n id = 0;\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.another = constructorFactory;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object or an argument list, with one or many of the following properties or\r\n * parameters respectively:\r\n *\r\n * DECIMAL_PLACES {number} Integer, 0 to MAX inclusive\r\n * ROUNDING_MODE {number} Integer, 0 to 8 inclusive\r\n * EXPONENTIAL_AT {number|number[]} Integer, -MAX to MAX inclusive or\r\n * [integer -MAX to 0 incl., 0 to MAX incl.]\r\n * RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n * [integer -MAX to -1 incl., integer 1 to MAX incl.]\r\n * ERRORS {boolean|number} true, false, 1 or 0\r\n * CRYPTO {boolean|number} true, false, 1 or 0\r\n * MODULO_MODE {number} 0 to 9 inclusive\r\n * POW_PRECISION {number} 0 to MAX inclusive\r\n * FORMAT {object} See BigNumber.prototype.toFormat\r\n * decimalSeparator {string}\r\n * groupSeparator {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * fractionGroupSize {number}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config(20, 4) is equivalent to\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined.\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function () {\r\n var v, p,\r\n i = 0,\r\n r = {},\r\n a = arguments,\r\n o = a[0],\r\n has = o && typeof o == 'object'\r\n ? function () { if ( o.hasOwnProperty(p) ) return ( v = o[p] ) != null; }\r\n : function () { if ( a.length > i ) return ( v = a[i++] ) != null; };\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // 'config() DECIMAL_PLACES not an integer: {v}'\r\n // 'config() DECIMAL_PLACES out of range: {v}'\r\n if ( has( p = 'DECIMAL_PLACES' ) && isValidInt( v, 0, MAX, 2, p ) ) {\r\n DECIMAL_PLACES = v | 0;\r\n }\r\n r[p] = DECIMAL_PLACES;\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // 'config() ROUNDING_MODE not an integer: {v}'\r\n // 'config() ROUNDING_MODE out of range: {v}'\r\n if ( has( p = 'ROUNDING_MODE' ) && isValidInt( v, 0, 8, 2, p ) ) {\r\n ROUNDING_MODE = v | 0;\r\n }\r\n r[p] = ROUNDING_MODE;\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // 'config() EXPONENTIAL_AT not an integer: {v}'\r\n // 'config() EXPONENTIAL_AT out of range: {v}'\r\n if ( has( p = 'EXPONENTIAL_AT' ) ) {\r\n\r\n if ( isArray(v) ) {\r\n if ( isValidInt( v[0], -MAX, 0, 2, p ) && isValidInt( v[1], 0, MAX, 2, p ) ) {\r\n TO_EXP_NEG = v[0] | 0;\r\n TO_EXP_POS = v[1] | 0;\r\n }\r\n } else if ( isValidInt( v, -MAX, MAX, 2, p ) ) {\r\n TO_EXP_NEG = -( TO_EXP_POS = ( v < 0 ? -v : v ) | 0 );\r\n }\r\n }\r\n r[p] = [ TO_EXP_NEG, TO_EXP_POS ];\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // 'config() RANGE not an integer: {v}'\r\n // 'config() RANGE cannot be zero: {v}'\r\n // 'config() RANGE out of range: {v}'\r\n if ( has( p = 'RANGE' ) ) {\r\n\r\n if ( isArray(v) ) {\r\n if ( isValidInt( v[0], -MAX, -1, 2, p ) && isValidInt( v[1], 1, MAX, 2, p ) ) {\r\n MIN_EXP = v[0] | 0;\r\n MAX_EXP = v[1] | 0;\r\n }\r\n } else if ( isValidInt( v, -MAX, MAX, 2, p ) ) {\r\n if ( v | 0 ) MIN_EXP = -( MAX_EXP = ( v < 0 ? -v : v ) | 0 );\r\n else if (ERRORS) raise( 2, p + ' cannot be zero', v );\r\n }\r\n }\r\n r[p] = [ MIN_EXP, MAX_EXP ];\r\n\r\n // ERRORS {boolean|number} true, false, 1 or 0.\r\n // 'config() ERRORS not a boolean or binary digit: {v}'\r\n if ( has( p = 'ERRORS' ) ) {\r\n\r\n if ( v === !!v || v === 1 || v === 0 ) {\r\n id = 0;\r\n isValidInt = ( ERRORS = !!v ) ? intValidatorWithErrors : intValidatorNoErrors;\r\n } else if (ERRORS) {\r\n raise( 2, p + notBool, v );\r\n }\r\n }\r\n r[p] = ERRORS;\r\n\r\n // CRYPTO {boolean|number} true, false, 1 or 0.\r\n // 'config() CRYPTO not a boolean or binary digit: {v}'\r\n // 'config() crypto unavailable: {crypto}'\r\n if ( has( p = 'CRYPTO' ) ) {\r\n\r\n if ( v === true || v === false || v === 1 || v === 0 ) {\r\n if (v) {\r\n v = typeof crypto == 'undefined';\r\n if ( !v && crypto && (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = true;\r\n } else if (ERRORS) {\r\n raise( 2, 'crypto unavailable', v ? void 0 : crypto );\r\n } else {\r\n CRYPTO = false;\r\n }\r\n } else {\r\n CRYPTO = false;\r\n }\r\n } else if (ERRORS) {\r\n raise( 2, p + notBool, v );\r\n }\r\n }\r\n r[p] = CRYPTO;\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // 'config() MODULO_MODE not an integer: {v}'\r\n // 'config() MODULO_MODE out of range: {v}'\r\n if ( has( p = 'MODULO_MODE' ) && isValidInt( v, 0, 9, 2, p ) ) {\r\n MODULO_MODE = v | 0;\r\n }\r\n r[p] = MODULO_MODE;\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // 'config() POW_PRECISION not an integer: {v}'\r\n // 'config() POW_PRECISION out of range: {v}'\r\n if ( has( p = 'POW_PRECISION' ) && isValidInt( v, 0, MAX, 2, p ) ) {\r\n POW_PRECISION = v | 0;\r\n }\r\n r[p] = POW_PRECISION;\r\n\r\n // FORMAT {object}\r\n // 'config() FORMAT not an object: {v}'\r\n if ( has( p = 'FORMAT' ) ) {\r\n\r\n if ( typeof v == 'object' ) {\r\n FORMAT = v;\r\n } else if (ERRORS) {\r\n raise( 2, p + ' not an object', v );\r\n }\r\n }\r\n r[p] = FORMAT;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.max = function () { return maxOrMin( arguments, P.lt ); };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.min = function () { return maxOrMin( arguments, P.gt ); };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * 'random() decimal places not an integer: {dp}'\r\n * 'random() decimal places out of range: {dp}'\r\n * 'random() crypto unavailable: {crypto}'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor( Math.random() * pow2_53 ); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n dp = dp == null || !isValidInt( dp, 0, MAX, 14 ) ? DECIMAL_PLACES : dp | 0;\r\n k = mathceil( dp / LOG_BASE );\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues( new Uint32Array( k *= 2 ) );\r\n\r\n for ( ; i < k; ) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if ( v >= 9e15 ) {\r\n b = crypto.getRandomValues( new Uint32Array(2) );\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push( v % 1e14 );\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes( k *= 7 );\r\n\r\n for ( ; i < k; ) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ( ( a[i] & 31 ) * 0x1000000000000 ) + ( a[i + 1] * 0x10000000000 ) +\r\n ( a[i + 2] * 0x100000000 ) + ( a[i + 3] * 0x1000000 ) +\r\n ( a[i + 4] << 16 ) + ( a[i + 5] << 8 ) + a[i + 6];\r\n\r\n if ( v >= 9e15 ) {\r\n crypto.randomBytes(7).copy( a, i );\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push( v % 1e14 );\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n if (ERRORS) raise( 14, 'crypto unavailable', crypto );\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for ( ; i < k; ) {\r\n v = random53bitInt();\r\n if ( v < 9e15 ) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if ( k && dp ) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor( k / v ) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for ( ; c[i] === 0; c.pop(), i-- );\r\n\r\n // Zero?\r\n if ( i < 0 ) {\r\n c = [ e = 0 ];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for ( e = -1 ; c[0] === 0; c.shift(), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for ( i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if ( i < LOG_BASE ) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n function convertBase( str, baseOut, baseIn, sign ) {\r\n var d, e, k, r, x, xc, y,\r\n i = str.indexOf( '.' ),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n if ( baseIn < 37 ) str = str.toLowerCase();\r\n\r\n // Non-integer.\r\n if ( i >= 0 ) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace( '.', '' );\r\n y = new BigNumber(baseIn);\r\n x = y.pow( str.length - i );\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n y.c = toBaseOut( toFixedPoint( coeffToString( x.c ), x.e ), 10, baseOut );\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n xc = toBaseOut( str, baseIn, baseOut );\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for ( ; xc[--k] == 0; xc.pop() );\r\n if ( !xc[0] ) return '0';\r\n\r\n if ( i < 0 ) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div( x, y, dp, rm, baseOut );\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n d = e + dp + 1;\r\n\r\n // The rounding digit, i.e. the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? ( i != null || r ) && ( rm == 0 || rm == ( x.s < 0 ? 3 : 2 ) )\r\n : i > k || i == k &&( rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == ( x.s < 0 ? 8 : 7 ) );\r\n\r\n if ( d < 1 || !xc[0] ) {\r\n\r\n // 1^-dp or 0.\r\n str = r ? toFixedPoint( '1', -dp ) : '0';\r\n } else {\r\n xc.length = d;\r\n\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for ( --baseOut; ++xc[--d] > baseOut; ) {\r\n xc[d] = 0;\r\n\r\n if ( !d ) {\r\n ++e;\r\n xc.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for ( k = xc.length; !xc[--k]; );\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for ( i = 0, str = ''; i <= k; str += ALPHABET.charAt( xc[i++] ) );\r\n str = toFixedPoint( str, e );\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n }\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply( x, k, base ) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for ( x = x.slice(); i--; ) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ( ( m % SQRT_BASE ) * SQRT_BASE ) + carry;\r\n carry = ( temp / base | 0 ) + ( m / SQRT_BASE | 0 ) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare( a, b, aL, bL ) {\r\n var i, cmp;\r\n\r\n if ( aL != bL ) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for ( i = cmp = 0; i < aL; i++ ) {\r\n\r\n if ( a[i] != b[i] ) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n return cmp;\r\n }\r\n\r\n function subtract( a, b, aL, base ) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for ( ; aL--; ) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for ( ; !a[0] && a.length > 1; a.shift() );\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function ( x, y, dp, rm, base ) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if ( !xc || !xc[0] || !yc || !yc[0] ) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || ( xc ? yc && xc[0] == yc[0] : !yc ) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if ( !base ) {\r\n base = BASE;\r\n e = bitFloor( x.e / LOG_BASE ) - bitFloor( y.e / LOG_BASE );\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for ( i = 0; yc[i] == ( xc[i] || 0 ); i++ );\r\n if ( yc[i] > ( xc[i] || 0 ) ) e--;\r\n\r\n if ( s < 0 ) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor( base / ( yc[0] + 1 ) );\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == ( base / 2 ) - 1.\r\n // if ( n > 1 || n++ == 1 && yc[0] < base / 2 ) {\r\n if ( n > 1 ) {\r\n yc = multiply( yc, n, base );\r\n xc = multiply( xc, n, base );\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice( 0, yL );\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for ( ; remL < yL; rem[remL++] = 0 );\r\n yz = yc.slice();\r\n yz.unshift(0);\r\n yc0 = yc[0];\r\n if ( yc[1] >= base / 2 ) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if ( base == 3 && yc0 == 1 ) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare( yc, rem, yL, remL );\r\n\r\n // If divisor < remainder.\r\n if ( cmp < 0 ) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if ( yL != remL ) rem0 = rem0 * base + ( rem[1] || 0 );\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor( rem0 / yc0 );\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (n)\r\n // 2. if product > remainder: product -= divisor, n--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, n++\r\n\r\n if ( n > 1 ) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply( yc, n, base );\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder.\r\n // Trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while ( compare( prod, rem, prodL, remL ) == 1 ) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract( prod, yL < prodL ? yz : yc, prodL, base );\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if ( n == 0 ) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if ( prodL < remL ) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract( rem, prod, remL, base );\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if ( cmp == -1 ) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while ( compare( yc, rem, yL, remL ) < 1 ) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract( rem, yL < remL ? yz : yc, remL, base );\r\n remL = rem.length;\r\n }\r\n }\r\n } else if ( cmp === 0 ) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if ( rem[0] ) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [ xc[xi] ];\r\n remL = 1;\r\n }\r\n } while ( ( xi++ < xL || rem[0] != null ) && s-- );\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if ( !qc[0] ) qc.shift();\r\n }\r\n\r\n if ( base == BASE ) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for ( i = 1, s = qc[0]; s >= 10; s /= 10, i++ );\r\n round( q, dp + ( q.e = i + e * LOG_BASE - 1 ) + 1, rm, more );\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n is a BigNumber.\r\n * i is the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm is the rounding mode.\r\n * caller is caller id: toExponential 19, toFixed 20, toFormat 21, toPrecision 24.\r\n */\r\n function format( n, i, rm, caller ) {\r\n var c0, e, ne, len, str;\r\n\r\n rm = rm != null && isValidInt( rm, 0, 8, caller, roundingMode )\r\n ? rm | 0 : ROUNDING_MODE;\r\n\r\n if ( !n.c ) return n.toString();\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if ( i == null ) {\r\n str = coeffToString( n.c );\r\n str = caller == 19 || caller == 24 && ne <= TO_EXP_NEG\r\n ? toExponential( str, ne )\r\n : toFixedPoint( str, ne );\r\n } else {\r\n n = round( new BigNumber(n), i, rm );\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString( n.c );\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if ( caller == 19 || caller == 24 && ( i <= e || e <= TO_EXP_NEG ) ) {\r\n\r\n // Append zeros?\r\n for ( ; len < i; str += '0', len++ );\r\n str = toExponential( str, e );\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint( str, e );\r\n\r\n // Append zeros?\r\n if ( e + 1 > len ) {\r\n if ( --i > 0 ) for ( str += '.'; i--; str += '0' );\r\n } else {\r\n i += e - len;\r\n if ( i > 0 ) {\r\n if ( e + 1 == len ) str += '.';\r\n for ( ; i--; str += '0' );\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin( args, method ) {\r\n var m, n,\r\n i = 0;\r\n\r\n if ( isArray( args[0] ) ) args = args[0];\r\n m = new BigNumber( args[0] );\r\n\r\n for ( ; ++i < args.length; ) {\r\n n = new BigNumber( args[i] );\r\n\r\n // If any number is NaN, return NaN.\r\n if ( !n.s ) {\r\n m = n;\r\n break;\r\n } else if ( method.call( m, n ) ) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Return true if n is an integer in range, otherwise throw.\r\n * Use for argument validation when ERRORS is true.\r\n */\r\n function intValidatorWithErrors( n, min, max, caller, name ) {\r\n if ( n < min || n > max || n != truncate(n) ) {\r\n raise( caller, ( name || 'decimal places' ) +\r\n ( n < min || n > max ? ' out of range' : ' not an integer' ), n );\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise( n, c, e ) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for ( ; !c[--j]; c.pop() );\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for ( j = c[0]; j >= 10; j /= 10, i++ );\r\n\r\n // Overflow?\r\n if ( ( e = i + e * LOG_BASE - 1 ) > MAX_EXP ) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if ( e < MIN_EXP ) {\r\n\r\n // Zero.\r\n n.c = [ n.e = 0 ];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function ( x, str, num, b ) {\r\n var base,\r\n s = num ? str : str.replace( whitespaceOrPlus, '' );\r\n\r\n // No exception on ±Infinity or NaN.\r\n if ( isInfinityOrNaN.test(s) ) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if ( !num ) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace( basePrefix, function ( m, p1, p2 ) {\r\n base = ( p2 = p2.toLowerCase() ) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace( dotAfter, '$1' ).replace( dotBefore, '0.$1' );\r\n }\r\n\r\n if ( str != s ) return new BigNumber( s, base );\r\n }\r\n\r\n // 'new BigNumber() not a number: {n}'\r\n // 'new BigNumber() not a base {b} number: {n}'\r\n if (ERRORS) raise( id, 'not a' + ( b ? ' base ' + b : '' ) + ' number', str );\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n id = 0;\r\n }\r\n })();\r\n\r\n\r\n // Throw a BigNumber Error.\r\n function raise( caller, msg, val ) {\r\n var error = new Error( [\r\n 'new BigNumber', // 0\r\n 'cmp', // 1\r\n 'config', // 2\r\n 'div', // 3\r\n 'divToInt', // 4\r\n 'eq', // 5\r\n 'gt', // 6\r\n 'gte', // 7\r\n 'lt', // 8\r\n 'lte', // 9\r\n 'minus', // 10\r\n 'mod', // 11\r\n 'plus', // 12\r\n 'precision', // 13\r\n 'random', // 14\r\n 'round', // 15\r\n 'shift', // 16\r\n 'times', // 17\r\n 'toDigits', // 18\r\n 'toExponential', // 19\r\n 'toFixed', // 20\r\n 'toFormat', // 21\r\n 'toFraction', // 22\r\n 'pow', // 23\r\n 'toPrecision', // 24\r\n 'toString', // 25\r\n 'BigNumber' // 26\r\n ][caller] + '() ' + msg + ': ' + val );\r\n\r\n error.name = 'BigNumber Error';\r\n id = 0;\r\n throw error;\r\n }\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round( x, sd, rm, r ) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for ( d = 1, k = xc[0]; k >= 10; k /= 10, d++ );\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if ( i < 0 ) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ ni = 0 ];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[ d - j - 1 ] % 10 | 0;\r\n } else {\r\n ni = mathceil( ( i + 1 ) / LOG_BASE );\r\n\r\n if ( ni >= xc.length ) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for ( ; xc.length <= ni; xc.push(0) );\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for ( d = 1; k >= 10; k /= 10, d++ );\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[ d - j - 1 ] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[ d - j - 1 ] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || ( j < 0 ? n : n % pows10[ d - j - 1 ] );\r\n\r\n r = rm < 4\r\n ? ( rd || r ) && ( rm == 0 || rm == ( x.s < 0 ? 3 : 2 ) )\r\n : rd > 5 || rd == 5 && ( rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ( ( i > 0 ? j > 0 ? n / pows10[ d - j ] : 0 : xc[ni - 1] ) % 10 ) & 1 ||\r\n rm == ( x.s < 0 ? 8 : 7 ) );\r\n\r\n if ( sd < 1 || !xc[0] ) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[ ( LOG_BASE - sd % LOG_BASE ) % LOG_BASE ];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if ( i == 0 ) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[ LOG_BASE - i ];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor( n / pows10[ d - j ] % pows10[j] ) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for ( ; ; ) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if ( ni == 0 ) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for ( i = 1, j = xc[0]; j >= 10; j /= 10, i++ );\r\n j = xc[0] += k;\r\n for ( k = 1; j >= 10; j /= 10, k++ );\r\n\r\n // if i != k the length has increased.\r\n if ( i != k ) {\r\n x.e++;\r\n if ( xc[0] == BASE ) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if ( xc[ni] != BASE ) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for ( i = xc.length; xc[--i] === 0; xc.pop() );\r\n }\r\n\r\n // Overflow? Infinity.\r\n if ( x.e > MAX_EXP ) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if ( x.e < MIN_EXP ) {\r\n x.c = [ x.e = 0 ];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if ( x.s < 0 ) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to a whole\r\n * number in the direction of Infinity.\r\n */\r\n P.ceil = function () {\r\n return round( new BigNumber(this), this.e + 1, 2 );\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = P.cmp = function ( y, b ) {\r\n id = 1;\r\n return compare( this, new BigNumber( y, b ) );\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this BigNumber, or null if the value\r\n * of this BigNumber is ±Infinity or NaN.\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var n, v,\r\n c = this.c;\r\n\r\n if ( !c ) return null;\r\n n = ( ( v = c.length - 1 ) - bitFloor( this.e / LOG_BASE ) ) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if ( v = c[v] ) for ( ; v % 10 == 0; v /= 10, n-- );\r\n if ( n < 0 ) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function ( y, b ) {\r\n id = 3;\r\n return div( this, new BigNumber( y, b ), DECIMAL_PLACES, ROUNDING_MODE );\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.divToInt = function ( y, b ) {\r\n id = 4;\r\n return div( this, new BigNumber( y, b ), 0, 1 );\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise returns false.\r\n */\r\n P.equals = P.eq = function ( y, b ) {\r\n id = 5;\r\n return compare( this, new BigNumber( y, b ) ) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to a whole\r\n * number in the direction of -Infinity.\r\n */\r\n P.floor = function () {\r\n return round( new BigNumber(this), this.e + 1, 3 );\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise returns false.\r\n */\r\n P.greaterThan = P.gt = function ( y, b ) {\r\n id = 6;\r\n return compare( this, new BigNumber( y, b ) ) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise returns false.\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function ( y, b ) {\r\n id = 7;\r\n return ( b = compare( this, new BigNumber( y, b ) ) ) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise returns false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = P.isInt = function () {\r\n return !!this.c && bitFloor( this.e / LOG_BASE ) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise returns false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise returns false.\r\n */\r\n P.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise returns false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise returns false.\r\n */\r\n P.lessThan = P.lt = function ( y, b ) {\r\n id = 8;\r\n return compare( this, new BigNumber( y, b ) ) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise returns false.\r\n */\r\n P.lessThanOrEqualTo = P.lte = function ( y, b ) {\r\n id = 9;\r\n return ( b = compare( this, new BigNumber( y, b ) ) ) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = P.sub = function ( y, b ) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n id = 10;\r\n y = new BigNumber( y, b );\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if ( !a || !b ) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if ( a != b ) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if ( !xe || !ye ) {\r\n\r\n // Either Infinity?\r\n if ( !xc || !yc ) return xc ? ( y.s = -b, y ) : new BigNumber( yc ? x : NaN );\r\n\r\n // Either zero?\r\n if ( !xc[0] || !yc[0] ) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? ( y.s = -b, y ) : new BigNumber( xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0 );\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if ( a = xe - ye ) {\r\n\r\n if ( xLTy = a < 0 ) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for ( b = a; b--; t.push(0) );\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ( xLTy = ( a = xc.length ) < ( b = yc.length ) ) ? a : b;\r\n\r\n for ( a = b = 0; b < j; b++ ) {\r\n\r\n if ( xc[b] != yc[b] ) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = ( j = yc.length ) - ( i = xc.length );\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if ( b > 0 ) for ( ; b--; xc[i++] = 0 );\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for ( ; j > a; ) {\r\n\r\n if ( xc[--j] < yc[j] ) {\r\n for ( i = j; i && !xc[--i]; xc[i] = b );\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for ( ; xc[0] == 0; xc.shift(), --ye );\r\n\r\n // Zero?\r\n if ( !xc[0] ) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [ y.e = 0 ];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise( y, xc, ye );\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function ( y, b ) {\r\n var q, s,\r\n x = this;\r\n\r\n id = 11;\r\n y = new BigNumber( y, b );\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if ( !x.c || !y.s || y.c && !y.c[0] ) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if ( !y.c || x.c && !x.c[0] ) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if ( MODULO_MODE == 9 ) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div( x, y, 0, 3 );\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div( x, y, 0, MODULO_MODE );\r\n }\r\n\r\n return x.minus( q.times(y) );\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = P.add = function ( y, b ) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n id = 12;\r\n y = new BigNumber( y, b );\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if ( !a || !b ) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if ( a != b ) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if ( !xe || !ye ) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if ( !xc || !yc ) return new BigNumber( a / 0 );\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if ( !xc[0] || !yc[0] ) return yc[0] ? y : new BigNumber( xc[0] ? x : a * 0 );\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if ( a = xe - ye ) {\r\n if ( a > 0 ) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for ( ; a--; t.push(0) );\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if ( a - b < 0 ) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for ( a = 0; b; ) {\r\n a = ( xc[--b] = xc[b] + yc[b] + a ) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc.unshift(a);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise( y, xc, ye );\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this BigNumber.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n */\r\n P.precision = P.sd = function (z) {\r\n var n, v,\r\n x = this,\r\n c = x.c;\r\n\r\n // 'precision() argument not a boolean or binary digit: {z}'\r\n if ( z != null && z !== !!z && z !== 1 && z !== 0 ) {\r\n if (ERRORS) raise( 13, 'argument' + notBool, z );\r\n if ( z != !!z ) z = null;\r\n }\r\n\r\n if ( !c ) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if ( v = c[v] ) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for ( ; v % 10 == 0; v /= 10, n-- );\r\n\r\n // Add the number of digits of the first element.\r\n for ( v = c[0]; v >= 10; v /= 10, n++ );\r\n }\r\n\r\n if ( z && x.e + 1 > n ) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to a maximum of\r\n * dp decimal places using rounding mode rm, or to 0 and ROUNDING_MODE respectively if\r\n * omitted.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'round() decimal places out of range: {dp}'\r\n * 'round() decimal places not an integer: {dp}'\r\n * 'round() rounding mode not an integer: {rm}'\r\n * 'round() rounding mode out of range: {rm}'\r\n */\r\n P.round = function ( dp, rm ) {\r\n var n = new BigNumber(this);\r\n\r\n if ( dp == null || isValidInt( dp, 0, MAX, 15 ) ) {\r\n round( n, ~~dp + this.e + 1, rm == null ||\r\n !isValidInt( rm, 0, 8, 15, roundingMode ) ? ROUNDING_MODE : rm | 0 );\r\n }\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * If k is out of range and ERRORS is false, the result will be ±0 if k < 0, or ±Infinity\r\n * otherwise.\r\n *\r\n * 'shift() argument not an integer: {k}'\r\n * 'shift() argument out of range: {k}'\r\n */\r\n P.shift = function (k) {\r\n var n = this;\r\n return isValidInt( k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER, 16, 'argument' )\r\n\r\n // k < 1e+21, or truncate(k) will produce exponential notation.\r\n ? n.times( '1e' + truncate(k) )\r\n : new BigNumber( n.c && n.c[0] && ( k < -MAX_SAFE_INTEGER || k > MAX_SAFE_INTEGER )\r\n ? n.s * ( k < 0 ? 0 : 1 / 0 )\r\n : n );\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt( N) = N\r\n * sqrt(-I) = N\r\n * sqrt( I) = I\r\n * sqrt( 0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if ( s !== 1 || !c || !c[0] ) {\r\n return new BigNumber( !s || s < 0 && ( !c || c[0] ) ? NaN : c ? x : 1 / 0 );\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt( +x );\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if ( s == 0 || s == 1 / 0 ) {\r\n n = coeffToString(c);\r\n if ( ( n.length + e ) % 2 == 0 ) n += '0';\r\n s = Math.sqrt(n);\r\n e = bitFloor( ( e + 1 ) / 2 ) - ( e < 0 || e % 2 );\r\n\r\n if ( s == 1 / 0 ) {\r\n n = '1e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice( 0, n.indexOf('e') + 1 ) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber( s + '' );\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if ( r.c[0] ) {\r\n e = r.e;\r\n s = e + dp;\r\n if ( s < 3 ) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for ( ; ; ) {\r\n t = r;\r\n r = half.times( t.plus( div( x, t, dp, 1 ) ) );\r\n\r\n if ( coeffToString( t.c ).slice( 0, s ) === ( n =\r\n coeffToString( r.c ) ).slice( 0, s ) ) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if ( r.e < e ) --s;\r\n n = n.slice( s - 3, s + 1 );\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if ( n == '9999' || !rep && n == '4999' ) {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if ( !rep ) {\r\n round( t, t.e + DECIMAL_PLACES + 2, 0 );\r\n\r\n if ( t.times(t).eq(x) ) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if ( !+n || !+n.slice(1) && n.charAt(0) == '5' ) {\r\n\r\n // Truncate to the first rounding digit.\r\n round( r, r.e + DECIMAL_PLACES + 2, 1 );\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round( r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m );\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber times the value of\r\n * BigNumber(y, b).\r\n */\r\n P.times = P.mul = function ( y, b ) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = ( id = 17, y = new BigNumber( y, b ) ).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if ( !xc || !yc || !xc[0] || !yc[0] ) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if ( !x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc ) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if ( !xc || !yc ) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor( x.e / LOG_BASE ) + bitFloor( y.e / LOG_BASE );\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if ( xcL < ycL ) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for ( i = xcL + ycL, zc = []; i--; zc.push(0) );\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for ( i = ycL; --i >= 0; ) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for ( k = xcL, j = i + k; j > i; ) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ( ( m % sqrtBase ) * sqrtBase ) + zc[j] + c;\r\n c = ( xlo / base | 0 ) + ( m / sqrtBase | 0 ) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.shift();\r\n }\r\n\r\n return normalise( y, zc, e );\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to a maximum of\r\n * sd significant digits using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toDigits() precision out of range: {sd}'\r\n * 'toDigits() precision not an integer: {sd}'\r\n * 'toDigits() rounding mode not an integer: {rm}'\r\n * 'toDigits() rounding mode out of range: {rm}'\r\n */\r\n P.toDigits = function ( sd, rm ) {\r\n var n = new BigNumber(this);\r\n sd = sd == null || !isValidInt( sd, 1, MAX, 18, 'precision' ) ? null : sd | 0;\r\n rm = rm == null || !isValidInt( rm, 0, 8, 18, roundingMode ) ? ROUNDING_MODE : rm | 0;\r\n return sd ? round( n, sd, rm ) : n;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toExponential() decimal places not an integer: {dp}'\r\n * 'toExponential() decimal places out of range: {dp}'\r\n * 'toExponential() rounding mode not an integer: {rm}'\r\n * 'toExponential() rounding mode out of range: {rm}'\r\n */\r\n P.toExponential = function ( dp, rm ) {\r\n return format( this,\r\n dp != null && isValidInt( dp, 0, MAX, 19 ) ? ~~dp + 1 : null, rm, 19 );\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toFixed() decimal places not an integer: {dp}'\r\n * 'toFixed() decimal places out of range: {dp}'\r\n * 'toFixed() rounding mode not an integer: {rm}'\r\n * 'toFixed() rounding mode out of range: {rm}'\r\n */\r\n P.toFixed = function ( dp, rm ) {\r\n return format( this, dp != null && isValidInt( dp, 0, MAX, 20 )\r\n ? ~~dp + this.e + 1 : null, rm, 20 );\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the FORMAT object (see BigNumber.config).\r\n *\r\n * FORMAT = {\r\n * decimalSeparator : '.',\r\n * groupSeparator : ',',\r\n * groupSize : 3,\r\n * secondaryGroupSize : 0,\r\n * fractionGroupSeparator : '\\xA0', // non-breaking space\r\n * fractionGroupSize : 0\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toFormat() decimal places not an integer: {dp}'\r\n * 'toFormat() decimal places out of range: {dp}'\r\n * 'toFormat() rounding mode not an integer: {rm}'\r\n * 'toFormat() rounding mode out of range: {rm}'\r\n */\r\n P.toFormat = function ( dp, rm ) {\r\n var str = format( this, dp != null && isValidInt( dp, 0, MAX, 21 )\r\n ? ~~dp + this.e + 1 : null, rm, 21 );\r\n\r\n if ( this.c ) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +FORMAT.groupSize,\r\n g2 = +FORMAT.secondaryGroupSize,\r\n groupSeparator = FORMAT.groupSeparator,\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = this.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if ( g1 > 0 && len > 0 ) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr( 0, i );\r\n\r\n for ( ; i < len; i += g1 ) {\r\n intPart += groupSeparator + intDigits.substr( i, g1 );\r\n }\r\n\r\n if ( g2 > 0 ) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + FORMAT.decimalSeparator + ( ( g2 = +FORMAT.fractionGroupSize )\r\n ? fractionPart.replace( new RegExp( '\\\\d{' + g2 + '}\\\\B', 'g' ),\r\n '$&' + FORMAT.fractionGroupSeparator )\r\n : fractionPart )\r\n : intPart;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string array representing the value of this BigNumber as a simple fraction with\r\n * an integer numerator and an integer denominator. The denominator will be a positive\r\n * non-zero value less than or equal to the specified maximum denominator. If a maximum\r\n * denominator is not specified, the denominator will be the lowest value necessary to\r\n * represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1 and < Infinity. The maximum denominator.\r\n *\r\n * 'toFraction() max denominator not an integer: {md}'\r\n * 'toFraction() max denominator out of range: {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var arr, d0, d2, e, exp, n, n0, q, s,\r\n k = ERRORS,\r\n x = this,\r\n xc = x.c,\r\n d = new BigNumber(ONE),\r\n n1 = d0 = new BigNumber(ONE),\r\n d1 = n0 = new BigNumber(ONE);\r\n\r\n if ( md != null ) {\r\n ERRORS = false;\r\n n = new BigNumber(md);\r\n ERRORS = k;\r\n\r\n if ( !( k = n.isInt() ) || n.lt(ONE) ) {\r\n\r\n if (ERRORS) {\r\n raise( 22,\r\n 'max denominator ' + ( k ? 'out of range' : 'not an integer' ), md );\r\n }\r\n\r\n // ERRORS is false:\r\n // If md is a finite non-integer >= 1, round it to an integer and use it.\r\n md = !k && n.c && round( n, n.e + 1, 1 ).gte(ONE) ? n : null;\r\n }\r\n }\r\n\r\n if ( !xc ) return x.toString();\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[ ( exp = e % LOG_BASE ) < 0 ? LOG_BASE + exp : exp ];\r\n md = !md || n.cmp(d) > 0 ? ( e > 0 ? d : n1 ) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for ( ; ; ) {\r\n q = div( n, d, 0, 1 );\r\n d2 = d0.plus( q.times(d1) );\r\n if ( d2.cmp(md) == 1 ) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus( q.times( d2 = n1 ) );\r\n n0 = d2;\r\n d = n.minus( q.times( d2 = d ) );\r\n n = d2;\r\n }\r\n\r\n d2 = div( md.minus(d0), d1, 0, 1 );\r\n n0 = n0.plus( d2.times(n1) );\r\n d0 = d0.plus( d2.times(d1) );\r\n n0.s = n1.s = x.s;\r\n e *= 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n arr = div( n1, d1, e, ROUNDING_MODE ).minus(x).abs().cmp(\r\n div( n0, d0, e, ROUNDING_MODE ).minus(x).abs() ) < 1\r\n ? [ n1.toString(), d1.toString() ]\r\n : [ n0.toString(), d0.toString() ];\r\n\r\n MAX_EXP = exp;\r\n return arr;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber raised to the power n.\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using\r\n * ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are positive integers,\r\n * otherwise it is equivalent to calculating x.toPower(n).modulo(m) (with POW_PRECISION 0).\r\n *\r\n * n {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * 'pow() exponent not an integer: {n}'\r\n * 'pow() exponent out of range: {n}'\r\n *\r\n * Performs 54 loop iterations for n of 9007199254740991.\r\n */\r\n P.toPower = P.pow = function ( n, m ) {\r\n var k, y, z,\r\n i = mathfloor( n < 0 ? -n : +n ),\r\n x = this;\r\n\r\n if ( m != null ) {\r\n id = 23;\r\n m = new BigNumber(m);\r\n }\r\n\r\n // Pass ±Infinity to Math.pow if exponent is out of range.\r\n if ( !isValidInt( n, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER, 23, 'exponent' ) &&\r\n ( !isFinite(n) || i > MAX_SAFE_INTEGER && ( n /= 0 ) ||\r\n parseFloat(n) != n && !( n = NaN ) ) || n == 0 ) {\r\n k = Math.pow( +x, n );\r\n return new BigNumber( m ? k % m : k );\r\n }\r\n\r\n if (m) {\r\n if ( n > 1 && x.gt(ONE) && x.isInt() && m.gt(ONE) && m.isInt() ) {\r\n x = x.mod(m);\r\n } else {\r\n z = m;\r\n\r\n // Nullify m so only a single mod operation is performed at the end.\r\n m = null;\r\n }\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n // (Using + 1.5 would give [9, 21] guard digits.)\r\n k = mathceil( POW_PRECISION / LOG_BASE + 2 );\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n for ( ; ; ) {\r\n if ( i % 2 ) {\r\n y = y.times(x);\r\n if ( !y.c ) break;\r\n if (k) {\r\n if ( y.c.length > k ) y.c.length = k;\r\n } else if (m) {\r\n y = y.mod(m);\r\n }\r\n }\r\n\r\n i = mathfloor( i / 2 );\r\n if ( !i ) break;\r\n x = x.times(x);\r\n if (k) {\r\n if ( x.c && x.c.length > k ) x.c.length = k;\r\n } else if (m) {\r\n x = x.mod(m);\r\n }\r\n }\r\n\r\n if (m) return y;\r\n if ( n < 0 ) y = ONE.div(y);\r\n\r\n return z ? y.mod(z) : k ? round( y, POW_PRECISION, ROUNDING_MODE ) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toPrecision() precision not an integer: {sd}'\r\n * 'toPrecision() precision out of range: {sd}'\r\n * 'toPrecision() rounding mode not an integer: {rm}'\r\n * 'toPrecision() rounding mode out of range: {rm}'\r\n */\r\n P.toPrecision = function ( sd, rm ) {\r\n return format( this, sd != null && isValidInt( sd, 1, MAX, 24, 'precision' )\r\n ? sd | 0 : null, rm, 24 );\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to 64 inclusive.\r\n *\r\n * 'toString() base not an integer: {b}'\r\n * 'toString() base out of range: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if ( e === null ) {\r\n\r\n if (s) {\r\n str = 'Infinity';\r\n if ( s < 0 ) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n str = coeffToString( n.c );\r\n\r\n if ( b == null || !isValidInt( b, 2, 64, 25, 'base' ) ) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential( str, e )\r\n : toFixedPoint( str, e );\r\n } else {\r\n str = convertBase( toFixedPoint( str, e ), b | 0, 10, s );\r\n }\r\n\r\n if ( s < 0 && n.c[0] ) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber truncated to a whole\r\n * number.\r\n */\r\n P.truncated = P.trunc = function () {\r\n return round( new BigNumber(this), this.e + 1, 1 );\r\n };\r\n\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n var str,\r\n n = this,\r\n e = n.e;\r\n\r\n if ( e === null ) return n.toString();\r\n\r\n str = coeffToString( n.c );\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential( str, e )\r\n : toFixedPoint( str, e );\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n };\r\n\r\n\r\n // Aliases for BigDecimal methods.\r\n //P.add = P.plus; // P.add included above\r\n //P.subtract = P.minus; // P.sub included above\r\n //P.multiply = P.times; // P.mul included above\r\n //P.divide = P.div;\r\n //P.remainder = P.mod;\r\n //P.compareTo = P.cmp;\r\n //P.negate = P.neg;\r\n\r\n\r\n if ( configObj != null ) BigNumber.config(configObj);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for ( ; i < j; ) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for ( ; z--; s = '0' + s );\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for ( j = r.length; r.charCodeAt(--j) === 48; );\r\n return r.slice( 0, j + 1 || 1 );\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare( x, y ) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if ( !i || !j ) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if ( a || b ) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if ( i != j ) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if ( !xc || !yc ) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if ( !b ) return k > l ^ a ? 1 : -1;\r\n\r\n j = ( k = xc.length ) < ( l = yc.length ) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for ( i = 0; i < j; i++ ) if ( xc[i] != yc[i] ) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Return true if n is a valid number in range, otherwise false.\r\n * Use for argument validation when ERRORS is false.\r\n * Note: parseInt('1e+1') == 1 but parseFloat('1e+1') == 10.\r\n */\r\n function intValidatorNoErrors( n, min, max ) {\r\n return ( n = truncate(n) ) >= min && n <= max;\r\n }\r\n\r\n\r\n function isArray(obj) {\r\n return Object.prototype.toString.call(obj) == '[object Array]';\r\n }\r\n\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. convertBase('255', 10, 16) returns [15, 15].\r\n * Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut( str, baseIn, baseOut ) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for ( ; i < len; ) {\r\n for ( arrL = arr.length; arrL--; arr[arrL] *= baseIn );\r\n arr[ j = 0 ] += ALPHABET.indexOf( str.charAt( i++ ) );\r\n\r\n for ( ; j < arr.length; j++ ) {\r\n\r\n if ( arr[j] > baseOut - 1 ) {\r\n if ( arr[j + 1] == null ) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n\r\n function toExponential( str, e ) {\r\n return ( str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str ) +\r\n ( e < 0 ? 'e' : 'e+' ) + e;\r\n }\r\n\r\n\r\n function toFixedPoint( str, e ) {\r\n var len, z;\r\n\r\n // Negative exponent?\r\n if ( e < 0 ) {\r\n\r\n // Prepend zeros.\r\n for ( z = '0.'; ++e; z += '0' );\r\n str = z + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if ( ++e > len ) {\r\n for ( z = '0', e -= len; --e; z += '0' );\r\n str += z;\r\n } else if ( e < len ) {\r\n str = str.slice( 0, e ) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n function truncate(n) {\r\n n = parseFloat(n);\r\n return n < 0 ? mathceil(n) : mathfloor(n);\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = constructorFactory();\r\n BigNumber.default = BigNumber.BigNumber = BigNumber;\r\n\r\n\r\n // AMD.\r\n if ( true ) {\r\n !(__WEBPACK_AMD_DEFINE_RESULT__ = function () { return BigNumber; }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if ( typeof module != 'undefined' && module.exports ) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if ( !globalObj ) globalObj = typeof self != 'undefined' ? self : Function('return this')();\r\n globalObj.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bignumber.js/bignumber.js\n// module id = 236\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bignumber.js/bignumber.js?");
2185
2186/***/ },
2187/* 237 */
2188/*!*********************************!*\
2189 !*** ./~/cbor/lib/constants.js ***!
2190 \*********************************/
2191/***/ function(module, exports) {
2192
2193 eval("'use strict'\n\nexports.MT = {\n POS_INT: 0,\n NEG_INT: 1,\n BYTE_STRING: 2,\n UTF8_STRING: 3,\n ARRAY: 4,\n MAP: 5,\n TAG: 6,\n SIMPLE_FLOAT: 7\n}\n\nexports.TAG = {\n DATE_STRING: 0,\n DATE_EPOCH: 1,\n POS_BIGINT: 2,\n NEG_BIGINT: 3,\n DECIMAL_FRAC: 4,\n BIGFLOAT: 5,\n BASE64URL_EXPECTED: 21,\n BASE64_EXPECTED: 22,\n BASE16_EXPECTED: 23,\n CBOR: 24,\n URI: 32,\n BASE64URL: 33,\n BASE64: 34,\n REGEXP: 35,\n MIME: 36\n}\n\nexports.NUMBYTES = {\n ZERO: 0,\n ONE: 24,\n TWO: 25,\n FOUR: 26,\n EIGHT: 27,\n INDEFINITE: 31\n}\n\nexports.SIMPLE = {\n FALSE: 20,\n TRUE: 21,\n NULL: 22,\n UNDEFINED: 23\n}\n\nexports.SYMS = {\n NULL: Symbol('null'),\n UNDEFINED: Symbol('undef'),\n PARENT: Symbol('parent'),\n BREAK: Symbol('break'),\n STREAM: Symbol('stream')\n}\n\nexports.SHIFT32 = Math.pow(2, 32)\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cbor/lib/constants.js\n// module id = 237\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/cbor/lib/constants.js?");
2194
2195/***/ },
2196/* 238 */
2197/*!******************************!*\
2198 !*** ./~/cbor/lib/simple.js ***!
2199 \******************************/
2200/***/ function(module, exports, __webpack_require__) {
2201
2202 eval("'use strict'\n\nconst constants = __webpack_require__(/*! ./constants */ 237)\nconst MT = constants.MT, SIMPLE = constants.SIMPLE, SYMS = constants.SYMS\n\n/**\n * A CBOR Simple Value that does not map onto a known constant.\n */\nclass Simple {\n /**\n * Creates an instance of Simple.\n *\n * @param {integer} value - the simple value's integer value\n */\n constructor (value) {\n if (typeof value !== 'number') {\n throw new Error('Invalid Simple type: ' + (typeof value))\n }\n if ((value < 0) || (value > 255) || ((value|0) !== value)) {\n throw new Error('value must be a small positive integer: ' + value)\n }\n this.value = value\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n toString () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n inspect (depth, opts) {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n */\n encodeCBOR (gen) {\n return gen._pushInt(this.value, MT.SIMPLE_FLOAT)\n }\n\n /**\n * Is the given object a Simple?\n *\n * @param {any} obj - object to test\n * @returns {bool} - is it Simple?\n */\n static isSimple (obj) {\n return obj instanceof Simple\n }\n\n /**\n * Decode from the CBOR additional information into a JavaScript value.\n * If the CBOR item has no parent, return a \"safe\" symbol instead of\n * `null` or `undefined`, so that the value can be passed through a\n * stream in object mode.\n *\n * @param {Number} val - the CBOR additional info to convert\n * @param {bool} has_parent - Does the CBOR item have a parent?\n * @returns {(null|undefined|Boolean|Symbol)} - the decoded value\n */\n static decode (val, has_parent) {\n if (has_parent == null) {\n has_parent = true\n }\n switch (val) {\n case SIMPLE.FALSE:\n return false\n case SIMPLE.TRUE:\n return true\n case SIMPLE.NULL:\n if (has_parent) {\n return null\n } else {\n return SYMS.NULL\n }\n case SIMPLE.UNDEFINED:\n if (has_parent) {\n return void 0\n } else {\n return SYMS.UNDEFINED\n }\n case -1:\n if (!has_parent) {\n throw new Error('Invalid BREAK')\n }\n return SYMS.BREAK\n default:\n return new Simple(val)\n }\n }\n}\n\nmodule.exports = Simple\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cbor/lib/simple.js\n// module id = 238\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/cbor/lib/simple.js?");
2203
2204/***/ },
2205/* 239 */
2206/*!*******************************!*\
2207 !*** ./~/cbor/lib/decoder.js ***!
2208 \*******************************/
2209/***/ function(module, exports, __webpack_require__) {
2210
2211 eval("/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict'\n\nconst BinaryParseStream = __webpack_require__(/*! ../vendor/binary-parse-stream */ 240)\nconst Tagged = __webpack_require__(/*! ./tagged */ 242)\nconst Simple = __webpack_require__(/*! ./simple */ 238)\nconst utils = __webpack_require__(/*! ./utils */ 234)\nconst bignumber = __webpack_require__(/*! bignumber.js */ 236)\nconst NoFilter = __webpack_require__(/*! nofilter */ 241)\nconst constants = __webpack_require__(/*! ./constants */ 237)\nconst MT = constants.MT, NUMBYTES = constants.NUMBYTES, SIMPLE = constants.SIMPLE, SYMS = constants.SYMS\n\nconst NEG_ONE = new bignumber(-1)\nconst NEG_MAX = NEG_ONE.sub(new bignumber(Number.MAX_SAFE_INTEGER.toString(16), 16))\nconst COUNT = Symbol('count')\nconst PENDING_KEY = Symbol('pending_key')\nconst MAJOR = Symbol('major type')\nconst ERROR = Symbol('error')\nconst NOT_FOUND = Symbol('not found')\n\nfunction parentArray (parent, typ, count) {\n const a = []\n a[COUNT] = count\n a[SYMS.PARENT] = parent\n a[MAJOR] = typ\n return a\n}\n\nfunction parentBufferStream (parent, typ) {\n const b = new NoFilter\n b[SYMS.PARENT] = parent\n b[MAJOR] = typ\n return b\n}\n\n\n/**\n * Decode a stream of CBOR bytes by transforming them into equivalent\n * JavaScript data. Because of the limitations of Node object streams,\n * special symbols are emitted instead of NULL or UNDEFINED. Fix those\n * up by calling {@link Decoder.nullcheck}.\n *\n * @extends {BinaryParseStream}\n */\nclass Decoder extends BinaryParseStream {\n\n /**\n * Create a parsing stream.\n *\n * @param {object} [options={}]\n * @param {number} [options.max_depth=-1] - the maximum depth to parse. Use -1 for\n * \"until you run out of memory\". Set this to a finite positive number for\n * un-trusted inputs. Most standard inputs won't nest more than\n * 100 or so levels; I've tested into the millions before running out of\n * memory.\n * @param {object=} options.tags - mapping from tag number to function(v),\n * where v is the decoded value that comes after the tag, and where the\n * function returns the correctly-created value for that tag.\n */\n constructor (options) {\n options = options || {}\n const tags = options.tags\n delete options.tags\n const max_depth = (options.max_depth != null) ? options.max_depth : -1\n delete options.max_depth\n super(options)\n\n this.running = true\n this.max_depth = max_depth\n this.tags = tags\n }\n\n /**\n * Check the given value for a symbol encoding a NULL or UNDEFINED value in\n * the CBOR stream.\n *\n * @static\n * @param {any} val - the value to check\n * @returns {any} the corrected value\n *\n * @example\n * myDecoder.on('data', function(val) {\n * val = Decoder.nullcheck(val);\n * ...\n * });\n */\n static nullcheck (val) {\n switch (val) {\n case SYMS.NULL:\n return null\n case SYMS.UNDEFINED:\n return undefined\n case NOT_FOUND:\n throw new Error('Value not found')\n default:\n return val\n }\n }\n\n /**\n * Decode the first CBOR item in the input, synchronously. This will throw an\n * exception if the input is not valid CBOR.\n *\n * @static\n * @param {(string|Buffer)} input\n * @param {object} [options={encoding: 'hex'}]\n * @param {string} [options.encoding: 'hex'] - The encoding of the input.\n * Ignored if input is a Buffer.\n * @returns {any} - the decoded value\n */\n static decodeFirstSync (input, options) {\n options = options || { encoding: 'hex' }\n let opts = {}\n let encod\n switch (typeof options) {\n case 'string':\n encod = options\n break\n case 'object':\n opts = utils.extend({}, options)\n encod = opts.encoding\n delete opts.encoding\n break\n }\n const c = new Decoder(opts)\n const s = new NoFilter(input, encod != null ? encod : utils.guessEncoding(input))\n const parser = c._parse()\n let state = parser.next()\n while (!state.done) {\n const b = s.read(state.value)\n if ((b == null) || (b.length !== state.value)) {\n throw new Error('Insufficient data')\n }\n state = parser.next(b)\n }\n return Decoder.nullcheck(state.value)\n }\n\n /**\n * Decode all of the CBOR items in the input into an array. This will throw\n * an exception if the input is not valid CBOR; a zero-length input will\n * return an empty array.\n *\n * @static\n * @param {(string|Buffer)} input\n * @param {(string|Object)} [options={encoding: 'hex'}]\n * @param {string} [options.encoding: 'hex'] - The encoding of the input.\n * Ignored if input is a Buffer.\n * @returns {Array} - Array of all found items\n */\n static decodeAllSync (input, options) {\n options = options || { encoding: 'hex' }\n let opts = {}\n let encod\n switch (typeof options) {\n case 'string':\n encod = options\n break\n case 'object':\n opts = utils.extend({}, options)\n encod = opts.encoding\n delete opts.encoding\n }\n const c = new Decoder(opts)\n const s = new NoFilter(input, encod != null ? encod : utils.guessEncoding(input))\n const res = []\n while (s.length > 0) {\n const parser = c._parse()\n let state = parser.next()\n while (!state.done) {\n const b = s.read(state.value)\n if ((b == null) || (b.length !== state.value)) {\n throw new Error('Insufficient data')\n }\n state = parser.next(b)\n }\n res.push(Decoder.nullcheck(state.value))\n }\n return res\n }\n\n /**\n * @callback decodeCallback\n * @param {Error} error - if one was generated\n * @param {any} value - the decoded value\n */\n\n /**\n * Decode the first CBOR item in the input. This will error if there are more\n * bytes left over at the end, and optionally if there were no valid CBOR\n * bytes in the input. Emits the {Decoder.NOT_FOUND} Symbol in the callback\n * if no data was found and the `required` option is false.\n *\n * @static\n * @param {(string|Buffer)} input - the input to parse\n * @param {(function|string|Object)} options\n * @param {string} [options.encoding: 'hex'] - The encoding of the input.\n * Ignored if input is a Buffer.\n * @param {decodeCallback} cb\n * @returns {Promise} if no cb specified\n */\n static decodeFirst (input, options, cb) {\n let opts = {}\n let required = false\n let encod = 'hex'\n switch (typeof options) {\n case 'function':\n cb = options\n encod = utils.guessEncoding(input)\n break\n case 'string':\n encod = options\n break\n case 'object':\n opts = utils.extend({}, options)\n encod = (opts.encoding != null) ? opts.encoding : utils.guessEncoding(input)\n delete opts.encoding\n required = (opts.required != null) ? opts.required : false\n delete opts.required\n }\n const c = new Decoder(opts)\n let p\n let v = NOT_FOUND\n c.on('data', (val) => {\n v = Decoder.nullcheck(val)\n c.close()\n })\n if (typeof cb === 'function') {\n c.once('error', function (er) {\n const u = v\n v = ERROR\n c.close()\n return cb(er, u)\n })\n c.once('end', () => {\n switch (v) {\n case NOT_FOUND:\n if (required) {\n return cb(new Error('No CBOR found'))\n } else {\n return cb(null, v)\n }\n case ERROR:\n return void 0\n default:\n return cb(null, v)\n }\n })\n } else {\n p = new Promise(function (resolve, reject) {\n c.once('error', (er) => {\n v = ERROR\n c.close()\n return reject(er)\n })\n return c.once('end', () => {\n switch (v) {\n case NOT_FOUND:\n if (required) {\n return reject(new Error('No CBOR found'))\n } else {\n return resolve(v)\n }\n case ERROR:\n return void 0\n default:\n return resolve(v)\n }\n })\n })\n }\n c.end(input, encod)\n return p\n }\n\n /**\n * @callback decodeAllCallback\n * @param {Error} error - if one was generated\n * @param {Array} value - all of the decoded values, wrapped in an Array\n */\n\n /**\n * Decode all of the CBOR items in the input. This will error if there are\n * more bytes left over at the end.\n *\n * @static\n * @param {(string|Buffer)} input - the input to parse\n * @param {(string|Object)} options - Decoding options.\n * If string, the input encoding.\n * @param {decodeAllCallback} cb\n * @returns {Promise} if no callback\n */\n static decodeAll (input, options, cb) {\n let opts = {}\n let encod = 'hex'\n switch (typeof options) {\n case 'function':\n cb = options\n encod = utils.guessEncoding(input)\n break\n case 'string':\n encod = options\n break\n case 'object':\n opts = utils.extend({}, options)\n encod = (opts.encoding != null) ? opts.encoding : utils.guessEncoding(input)\n delete opts.encoding\n }\n const c = new Decoder(opts)\n let p\n const vals = []\n c.on('data', function (val) {\n return vals.push(Decoder.nullcheck(val))\n })\n if (typeof cb === 'function') {\n c.on('error', function (er) {\n return cb(er)\n })\n c.on('end', function () {\n return cb(null, vals)\n })\n } else {\n p = new Promise(function (resolve, reject) {\n c.on('error', function (er) {\n return reject(er)\n })\n return c.on('end', function () {\n return resolve(vals)\n })\n })\n }\n c.end(input, encod)\n return p\n }\n\n /**\n * Stop processing\n */\n close () {\n this.running = false\n this.__fresh = true\n }\n\n * _parse () {\n let parent = null\n let depth = 0\n let val = null\n while (true) {\n if ((this.max_depth >= 0) && (depth > this.max_depth)) {\n throw new Error('Maximum depth ' + this.max_depth + ' exceeded')\n }\n const octet = (yield 1)[0]\n if (!this.running) {\n throw new Error('Unexpected data: 0x' + (octet.toString(16)))\n }\n const mt = octet >> 5\n const ai = octet & 0x1f\n const parent_major = (parent != null) ? parent[MAJOR] : undefined\n const parent_length = (parent != null) ? parent.length : undefined\n switch (ai) {\n case NUMBYTES.ONE:\n this.emit('more-bytes', mt, 1, parent_major, parent_length)\n val = (yield 1)[0]\n break\n case NUMBYTES.TWO:\n case NUMBYTES.FOUR:\n case NUMBYTES.EIGHT:\n const numbytes = 1 << (ai - 24)\n this.emit('more-bytes', mt, numbytes, parent_major, parent_length)\n const buf = yield numbytes\n val = (mt === MT.SIMPLE_FLOAT) ? buf : utils.parseCBORint(ai, buf)\n break\n case 28:\n case 29:\n case 30:\n this.running = false\n throw new Error('Additional info not implemented: ' + ai)\n case NUMBYTES.INDEFINITE:\n val = -1\n break\n default:\n val = ai\n }\n switch (mt) {\n case MT.POS_INT:\n // val already decoded\n break\n case MT.NEG_INT:\n if (val === Number.MAX_SAFE_INTEGER) {\n val = NEG_MAX\n } else if (val instanceof bignumber) {\n val = NEG_ONE.sub(val)\n } else {\n val = -1 - val\n }\n break\n case MT.BYTE_STRING:\n case MT.UTF8_STRING:\n switch (val) {\n case 0:\n this.emit('start-string', mt, val, parent_major, parent_length)\n val = (mt === MT.BYTE_STRING) ? new Buffer(0) : ''\n break\n case -1:\n this.emit('start', mt, SYMS.STREAM, parent_major, parent_length)\n parent = parentBufferStream(parent, mt)\n depth++\n continue\n default:\n this.emit('start-string', mt, val, parent_major, parent_length)\n val = yield val\n if (mt === MT.UTF8_STRING) {\n val = val.toString('utf-8')\n }\n }\n break\n case MT.ARRAY:\n case MT.MAP:\n switch (val) {\n case 0:\n val = (mt === MT.MAP) ? {} : []\n val[SYMS.PARENT] = parent\n break\n case -1:\n this.emit('start', mt, SYMS.STREAM, parent_major, parent_length)\n parent = parentArray(parent, mt, -1)\n depth++\n continue\n default:\n this.emit('start', mt, val, parent_major, parent_length)\n parent = parentArray(parent, mt, val * (mt - 3))\n depth++\n continue\n }\n break\n case MT.TAG:\n this.emit('start', mt, val, parent_major, parent_length)\n parent = parentArray(parent, mt, 1)\n parent.push(val)\n depth++\n continue\n case MT.SIMPLE_FLOAT:\n if (typeof val === 'number') {\n val = Simple.decode(val, parent != null)\n } else {\n val = utils.parseCBORfloat(val)\n }\n }\n this.emit('value', val, parent_major, parent_length, ai)\n let again = false\n while (parent != null) {\n switch (false) {\n case val !== SYMS.BREAK:\n parent[COUNT] = 1\n break\n case !Array.isArray(parent):\n parent.push(val)\n break\n case !(parent instanceof NoFilter):\n const pm = parent[MAJOR]\n if ((pm != null) && (pm !== mt)) {\n this.running = false\n throw new Error('Invalid major type in indefinite encoding')\n }\n parent.write(val)\n }\n if ((--parent[COUNT]) !== 0) {\n again = true\n break\n }\n --depth\n delete parent[COUNT]\n this.emit('stop', parent[MAJOR])\n\n if (Array.isArray(parent)) {\n switch (parent[MAJOR]) {\n case MT.ARRAY:\n val = parent\n break\n case MT.MAP:\n let allstrings = true\n if ((parent.length % 2) !== 0) {\n throw new Error('Invalid map length: ' + parent.length)\n }\n for (let i = 0, len = parent.length; i < len; i += 2) {\n if (typeof parent[i] !== 'string') {\n allstrings = false\n break\n }\n }\n if (allstrings) {\n val = {}\n for (let i = 0, len = parent.length; i < len; i += 2) {\n val[parent[i]] = parent[i + 1]\n }\n } else {\n val = new Map\n for (let i = 0, len = parent.length; i < len; i += 2) {\n val.set(parent[i], parent[i + 1])\n }\n }\n break\n case MT.TAG:\n const t = new Tagged(parent[0], parent[1])\n val = t.convert(this.tags)\n break\n }\n } else if (parent instanceof NoFilter) {\n switch (parent[MAJOR]) {\n case MT.BYTE_STRING:\n val = parent.slice()\n case MT.UTF8_STRING:\n val = parent.toString('utf-8')\n }\n }\n\n parent = parent[SYMS.PARENT]\n }\n if (!again) {\n return val\n }\n }\n }\n}\n\nDecoder.NOT_FOUND = NOT_FOUND\nmodule.exports = Decoder\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../buffer/index.js */ 29).Buffer))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cbor/lib/decoder.js\n// module id = 239\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/cbor/lib/decoder.js?");
2212
2213/***/ },
2214/* 240 */
2215/*!****************************************************!*\
2216 !*** ./~/cbor/vendor/binary-parse-stream/index.js ***!
2217 \****************************************************/
2218/***/ function(module, exports, __webpack_require__) {
2219
2220 eval("// Tweaked version of nathan7's binary-parse-stream\n// (see https://github.com/nathan7/binary-parse-stream)\n// Uses NoFilter instead of the readable in the original. Removes\n// the ability to read -1, which was odd and un-needed.\n// License for binary-parse-stream: MIT\n\n'use strict';\nexports = module.exports = BinaryParseStream\nvar Stream = __webpack_require__(/*! stream */ 208)\n , TransformStream = Stream.Transform\n , inherits = __webpack_require__(/*! util */ 231).inherits\n , NoFilter = __webpack_require__(/*! nofilter */ 241)\n\nexports.One = -1\n\ninherits(BinaryParseStream, TransformStream)\nfunction BinaryParseStream(options) {\n TransformStream.call(this, options)\n this._writableState.objectMode = false\n this._readableState.objectMode = true\n\n this.bs = new NoFilter()\n this.__restart()\n}\n\nBinaryParseStream.prototype._transform = function(fresh, encoding, cb) { var self = this\n this.bs.write(fresh)\n\n while (this.bs.length >= this.__needed) {\n var ret\n , chunk = this.__needed === null\n ? undefined\n : this.bs.read(this.__needed)\n\n try { ret = this.__parser.next(chunk) }\n catch (e) {\n return cb(e) }\n\n if (this.__needed)\n this.__fresh = false\n\n if (!ret.done)\n this.__needed = ret.value | 0\n else {\n this.push(ret.value)\n this.__restart()\n }\n }\n\n return cb()\n}\n\nBinaryParseStream.prototype.__restart = function() {\n this.__needed = null\n this.__parser = this._parse()\n this.__fresh = true\n}\n\nBinaryParseStream.prototype._flush = function(cb) {\n cb(this.__fresh\n ? null\n : new Error('unexpected end of input'))\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cbor/vendor/binary-parse-stream/index.js\n// module id = 240\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/cbor/vendor/binary-parse-stream/index.js?");
2221
2222/***/ },
2223/* 241 */
2224/*!*********************************!*\
2225 !*** ./~/nofilter/lib/index.js ***!
2226 \*********************************/
2227/***/ function(module, exports, __webpack_require__) {
2228
2229 eval("/* WEBPACK VAR INJECTION */(function(Buffer) {// Generated by CoffeeScript 1.10.0\n(function() {\n var NoFilter, stream, util,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n stream = __webpack_require__(/*! stream */ 208);\n\n util = __webpack_require__(/*! util */ 231);\n\n module.exports = NoFilter = (function(superClass) {\n var _read_gen, _write_gen, get;\n\n extend(NoFilter, superClass);\n\n function NoFilter(input, inputEncoding, options) {\n var inp, inpE, ref, watchPipe;\n if (options == null) {\n options = {};\n }\n inp = void 0;\n inpE = void 0;\n switch (typeof input) {\n case 'object':\n if (Buffer.isBuffer(input)) {\n inp = input;\n if ((inputEncoding != null) && (typeof inputEncoding === 'object')) {\n options = inputEncoding;\n }\n } else {\n options = input;\n }\n break;\n case 'string':\n inp = input;\n if ((inputEncoding != null) && (typeof inputEncoding === 'object')) {\n options = inputEncoding;\n } else {\n inpE = inputEncoding;\n }\n }\n if (options == null) {\n options = {};\n }\n if (inp == null) {\n inp = options.input;\n }\n if (inpE == null) {\n inpE = options.inputEncoding;\n }\n delete options.input;\n delete options.inputEncoding;\n watchPipe = (ref = options.watchPipe) != null ? ref : true;\n delete options.watchPipe;\n NoFilter.__super__.constructor.call(this, options);\n if (watchPipe) {\n this.on('pipe', (function(_this) {\n return function(readable) {\n var om;\n om = readable._readableState.objectMode;\n if ((_this.length > 0) && (om !== _this._readableState.objectMode)) {\n throw new Error('Do not switch objectMode in the middle of the stream');\n }\n _this._readableState.objectMode = om;\n return _this._writableState.objectMode = om;\n };\n })(this));\n }\n if (inp != null) {\n this.end(inp, inpE);\n }\n }\n\n NoFilter.isNoFilter = function(obj) {\n return obj instanceof this;\n };\n\n NoFilter.compare = function(nf1, nf2) {\n if (!(nf1 instanceof this)) {\n throw new TypeError('Arguments must be NoFilters');\n }\n if (nf1 === nf2) {\n return 0;\n } else {\n return nf1.compare(nf2);\n }\n };\n\n NoFilter.concat = function(list, length) {\n var bufs;\n if (!Array.isArray(list)) {\n throw new TypeError('list argument must be an Array of NoFilters');\n }\n if ((list.length === 0) || (length === 0)) {\n return new Buffer(0);\n }\n if (length == null) {\n length = list.reduce(function(tot, nf) {\n if (!(nf instanceof NoFilter)) {\n throw new TypeError('list argument must be an Array of NoFilters');\n }\n return tot + nf.length;\n }, 0);\n }\n bufs = list.map(function(nf) {\n if (!(nf instanceof NoFilter)) {\n throw new TypeError('list argument must be an Array of NoFilters');\n }\n if (nf._readableState.objectMode) {\n throw new Error('NoFilter may not be in object mode for concat');\n }\n return nf.slice();\n });\n return Buffer.concat(bufs, length);\n };\n\n NoFilter.prototype._transform = function(chunk, encoding, callback) {\n if (!this._readableState.objectMode && !Buffer.isBuffer(chunk)) {\n chunk = new Buffer(chunk, encoding);\n }\n this.push(chunk);\n return callback();\n };\n\n NoFilter.prototype._bufArray = function() {\n var b, bufs;\n bufs = this._readableState.buffer;\n if (!Array.isArray(bufs)) {\n b = bufs.head;\n bufs = [];\n while (b != null) {\n bufs.push(b.data);\n b = b.next;\n }\n }\n return bufs;\n };\n\n NoFilter.prototype.read = function(size) {\n var buf;\n buf = NoFilter.__super__.read.call(this, size);\n if (buf != null) {\n this.emit('read', buf);\n }\n return buf;\n };\n\n NoFilter.prototype.promise = function(cb) {\n var done;\n done = false;\n return new Promise((function(_this) {\n return function(resolve, reject) {\n _this.on('finish', function() {\n var data;\n data = _this.read();\n if ((cb != null) && !done) {\n done = true;\n cb(null, data);\n }\n return resolve(data);\n });\n return _this.on('error', function(er) {\n if ((cb != null) && !done) {\n done = true;\n cb(er);\n }\n return reject(er);\n });\n };\n })(this));\n };\n\n NoFilter.prototype.compare = function(other) {\n if (!(other instanceof NoFilter)) {\n throw new TypeError('Arguments must be NoFilters');\n }\n if (this._readableState.objectMode || other._readableState.objectMode) {\n throw new Error('Must not be in object mode to compare');\n }\n if (this === other) {\n return 0;\n } else {\n return this.slice().compare(other.slice());\n }\n };\n\n NoFilter.prototype.equals = function(other) {\n return this.compare(other) === 0;\n };\n\n NoFilter.prototype.slice = function(start, end) {\n var b, bufs;\n if (this._readableState.objectMode) {\n return this._bufArray().slice(start, end);\n } else {\n bufs = this._bufArray();\n switch (bufs.length) {\n case 0:\n return new Buffer(0);\n case 1:\n return bufs[0].slice(start, end);\n default:\n b = Buffer.concat(bufs);\n return b.slice(start, end);\n }\n }\n };\n\n NoFilter.prototype.get = function(index) {\n return this.slice()[index];\n };\n\n NoFilter.prototype.toJSON = function() {\n var b;\n b = this.slice();\n if (Buffer.isBuffer(b)) {\n return b.toJSON();\n } else {\n return b;\n }\n };\n\n NoFilter.prototype.toString = function(encoding, start, end) {\n return this.slice().toString(encoding, start, end);\n };\n\n NoFilter.prototype.inspect = function(depth, options) {\n var bufs, hex;\n bufs = this._bufArray();\n hex = bufs.map(function(b) {\n if (Buffer.isBuffer(b)) {\n if (options != null ? options.stylize : void 0) {\n return options.stylize(b.toString('hex'), 'string');\n } else {\n return b.toString('hex');\n }\n } else {\n return util.inspect(b, options);\n }\n }).join(', ');\n return this.constructor.name + \" [\" + hex + \"]\";\n };\n\n _read_gen = function(meth, len) {\n return function(val) {\n var b;\n b = this.read(len);\n if (!Buffer.isBuffer(b)) {\n return null;\n }\n return b[meth].call(b, 0, true);\n };\n };\n\n _write_gen = function(meth, len) {\n return function(val) {\n var b;\n b = new Buffer(len);\n b[meth].call(b, val, 0, true);\n return this.push(b);\n };\n };\n\n NoFilter.prototype.writeUInt8 = _write_gen('writeUInt8', 1);\n\n NoFilter.prototype.writeUInt16LE = _write_gen('writeUInt16LE', 2);\n\n NoFilter.prototype.writeUInt16BE = _write_gen('writeUInt16BE', 2);\n\n NoFilter.prototype.writeUInt32LE = _write_gen('writeUInt32LE', 4);\n\n NoFilter.prototype.writeUInt32BE = _write_gen('writeUInt32BE', 4);\n\n NoFilter.prototype.writeInt8 = _write_gen('writeInt8', 1);\n\n NoFilter.prototype.writeInt16LE = _write_gen('writeInt16LE', 2);\n\n NoFilter.prototype.writeInt16BE = _write_gen('writeInt16BE', 2);\n\n NoFilter.prototype.writeInt32LE = _write_gen('writeInt32LE', 4);\n\n NoFilter.prototype.writeInt32BE = _write_gen('writeInt32BE', 4);\n\n NoFilter.prototype.writeFloatLE = _write_gen('writeFloatLE', 4);\n\n NoFilter.prototype.writeFloatBE = _write_gen('writeFloatBE', 4);\n\n NoFilter.prototype.writeDoubleLE = _write_gen('writeDoubleLE', 8);\n\n NoFilter.prototype.writeDoubleBE = _write_gen('writeDoubleBE', 8);\n\n NoFilter.prototype.readUInt8 = _read_gen('readUInt8', 1);\n\n NoFilter.prototype.readUInt16LE = _read_gen('readUInt16LE', 2);\n\n NoFilter.prototype.readUInt16BE = _read_gen('readUInt16BE', 2);\n\n NoFilter.prototype.readUInt32LE = _read_gen('readUInt32LE', 4);\n\n NoFilter.prototype.readUInt32BE = _read_gen('readUInt32BE', 4);\n\n NoFilter.prototype.readInt8 = _read_gen('readInt8', 1);\n\n NoFilter.prototype.readInt16LE = _read_gen('readInt16LE', 2);\n\n NoFilter.prototype.readInt16BE = _read_gen('readInt16BE', 2);\n\n NoFilter.prototype.readInt32LE = _read_gen('readInt32LE', 4);\n\n NoFilter.prototype.readInt32BE = _read_gen('readInt32BE', 4);\n\n NoFilter.prototype.readFloatLE = _read_gen('readFloatLE', 4);\n\n NoFilter.prototype.readFloatBE = _read_gen('readFloatBE', 4);\n\n NoFilter.prototype.readDoubleLE = _read_gen('readDoubleLE', 8);\n\n NoFilter.prototype.readDoubleBE = _read_gen('readDoubleBE', 8);\n\n get = function(props) {\n var getter, name, results;\n results = [];\n for (name in props) {\n getter = props[name];\n results.push(NoFilter.prototype.__defineGetter__(name, getter));\n }\n return results;\n };\n\n get({\n length: function() {\n return this._readableState.length;\n }\n });\n\n return NoFilter;\n\n })(stream.Transform);\n\n}).call(this);\n\n//# sourceMappingURL=index.js.map\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../buffer/index.js */ 29).Buffer))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/nofilter/lib/index.js\n// module id = 241\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/nofilter/lib/index.js?");
2230
2231/***/ },
2232/* 242 */
2233/*!******************************!*\
2234 !*** ./~/cbor/lib/tagged.js ***!
2235 \******************************/
2236/***/ function(module, exports, __webpack_require__) {
2237
2238 eval("'use strict'\n\nconst bignumber = __webpack_require__(/*! bignumber.js */ 236)\nconst utils = __webpack_require__(/*! ./utils */ 234)\nconst url = __webpack_require__(/*! url */ 243)\n\nconst MINUS_ONE = new bignumber(-1)\nconst TEN = new bignumber(10)\nconst TWO = new bignumber(2)\n\n\n/**\n * A CBOR tagged item, where the tag does not have semantics specified at the\n * moment, or those semantics threw an error during parsing. Typically this will\n * be an extension point you're not yet expecting.\n */\nclass Tagged {\n\n /**\n * Creates an instance of Tagged.\n *\n * @param {Number} tag - the number of the tag\n * @param {any} value - the value inside the tag\n * @param {Error} err - the error that was thrown parsing the tag, or null\n */\n constructor (tag, value, err) {\n this.tag = tag\n this.value = value\n this.err = err\n if (typeof this.tag !== 'number') {\n throw new Error('Invalid tag type (' + (typeof this.tag) + ')')\n }\n if ((this.tag < 0) || ((this.tag | 0) !== this.tag)) {\n throw new Error('Tag must be a positive integer: ' + this.tag)\n }\n }\n\n /**\n * Convert to a String\n *\n * @returns {String} string of the form '1(2)'\n */\n toString () {\n return `${this.tag}(${JSON.stringify(this.value)})`\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n */\n encodeCBOR (gen) {\n gen._pushTag(this.tag)\n return gen.pushAny(this.value)\n }\n\n /**\n * If we have a converter for this type, do the conversion. Some converters\n * are built-in. Additional ones can be passed in. If you want to remove\n * a built-in converter, pass a converter in whose value is 'null' instead\n * of a function.\n *\n * @param {Object} converters - keys in the object are a tag number, the value\n * is a function that takes the decoded CBOR and returns a JavaScript value\n * of the appropriate type. Throw an exception in the function on errors.\n * @returns {any} - the converted item\n */\n convert (converters) {\n var er, f\n f = converters != null ? converters[this.tag] : void 0\n if (typeof f !== 'function') {\n f = Tagged['_tag_' + this.tag]\n if (typeof f !== 'function') {\n return this\n }\n }\n try {\n return f.call(Tagged, this.value)\n } catch (error) {\n er = error\n this.err = er\n return this\n }\n }\n\n static _tag_0 (v) {\n return new Date(v)\n }\n\n static _tag_1 (v) {\n return new Date(v * 1000)\n }\n\n static _tag_2 (v) {\n return utils.bufferToBignumber(v)\n }\n\n static _tag_3 (v) {\n return MINUS_ONE.minus(utils.bufferToBignumber(v))\n }\n\n static _tag_4 (v) {\n return TEN.pow(v[0]).times(v[1])\n }\n\n static _tag_5 (v) {\n return TWO.pow(v[0]).times(v[1])\n }\n\n static _tag_32 (v) {\n return url.parse(v)\n }\n\n static _tag_35 (v) {\n return new RegExp(v)\n }\n}\n\nmodule.exports = Tagged\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cbor/lib/tagged.js\n// module id = 242\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/cbor/lib/tagged.js?");
2239
2240/***/ },
2241/* 243 */
2242/*!**********************!*\
2243 !*** ./~/url/url.js ***!
2244 \**********************/
2245/***/ function(module, exports, __webpack_require__) {
2246
2247 eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = __webpack_require__(/*! punycode */ 244);\nvar util = __webpack_require__(/*! ./util */ 245);\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = __webpack_require__(/*! querystring */ 246);\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/url/url.js\n// module id = 243\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/url/url.js?");
2248
2249/***/ },
2250/* 244 */
2251/*!**************************************!*\
2252 !*** ./~/url/~/punycode/punycode.js ***!
2253 \**************************************/
2254/***/ function(module, exports, __webpack_require__) {
2255
2256 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttrue\n\t) {\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t\t\treturn punycode;\n\t\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ 93)(module), (function() { return this; }())))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/url/~/punycode/punycode.js\n// module id = 244\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/url/~/punycode/punycode.js?");
2257
2258/***/ },
2259/* 245 */
2260/*!***********************!*\
2261 !*** ./~/url/util.js ***!
2262 \***********************/
2263/***/ function(module, exports) {
2264
2265 eval("'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/url/util.js\n// module id = 245\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/url/util.js?");
2266
2267/***/ },
2268/* 246 */
2269/*!********************************!*\
2270 !*** ./~/querystring/index.js ***!
2271 \********************************/
2272/***/ function(module, exports, __webpack_require__) {
2273
2274 eval("'use strict';\n\nexports.decode = exports.parse = __webpack_require__(/*! ./decode */ 247);\nexports.encode = exports.stringify = __webpack_require__(/*! ./encode */ 248);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/querystring/index.js\n// module id = 246\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/querystring/index.js?");
2275
2276/***/ },
2277/* 247 */
2278/*!*********************************!*\
2279 !*** ./~/querystring/decode.js ***!
2280 \*********************************/
2281/***/ function(module, exports) {
2282
2283 eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/querystring/decode.js\n// module id = 247\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/querystring/decode.js?");
2284
2285/***/ },
2286/* 248 */
2287/*!*********************************!*\
2288 !*** ./~/querystring/encode.js ***!
2289 \*********************************/
2290/***/ function(module, exports) {
2291
2292 eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/querystring/encode.js\n// module id = 248\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/querystring/encode.js?");
2293
2294/***/ },
2295/* 249 */
2296/*!********************************!*\
2297 !*** ./~/cbor/lib/diagnose.js ***!
2298 \********************************/
2299/***/ function(module, exports, __webpack_require__) {
2300
2301 eval("/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict'\n\nconst stream = __webpack_require__(/*! stream */ 208)\nconst util = __webpack_require__(/*! util */ 231)\nconst Decoder = __webpack_require__(/*! ./decoder */ 239)\nconst Simple = __webpack_require__(/*! ./simple */ 238)\nconst utils = __webpack_require__(/*! ./utils */ 234)\nconst constants = __webpack_require__(/*! ./constants */ 237)\nconst bignumber = __webpack_require__(/*! bignumber.js */ 236)\nconst NoFilter = __webpack_require__(/*! nofilter */ 241)\n\nconst MT = constants.MT, SYMS = constants.SYMS\n\n/**\n * Output the diagnostic format from a stream of CBOR bytes.\n *\n * @extends {stream.Transform}\n */\nclass Diagnose extends stream.Transform {\n\n /**\n * Creates an instance of Diagnose.\n *\n * @param {Object} [options={}] - options for creation\n * @param {string} [options.separator='\\n'] - output between detected objects\n * @param {bool} [options.stream_errors=false] - put error info into the\n * output stream\n * @param {number} [options.max_depth=-1] - -1 for \"until you run out of\n * memory\". Set this to a finite positive number for un-trusted inputs. Most\n * standard inputs won't nest more than 100 or so levels; I've tested into the\n * millions before running out of memory.\n */\n constructor (options) {\n options = options || {}\n const separator = (options.separator != null) ? options.separator : '\\n'\n delete options.separator\n const stream_errors = (options.stream_errors != null) ? options.stream_errors : false\n delete options.stream_errors\n options.readableObjectMode = false\n options.writableObjectMode = false\n super(options)\n\n this.float_bytes = -1\n this.separator = separator\n this.stream_errors = stream_errors\n this.parser = new Decoder(options)\n this.parser.on('more-bytes', this._on_more.bind(this))\n this.parser.on('value', this._on_value.bind(this))\n this.parser.on('start', this._on_start.bind(this))\n this.parser.on('stop', this._on_stop.bind(this))\n this.parser.on('data', this._on_data.bind(this))\n this.parser.on('error', this._on_error.bind(this))\n }\n\n _transform (fresh, encoding, cb) {\n return this.parser.write(fresh, encoding, cb)\n }\n\n _flush (cb) {\n return this.parser._flush((er) => {\n if (this.stream_errors) {\n this._on_error(er)\n return cb()\n } else {\n return cb(er)\n }\n })\n }\n\n /**\n * Convenience function to return a string in diagnostic format.\n *\n * @param {(Buffer|string)} input - the CBOR bytes to format\n * @param {string} [encoding='hex'] - the encoding of input, ignored if input is Buffer\n * @param {commentCallback} cb - callback\n * @returns {Promise} if callback not specified\n */\n static diagnose (input, encoding, cb) {\n if (input == null) {\n throw new Error('input required')\n }\n let opts = {}\n let encod = 'hex'\n switch (typeof encoding) {\n case 'function':\n cb = encoding\n encod = utils.guessEncoding(input)\n break\n case 'object':\n opts = utils.extend({}, encoding)\n encod = (opts.encoding != null) ? opts.encoding : utils.guessEncoding(input)\n delete opts.encoding\n break\n default:\n encod = (encoding != null) ? encoding : 'hex'\n }\n const bs = new NoFilter\n const d = new Diagnose(opts)\n let p = null\n if (typeof cb === 'function') {\n d.on('end', function () {\n return cb(null, bs.toString('utf8'))\n })\n d.on('error', cb)\n } else {\n p = new Promise(function (resolve, reject) {\n d.on('end', function () {\n return resolve(bs.toString('utf8'))\n })\n return d.on('error', reject)\n })\n }\n d.pipe(bs)\n d.end(input, encod)\n return p\n }\n\n _on_error (er) {\n if (this.stream_errors) {\n return this.push(er.toString())\n } else {\n return this.emit('error', er)\n }\n }\n\n _on_more (mt, len, parent_mt, pos) {\n if (mt === MT.SIMPLE_FLOAT) {\n return this.float_bytes = (function () {\n switch (len) {\n case 2:\n return 1\n case 4:\n return 2\n case 8:\n return 3\n }\n })()\n }\n }\n\n _fore (parent_mt, pos) {\n switch (parent_mt) {\n case MT.BYTE_STRING:\n case MT.UTF8_STRING:\n case MT.ARRAY:\n if (pos > 0) {\n return this.push(', ')\n }\n break\n case MT.MAP:\n if (pos > 0) {\n if (pos % 2) {\n return this.push(': ')\n } else {\n return this.push(', ')\n }\n }\n }\n }\n\n _on_value (val, parent_mt, pos) {\n if (val === SYMS.BREAK) {\n return\n }\n this._fore(parent_mt, pos)\n return this.push((function () {\n switch (false) {\n case val !== SYMS.NULL:\n return 'null'\n case val !== SYMS.UNDEFINED:\n return 'undefined'\n case typeof val !== 'string':\n return JSON.stringify(val)\n case !(this.float_bytes > 0):\n const fb = this.float_bytes\n this.float_bytes = -1\n return (util.inspect(val)) + '_' + fb\n case !Buffer.isBuffer(val):\n return \"h'\" + (val.toString('hex')) + \"'\"\n case !(val instanceof bignumber):\n return val.toString()\n default:\n return util.inspect(val)\n }\n }).call(this))\n }\n\n _on_start (mt, tag, parent_mt, pos) {\n this._fore(parent_mt, pos)\n this.push((function () {\n switch (mt) {\n case MT.TAG:\n return tag + '('\n case MT.ARRAY:\n return '['\n case MT.MAP:\n return '{'\n case MT.BYTE_STRING:\n case MT.UTF8_STRING:\n return '('\n default:\n // istanbul ignore next\n throw new Error('Unknown diagnostic type: ' + mt)\n }\n })())\n if (tag === SYMS.STREAM) {\n return this.push('_ ')\n }\n }\n\n _on_stop (mt) {\n return this.push((function () {\n switch (mt) {\n case MT.TAG:\n return ')'\n case MT.ARRAY:\n return ']'\n case MT.MAP:\n return '}'\n case MT.BYTE_STRING:\n case MT.UTF8_STRING:\n return ')'\n default:\n // istanbul ignore next\n throw new Error('Unknown diagnostic type: ' + mt)\n }\n })())\n }\n\n _on_data () {\n return this.push(this.separator)\n }\n}\n\nmodule.exports = Diagnose\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../buffer/index.js */ 29).Buffer))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cbor/lib/diagnose.js\n// module id = 249\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/cbor/lib/diagnose.js?");
2302
2303/***/ },
2304/* 250 */
2305/*!*******************************!*\
2306 !*** ./~/cbor/lib/encoder.js ***!
2307 \*******************************/
2308/***/ function(module, exports, __webpack_require__) {
2309
2310 eval("/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict'\n\nconst stream = __webpack_require__(/*! stream */ 208)\nconst url = __webpack_require__(/*! url */ 243)\nconst bignumber = __webpack_require__(/*! bignumber.js */ 236)\nconst NoFilter = __webpack_require__(/*! nofilter */ 241)\nconst Tagged = __webpack_require__(/*! ./tagged */ 242)\nconst Simple = __webpack_require__(/*! ./simple */ 238)\nconst utils = __webpack_require__(/*! ./utils */ 234)\n\nconst constants = __webpack_require__(/*! ./constants */ 237)\nconst MT = constants.MT, NUMBYTES = constants.NUMBYTES, SHIFT32 = constants.SHIFT32, SYMS = constants.SYMS, TAG = constants.TAG\nconst HALF = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.TWO\nconst FLOAT = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.FOUR\nconst DOUBLE = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.EIGHT\nconst TRUE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.TRUE\nconst FALSE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.FALSE\nconst UNDEFINED = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.UNDEFINED\nconst NULL = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.NULL\n\nconst MAXINT_BN = new bignumber('0x20000000000000')\nconst BUF_NAN = new Buffer('f97e00', 'hex')\nconst BUF_INF_NEG = new Buffer('f9fc00', 'hex')\nconst BUF_INF_POS = new Buffer('f97c00', 'hex')\n\n/**\n * Transform JavaScript values into CBOR bytes. The `Writable` side of\n * the stream is in object mode.\n *\n * @extends {stream.Transform}\n */\nclass Encoder extends stream.Transform {\n\n /**\n * Creates an instance of Encoder.\n *\n * @param {Object} [options={}] - options for the encoder\n * @param {any[]} [options.genTypes=[]] - array of pairs of `type`,\n * `function(Encoder)` for semantic types to be encoded. Not needed\n * for Array, Date, Buffer, Map, RegExp, Set, Url, or bignumber.\n * @param {boolean} [options.canonical=false] - should the output be\n * canonicalized\n */\n constructor (options) {\n options = options || {}\n options.readableObjectMode = false\n options.writableObjectMode = true\n super(options)\n\n this.canonical = options.canonical\n this.semanticTypes = [\n Array, this._pushArray,\n Date, this._pushDate,\n Buffer, this._pushBuffer,\n Map, this._pushMap,\n NoFilter, this._pushNoFilter,\n RegExp, this._pushRegexp,\n Set, this._pushSet,\n url.Url, this._pushUrl,\n bignumber, this._pushBigNumber\n ]\n\n const addTypes = options.genTypes || []\n for (let i = 0, len = addTypes.length; i < len; i += 2) {\n this.addSemanticType(addTypes[i], addTypes[i + 1])\n }\n }\n\n _transform (fresh, encoding, cb) {\n const ret = this.pushAny(fresh)\n // Old transformers might not return bool. undefined !== false\n return cb((ret === false) ? new Error('Push Error') : undefined)\n }\n\n _flush (cb) {\n return cb()\n }\n\n /**\n * @callback encodeFunction\n * @param {Encoder} encoder - the encoder to serialize into. Call \"write\"\n * on the encoder as needed.\n * @return {bool} - true on success, else false\n */\n\n /**\n * Add an encoding function to the list of supported semantic types. This is\n * useful for objects for which you can't add an encodeCBOR method\n *\n * @param {any} type\n * @param {any} fun\n * @returns {encodeFunction}\n */\n addSemanticType (type, fun) {\n for (let i = 0, len = this.semanticTypes.length; i < len; i += 2) {\n const typ = this.semanticTypes[i]\n if (typ === type) {\n const old = this.semanticTypes[i + 1]\n this.semanticTypes[i + 1] = fun\n return old\n }\n }\n this.semanticTypes.push(type, fun)\n return null\n }\n\n _pushUInt8 (val) {\n const b = new Buffer(1)\n b.writeUInt8(val)\n return this.push(b)\n }\n\n _pushUInt16BE (val) {\n const b = new Buffer(2)\n b.writeUInt16BE(val)\n return this.push(b)\n }\n\n _pushUInt32BE (val) {\n const b = new Buffer(4)\n b.writeUInt32BE(val)\n return this.push(b)\n }\n\n _pushDoubleBE (val) {\n const b = new Buffer(8)\n b.writeDoubleBE(val)\n return this.push(b)\n }\n\n _pushNaN () {\n return this.push(BUF_NAN)\n }\n\n _pushInfinity (obj) {\n const half = (obj < 0) ? BUF_INF_NEG : BUF_INF_POS\n return this.push(half)\n }\n\n _pushFloat (obj) {\n if (this.canonical) {\n // TODO: is this enough slower to hide behind canonical?\n // It's certainly enough of a hack (see utils.parseHalf)\n\n // From section 3.9:\n // If a protocol allows for IEEE floats, then additional canonicalization\n // rules might need to be added. One example rule might be to have all\n // floats start as a 64-bit float, then do a test conversion to a 32-bit\n // float; if the result is the same numeric value, use the shorter value\n // and repeat the process with a test conversion to a 16-bit float. (This\n // rule selects 16-bit float for positive and negative Infinity as well.)\n\n // which seems pretty much backwards to me.\n const b2 = new Buffer(2)\n if (utils.writeHalf(b2, obj)) {\n if (utils.parseHalf(b2) === obj) {\n return this._pushUInt8(HALF) && this.push(b2)\n }\n }\n const b4 = new Buffer(4)\n b4.writeFloatBE(obj)\n if (b4.readFloatBE() === obj) {\n return this._pushUInt8(FLOAT) && this.push(b4)\n }\n }\n\n return this._pushUInt8(DOUBLE) && this._pushDoubleBE(obj)\n }\n\n _pushInt (obj, mt, orig) {\n const m = mt << 5\n switch (false) {\n case !(obj < 24):\n return this._pushUInt8(m | obj)\n case !(obj <= 0xff):\n return this._pushUInt8(m | NUMBYTES.ONE) && this._pushUInt8(obj)\n case !(obj <= 0xffff):\n return this._pushUInt8(m | NUMBYTES.TWO) && this._pushUInt16BE(obj)\n case !(obj <= 0xffffffff):\n return this._pushUInt8(m | NUMBYTES.FOUR) && this._pushUInt32BE(obj)\n case !(obj <= Number.MAX_SAFE_INTEGER):\n return this._pushUInt8(m | NUMBYTES.EIGHT) &&\n this._pushUInt32BE(Math.floor(obj / SHIFT32)) &&\n this._pushUInt32BE(obj % SHIFT32)\n default:\n if (mt === MT.NEG_INT) {\n return this._pushFloat(orig)\n } else {\n return this._pushFloat(obj)\n }\n }\n }\n\n _pushIntNum (obj) {\n if (obj < 0) {\n return this._pushInt(-obj - 1, MT.NEG_INT, obj)\n } else {\n return this._pushInt(obj, MT.POS_INT)\n }\n }\n\n _pushNumber (obj) {\n switch (false) {\n case !isNaN(obj):\n return this._pushNaN(obj)\n case isFinite(obj):\n return this._pushInfinity(obj)\n case Math.round(obj) !== obj:\n return this._pushIntNum(obj)\n default:\n return this._pushFloat(obj)\n }\n }\n\n _pushString (obj) {\n const len = Buffer.byteLength(obj, 'utf8')\n return this._pushInt(len, MT.UTF8_STRING) && this.push(obj, 'utf8')\n }\n\n _pushBoolean (obj) {\n return this._pushUInt8(obj ? TRUE : FALSE)\n }\n\n _pushUndefined (obj) {\n return this._pushUInt8(UNDEFINED)\n }\n\n _pushNull (obj) {\n return this._pushUInt8(NULL)\n }\n\n _pushArray (gen, obj) {\n const len = obj.length\n if (!gen._pushInt(len, MT.ARRAY)) {\n return false\n }\n for (let j = 0; j < len; j++) {\n if (!gen.pushAny(obj[j])) {\n return false\n }\n }\n return true\n }\n\n _pushTag (tag) {\n return this._pushInt(tag, MT.TAG)\n }\n\n _pushDate (gen, obj) {\n return gen._pushTag(TAG.DATE_EPOCH) && gen.pushAny(obj / 1000)\n }\n\n _pushBuffer (gen, obj) {\n return gen._pushInt(obj.length, MT.BYTE_STRING) && gen.push(obj)\n }\n\n _pushNoFilter (gen, obj) {\n return gen._pushBuffer(gen, obj.slice())\n }\n\n _pushRegexp (gen, obj) {\n return gen._pushTag(TAG.REGEXP) && gen.pushAny(obj.source)\n }\n\n _pushSet (gen, obj) {\n if (!gen._pushInt(obj.size, MT.ARRAY)) {\n return false\n }\n for (let x of obj) {\n if (!gen.pushAny(x)) {\n return false\n }\n }\n return true\n }\n\n _pushUrl (gen, obj) {\n return gen._pushTag(TAG.URI) && gen.pushAny(obj.format())\n }\n\n _pushBigint (obj) {\n let tag = TAG.POS_BIGINT\n if (obj.isNegative()) {\n obj = obj.negated().minus(1)\n tag = TAG.NEG_BIGINT\n }\n let str = obj.toString(16)\n if (str.length % 2) {\n str = '0' + str\n }\n const buf = new Buffer(str, 'hex')\n return this._pushTag(tag) && this._pushBuffer(this, buf)\n }\n\n _pushBigNumber (gen, obj) {\n if (obj.isNaN()) {\n return gen._pushNaN()\n }\n if (!obj.isFinite()) {\n return gen._pushInfinity(obj.isNegative() ? -Infinity : Infinity)\n }\n if (obj.isInteger()) {\n return gen._pushBigint(obj)\n }\n if (!(gen._pushTag(TAG.DECIMAL_FRAC) &&\n gen._pushInt(2, MT.ARRAY))) {\n return false\n }\n\n const dec = obj.decimalPlaces()\n const slide = obj.mul(new bignumber(10).pow(dec))\n if (!gen._pushIntNum(-dec)) {\n return false\n }\n if (slide.abs().lessThan(MAXINT_BN)) {\n return gen._pushIntNum(slide.toNumber())\n } else {\n return gen._pushBigint(slide)\n }\n }\n\n _pushMap (gen, obj) {\n if (!gen._pushInt(obj.size, MT.MAP)) {\n return false\n }\n // memoizing the cbor only helps in certain cases, and hurts in most\n // others. Just avoid it.\n if (gen.canonical) {\n // keep the key/value pairs together, so we don't have to do odd\n // gets with object keys later\n const entries = []\n // iterator. If we drop support for node4, use ...\n for (const e of obj.entries()) {\n entries.push(e)\n }\n entries.sort((a,b) => {\n // a, b are both entries of [key, value]\n const a_cbor = Encoder.encode(a[0])\n const b_cbor = Encoder.encode(b[0])\n return a_cbor.compare(b_cbor)\n })\n for (const kv of entries) {\n if (!(gen.pushAny(kv[0]) && gen.pushAny(kv[1]))) {\n return false\n }\n }\n } else {\n for (const kv of obj) {\n if (!(gen.pushAny(kv[0]) && gen.pushAny(kv[1]))) {\n return false\n }\n }\n }\n return true\n }\n\n _pushObject (obj) {\n if (!obj) {\n return this._pushNull(obj)\n }\n for (let i = 0, len1 = this.semanticTypes.length; i < len1; i += 2) {\n const typ = this.semanticTypes[i]\n if (obj instanceof typ) {\n return this.semanticTypes[i + 1].call(obj, this, obj)\n }\n }\n const f = obj.encodeCBOR\n if (typeof f === 'function') {\n return f.call(obj, this)\n }\n const keys = Object.keys(obj)\n const cbor_keys = {}\n if (this.canonical) {\n // note: this can't be a normal sort, because 'b' needs to sort before\n // 'aa'\n keys.sort((a, b) => {\n // Always strings, so don't bother to pass options.\n // hold on to the cbor versions, since there's no need\n // to encode more than once\n const a_cbor = cbor_keys[a] || (cbor_keys[a] = Encoder.encode(a))\n const b_cbor = cbor_keys[b] || (cbor_keys[b] = Encoder.encode(b))\n\n return a_cbor.compare(b_cbor)\n })\n }\n if (!this._pushInt(keys.length, MT.MAP)) {\n return false\n }\n let ck\n for (let j = 0, len2 = keys.length; j < len2; j++) {\n const k = keys[j]\n if (this.canonical && ((ck = cbor_keys[k]))) {\n if (!this.push(ck)) { // already a Buffer\n return false\n }\n } else {\n if (!this._pushString(k)) {\n return false\n }\n }\n if (!this.pushAny(obj[k])) {\n return false\n }\n }\n\n return true\n }\n\n /**\n * Push any supported type onto the encoded stream\n *\n * @param {any} obj\n * @returns {boolean} true on success\n */\n pushAny (obj) {\n switch (typeof obj) {\n case 'number':\n return this._pushNumber(obj)\n case 'string':\n return this._pushString(obj)\n case 'boolean':\n return this._pushBoolean(obj)\n case 'undefined':\n return this._pushUndefined(obj)\n case 'object':\n return this._pushObject(obj)\n case 'symbol':\n switch (obj) {\n case SYMS.NULL:\n return this._pushNull(null)\n case SYMS.UNDEFINED:\n return this._pushUndefined(void 0)\n // TODO: Add pluggable support for other symbols\n default:\n throw new Error('Unknown symbol: ' + obj.toString())\n }\n default:\n throw new Error('Unknown type: ' + typeof obj + ', ' + (!!obj ? obj.toString() : ''))\n }\n }\n\n /* backwards-compat wrapper */\n _pushAny (obj) {\n // TODO: write deprecation warning\n return this.pushAny(obj)\n }\n\n /**\n * Encode one or more JavaScript objects, and return a Buffer containing the\n * CBOR bytes.\n *\n * @param {...any} objs - the objects to encode\n * @returns {Buffer} - the encoded objects\n */\n static encode () {\n const objs = Array.prototype.slice.apply(arguments)\n const enc = new Encoder()\n const bs = new NoFilter()\n enc.pipe(bs)\n for (let o of objs) {\n if (typeof o === 'undefined') {\n enc._pushUndefined()\n } else if (o === null) {\n enc._pushNull(null)\n } else {\n enc.write(o)\n }\n }\n enc.end()\n return bs.read()\n }\n}\n\nmodule.exports = Encoder\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../buffer/index.js */ 29).Buffer))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/cbor/lib/encoder.js\n// module id = 250\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/cbor/lib/encoder.js?");
2311
2312/***/ },
2313/* 251 */
2314/*!**********************************!*\
2315 !*** ./~/tweetnacl/nacl-fast.js ***!
2316 \**********************************/
2317/***/ function(module, exports, __webpack_require__) {
2318
2319 eval("(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n mlen = -1;\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (true) {\n // Node.js.\n crypto = __webpack_require__(/*! crypto */ 252);\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/tweetnacl/nacl-fast.js\n// module id = 251\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/tweetnacl/nacl-fast.js?");
2320
2321/***/ },
2322/* 252 */
2323/*!************************!*\
2324 !*** crypto (ignored) ***!
2325 \************************/
2326/***/ function(module, exports) {
2327
2328 eval("/* (ignored) */\n\n//////////////////\n// WEBPACK FOOTER\n// crypto (ignored)\n// module id = 252\n// module chunks = 0 1\n//# sourceURL=webpack:///crypto_(ignored)?");
2329
2330/***/ },
2331/* 253 */
2332/*!***********************************!*\
2333 !*** ./~/when/monitor/console.js ***!
2334 \***********************************/
2335/***/ function(module, exports, __webpack_require__) {
2336
2337 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require) {\n\n\tvar monitor = __webpack_require__(/*! ../monitor */ 254);\n\tvar Promise = __webpack_require__(/*! ../when */ 156).Promise;\n\n\treturn monitor(Promise);\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/monitor/console.js\n// module id = 253\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/monitor/console.js?");
2338
2339/***/ },
2340/* 254 */
2341/*!***************************!*\
2342 !*** ./~/when/monitor.js ***!
2343 \***************************/
2344/***/ function(module, exports, __webpack_require__) {
2345
2346 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require) {\n\n\tvar PromiseMonitor = __webpack_require__(/*! ./monitor/PromiseMonitor */ 255);\n\tvar ConsoleReporter = __webpack_require__(/*! ./monitor/ConsoleReporter */ 257);\n\n\tvar promiseMonitor = new PromiseMonitor(new ConsoleReporter());\n\n\treturn function(Promise) {\n\t\treturn promiseMonitor.monitor(Promise);\n\t};\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/monitor.js\n// module id = 254\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/monitor.js?");
2347
2348/***/ },
2349/* 255 */
2350/*!******************************************!*\
2351 !*** ./~/when/monitor/PromiseMonitor.js ***!
2352 \******************************************/
2353/***/ function(module, exports, __webpack_require__) {
2354
2355 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require) {\n\n\tvar defaultStackJumpSeparator = 'from execution context:';\n\tvar defaultStackFilter = /[\\s\\(\\/\\\\](node|module|timers)\\.js:|when([\\/\\\\]{1,2}(lib|monitor|es6-shim)[\\/\\\\]{1,2}|\\.js)|(new\\sPromise)\\b|(\\b(PromiseMonitor|ConsoleReporter|Scheduler|RunHandlerTask|ProgressTask|Promise|.*Handler)\\.[\\w_]\\w\\w+\\b)|\\b(tryCatch\\w+|getHandler\\w*)\\b/i;\n\n\tvar setTimer = __webpack_require__(/*! ../lib/env */ 158).setTimer;\n\tvar error = __webpack_require__(/*! ./error */ 256);\n\n\tvar executionContext = [];\n\n\tfunction PromiseMonitor(reporter) {\n\t\tthis.logDelay = 0;\n\t\tthis.stackFilter = defaultStackFilter;\n\t\tthis.stackJumpSeparator = defaultStackJumpSeparator;\n\t\tthis.filterDuplicateFrames = true;\n\n\t\tthis._reporter = reporter;\n\t\tif(typeof reporter.configurePromiseMonitor === 'function') {\n\t\t\treporter.configurePromiseMonitor(this);\n\t\t}\n\n\t\tthis._traces = [];\n\t\tthis._traceTask = 0;\n\n\t\tvar self = this;\n\t\tthis._doLogTraces = function() {\n\t\t\tself._logTraces();\n\t\t};\n\t}\n\n\tPromiseMonitor.prototype.monitor = function(Promise) {\n\t\tvar self = this;\n\t\tPromise.createContext = function(p, context) {\n\t\t\tp.context = self.createContext(p, context);\n\t\t};\n\n\t\tPromise.enterContext = function(p) {\n\t\t\texecutionContext.push(p.context);\n\t\t};\n\n\t\tPromise.exitContext = function() {\n\t\t\texecutionContext.pop();\n\t\t};\n\n\t\tPromise.onPotentiallyUnhandledRejection = function(rejection, extraContext) {\n\t\t\treturn self.addTrace(rejection, extraContext);\n\t\t};\n\n\t\tPromise.onPotentiallyUnhandledRejectionHandled = function(rejection) {\n\t\t\treturn self.removeTrace(rejection);\n\t\t};\n\n\t\tPromise.onFatalRejection = function(rejection, extraContext) {\n\t\t\treturn self.fatal(rejection, extraContext);\n\t\t};\n\n\t\treturn this;\n\t};\n\n\tPromiseMonitor.prototype.createContext = function(at, parentContext) {\n\t\tvar context = {\n\t\t\tparent: parentContext || executionContext[executionContext.length - 1],\n\t\t\tstack: void 0\n\t\t};\n\t\terror.captureStack(context, at.constructor);\n\t\treturn context;\n\t};\n\n\tPromiseMonitor.prototype.addTrace = function(handler, extraContext) {\n\t\tvar t, i;\n\n\t\tfor(i = this._traces.length-1; i >= 0; --i) {\n\t\t\tt = this._traces[i];\n\t\t\tif(t.handler === handler) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(i >= 0) {\n\t\t\tt.extraContext = extraContext;\n\t\t} else {\n\t\t\tthis._traces.push({\n\t\t\t\thandler: handler,\n\t\t\t\textraContext: extraContext\n\t\t\t});\n\t\t}\n\n\t\tthis.logTraces();\n\t};\n\n\tPromiseMonitor.prototype.removeTrace = function(/*handler*/) {\n\t\tthis.logTraces();\n\t};\n\n\tPromiseMonitor.prototype.fatal = function(handler, extraContext) {\n\t\tvar err = new Error();\n\t\terr.stack = this._createLongTrace(handler.value, handler.context, extraContext).join('\\n');\n\t\tsetTimer(function() {\n\t\t\tthrow err;\n\t\t}, 0);\n\t};\n\n\tPromiseMonitor.prototype.logTraces = function() {\n\t\tif(!this._traceTask) {\n\t\t\tthis._traceTask = setTimer(this._doLogTraces, this.logDelay);\n\t\t}\n\t};\n\n\tPromiseMonitor.prototype._logTraces = function() {\n\t\tthis._traceTask = void 0;\n\t\tthis._traces = this._traces.filter(filterHandled);\n\t\tthis._reporter.log(this.formatTraces(this._traces));\n\t};\n\n\n\tPromiseMonitor.prototype.formatTraces = function(traces) {\n\t\treturn traces.map(function(t) {\n\t\t\treturn this._createLongTrace(t.handler.value, t.handler.context, t.extraContext);\n\t\t}, this);\n\t};\n\n\tPromiseMonitor.prototype._createLongTrace = function(e, context, extraContext) {\n\t\tvar trace = error.parse(e) || [String(e) + ' (WARNING: non-Error used)'];\n\t\ttrace = filterFrames(this.stackFilter, trace, 0);\n\t\tthis._appendContext(trace, context);\n\t\tthis._appendContext(trace, extraContext);\n\t\treturn this.filterDuplicateFrames ? this._removeDuplicates(trace) : trace;\n\t};\n\n\tPromiseMonitor.prototype._removeDuplicates = function(trace) {\n\t\tvar seen = {};\n\t\tvar sep = this.stackJumpSeparator;\n\t\tvar count = 0;\n\t\treturn trace.reduceRight(function(deduped, line, i) {\n\t\t\tif(i === 0) {\n\t\t\t\tdeduped.unshift(line);\n\t\t\t} else if(line === sep) {\n\t\t\t\tif(count > 0) {\n\t\t\t\t\tdeduped.unshift(line);\n\t\t\t\t\tcount = 0;\n\t\t\t\t}\n\t\t\t} else if(!seen[line]) {\n\t\t\t\tseen[line] = true;\n\t\t\t\tdeduped.unshift(line);\n\t\t\t\t++count;\n\t\t\t}\n\t\t\treturn deduped;\n\t\t}, []);\n\t};\n\n\tPromiseMonitor.prototype._appendContext = function(trace, context) {\n\t\ttrace.push.apply(trace, this._createTrace(context));\n\t};\n\n\tPromiseMonitor.prototype._createTrace = function(traceChain) {\n\t\tvar trace = [];\n\t\tvar stack;\n\n\t\twhile(traceChain) {\n\t\t\tstack = error.parse(traceChain);\n\n\t\t\tif (stack) {\n\t\t\t\tstack = filterFrames(this.stackFilter, stack);\n\t\t\t\tappendStack(trace, stack, this.stackJumpSeparator);\n\t\t\t}\n\n\t\t\ttraceChain = traceChain.parent;\n\t\t}\n\n\t\treturn trace;\n\t};\n\n\tfunction appendStack(trace, stack, separator) {\n\t\tif (stack.length > 1) {\n\t\t\tstack[0] = separator;\n\t\t\ttrace.push.apply(trace, stack);\n\t\t}\n\t}\n\n\tfunction filterFrames(stackFilter, stack) {\n\t\treturn stack.filter(function(frame) {\n\t\t\treturn !stackFilter.test(frame);\n\t\t});\n\t}\n\n\tfunction filterHandled(t) {\n\t\treturn !t.handler.handled;\n\t}\n\n\treturn PromiseMonitor;\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/monitor/PromiseMonitor.js\n// module id = 255\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/monitor/PromiseMonitor.js?");
2356
2357/***/ },
2358/* 256 */
2359/*!*********************************!*\
2360 !*** ./~/when/monitor/error.js ***!
2361 \*********************************/
2362/***/ function(module, exports, __webpack_require__) {
2363
2364 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n\tvar parse, captureStack, format;\n\n\tif(Error.captureStackTrace) {\n\t\t// Use Error.captureStackTrace if available\n\t\tparse = function(e) {\n\t\t\treturn e && e.stack && e.stack.split('\\n');\n\t\t};\n\n\t\tformat = formatAsString;\n\t\tcaptureStack = Error.captureStackTrace;\n\n\t} else {\n\t\t// Otherwise, do minimal feature detection to determine\n\t\t// how to capture and format reasonable stacks.\n\t\tparse = function(e) {\n\t\t\tvar stack = e && e.stack && e.stack.split('\\n');\n\t\t\tif(stack && e.message) {\n\t\t\t\tstack.unshift(e.message);\n\t\t\t}\n\t\t\treturn stack;\n\t\t};\n\n\t\t(function() {\n\t\t\tvar e = new Error();\n\t\t\tif(typeof e.stack !== 'string') {\n\t\t\t\tformat = formatAsString;\n\t\t\t\tcaptureStack = captureSpiderMonkeyStack;\n\t\t\t} else {\n\t\t\t\tformat = formatAsErrorWithStack;\n\t\t\t\tcaptureStack = useStackDirectly;\n\t\t\t}\n\t\t}());\n\t}\n\n\tfunction captureSpiderMonkeyStack(host) {\n\t\ttry {\n\t\t\tthrow new Error();\n\t\t} catch(err) {\n\t\t\thost.stack = err.stack;\n\t\t}\n\t}\n\n\tfunction useStackDirectly(host) {\n\t\thost.stack = new Error().stack;\n\t}\n\n\tfunction formatAsString(longTrace) {\n\t\treturn join(longTrace);\n\t}\n\n\tfunction formatAsErrorWithStack(longTrace) {\n\t\tvar e = new Error();\n\t\te.stack = formatAsString(longTrace);\n\t\treturn e;\n\t}\n\n\t// About 5-10x faster than String.prototype.join o_O\n\tfunction join(a) {\n\t\tvar sep = false;\n\t\tvar s = '';\n\t\tfor(var i=0; i< a.length; ++i) {\n\t\t\tif(sep) {\n\t\t\t\ts += '\\n' + a[i];\n\t\t\t} else {\n\t\t\t\ts+= a[i];\n\t\t\t\tsep = true;\n\t\t\t}\n\t\t}\n\t\treturn s;\n\t}\n\n\treturn {\n\t\tparse: parse,\n\t\tformat: format,\n\t\tcaptureStack: captureStack\n\t};\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/monitor/error.js\n// module id = 256\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/monitor/error.js?");
2365
2366/***/ },
2367/* 257 */
2368/*!*******************************************!*\
2369 !*** ./~/when/monitor/ConsoleReporter.js ***!
2370 \*******************************************/
2371/***/ function(module, exports, __webpack_require__) {
2372
2373 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require) {\n\n\tvar error = __webpack_require__(/*! ./error */ 256);\n\tvar unhandledRejectionsMsg = '[promises] Unhandled rejections: ';\n\tvar allHandledMsg = '[promises] All previously unhandled rejections have now been handled';\n\n\tfunction ConsoleReporter() {\n\t\tthis._previouslyReported = false;\n\t}\n\n\tConsoleReporter.prototype = initDefaultLogging();\n\n\tConsoleReporter.prototype.log = function(traces) {\n\t\tif(traces.length === 0) {\n\t\t\tif(this._previouslyReported) {\n\t\t\t\tthis._previouslyReported = false;\n\t\t\t\tthis.msg(allHandledMsg);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis._previouslyReported = true;\n\t\tthis.groupStart(unhandledRejectionsMsg + traces.length);\n\t\ttry {\n\t\t\tthis._log(traces);\n\t\t} finally {\n\t\t\tthis.groupEnd();\n\t\t}\n\t};\n\n\tConsoleReporter.prototype._log = function(traces) {\n\t\tfor(var i=0; i<traces.length; ++i) {\n\t\t\tthis.warn(error.format(traces[i]));\n\t\t}\n\t};\n\n\tfunction initDefaultLogging() {\n\t\t/*jshint maxcomplexity:7*/\n\t\tvar log, warn, groupStart, groupEnd;\n\n\t\tif(typeof console === 'undefined') {\n\t\t\tlog = warn = consoleNotAvailable;\n\t\t} else {\n\t\t\t// Alias console to prevent things like uglify's drop_console option from\n\t\t\t// removing console.log/error. Unhandled rejections fall into the same\n\t\t\t// category as uncaught exceptions, and build tools shouldn't silence them.\n\t\t\tvar localConsole = console;\n\t\t\tif(typeof localConsole.error === 'function'\n\t\t\t\t&& typeof localConsole.dir === 'function') {\n\t\t\t\twarn = function(s) {\n\t\t\t\t\tlocalConsole.error(s);\n\t\t\t\t};\n\n\t\t\t\tlog = function(s) {\n\t\t\t\t\tlocalConsole.log(s);\n\t\t\t\t};\n\n\t\t\t\tif(typeof localConsole.groupCollapsed === 'function') {\n\t\t\t\t\tgroupStart = function(s) {\n\t\t\t\t\t\tlocalConsole.groupCollapsed(s);\n\t\t\t\t\t};\n\t\t\t\t\tgroupEnd = function() {\n\t\t\t\t\t\tlocalConsole.groupEnd();\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// IE8 has console.log and JSON, so we can make a\n\t\t\t\t// reasonably useful warn() from those.\n\t\t\t\t// Credit to webpro (https://github.com/webpro) for this idea\n\t\t\t\t// typeof localConsole.log will return 'object' in IE8, so can't test it with === 'function'\n\t\t\t\t// Since this is more of a corner case for IE8, I'm ok to check it with !== 'undefined' to reduce complexity\n\t\t\t\tif (typeof localConsole.log !== 'undefined' && typeof JSON !== 'undefined') {\n\t\t\t\t\tlog = warn = function(x) {\n\t\t\t\t\t\tif (typeof x !== 'string') {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tx = JSON.stringify(x);\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlocalConsole.log(x);\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tlog = warn = consoleNotAvailable;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tmsg: log,\n\t\t\twarn: warn,\n\t\t\tgroupStart: groupStart || warn,\n\t\t\tgroupEnd: groupEnd || consoleNotAvailable\n\t\t};\n\t}\n\n\tfunction consoleNotAvailable() {}\n\n\treturn ConsoleReporter;\n\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/monitor/ConsoleReporter.js\n// module id = 257\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/monitor/ConsoleReporter.js?");
2374
2375/***/ },
2376/* 258 */
2377/*!********************************!*\
2378 !*** ./~/autobahn/lib/util.js ***!
2379 \********************************/
2380/***/ function(module, exports, __webpack_require__) {
2381
2382 eval("/* WEBPACK VAR INJECTION */(function(global) {///////////////////////////////////////////////////////////////////////////////\n//\n// AutobahnJS - http://autobahn.ws, http://wamp.ws\n//\n// A JavaScript library for WAMP (\"The Web Application Messaging Protocol\").\n//\n// Copyright (c) Crossbar.io Technologies GmbH and contributors\n//\n// Licensed under the MIT License.\n// http://www.opensource.org/licenses/mit-license.php\n//\n///////////////////////////////////////////////////////////////////////////////\n\nvar log = __webpack_require__(/*! ./log.js */ 259);\n\nvar when = __webpack_require__(/*! when */ 156);\n\n\n/// Convert base64 string to array of bytes.\nfunction _atob (s) {\n if (s) {\n return new Uint8Array(atob(s).split(\"\").map(function(c) { return c.charCodeAt(0); }));\n } else {\n return null;\n }\n}\n\nexports.atob = _atob\n\n\n/// Convert array of bytes to base64 string.\nfunction _btoa (b) {\n if (b) {\n return btoa(String.fromCharCode.apply(null, b));\n } else {\n return null;\n }\n}\n\nexports.btoa = _btoa\n\n\n/// Convert array of bytes to hex string.\nfunction _btoh (bytes) {\n if (bytes) {\n var res = '';\n for (var i = 0; i < bytes.length; ++i) {\n res += ('0' + (bytes[i] & 0xFF).toString(16)).slice(-2);\n }\n return res;\n } else {\n return null;\n }\n}\n\nexports.btoh = _btoh\n\n\n/// Convert hex string to array of bytes.\nfunction _htob (hex) {\n if (hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('Expected input to be a string')\n }\n\n if ((hex.length % 2) !== 0) {\n throw new RangeError('Expected string to be an even number of characters')\n }\n\n var view = new Uint8Array(hex.length / 2)\n\n for (var i = 0; i < hex.length; i += 2) {\n view[i / 2] = parseInt(hex.substring(i, i + 2), 16)\n }\n\n return view\n } else {\n return null;\n }\n}\n\nexports.htob = _htob\n\n\nvar rand_normal = function (mean, sd) {\n // Derive a Gaussian from Uniform random variables\n // http://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform\n var x1, x2, rad;\n\n do {\n x1 = 2 * Math.random() - 1;\n x2 = 2 * Math.random() - 1;\n rad = x1 * x1 + x2 * x2;\n } while (rad >= 1 || rad == 0);\n\n var c = Math.sqrt(-2 * Math.log(rad) / rad);\n\n return (mean || 0) + (x1 * c) * (sd || 1);\n};\n\n\n\nvar assert = function (cond, text) {\n\tif (cond) {\n return;\n }\n\tif (assert.useDebugger || ('AUTOBAHN_DEBUG' in global && AUTOBAHN_DEBUG)) {\n debugger;\n }\n\n\tthrow new Error(text || \"Assertion failed!\");\n};\n\n\n\n// Helper to do HTTP/POST requests returning deferreds. This function is\n// supposed to work on IE8, IE9 and old Android WebKit browsers. We don't care\n// if it works with other browsers.\n//\nvar http_post = function (url, data, timeout) {\n\n log.debug(\"new http_post request\", url, data, timeout);\n\n var d = when.defer();\n var req = new XMLHttpRequest();\n req.withCredentials = true; // pass along cookies\n req.onreadystatechange = function () {\n\n if (req.readyState === 4) {\n\n // Normalize IE's response to HTTP 204 when Win error 1223.\n // http://stackoverflow.com/a/10047236/884770\n //\n var status = (req.status === 1223) ? 204 : req.status;\n\n if (status === 200) {\n\n // response with content\n //\n d.resolve(req.responseText);\n\n } if (status === 204) {\n\n // empty response\n //\n d.resolve();\n\n } else {\n\n // anything else is a fail\n //\n var statusText = null;\n try {\n statusText = req.statusText;\n } catch (e) {\n // IE8 fucks up on this\n }\n d.reject({code: status, text: statusText});\n }\n }\n }\n\n req.open(\"POST\", url, true);\n req.setRequestHeader(\"Content-type\", \"application/json; charset=utf-8\");\n\n if (timeout > 0) {\n req.timeout = timeout; // request timeout in ms\n\n req.ontimeout = function () {\n d.reject({code: 501, text: \"request timeout\"});\n }\n }\n\n if (data) {\n req.send(data);\n } else {\n req.send();\n }\n\n if (d.promise.then) {\n // whenjs has the actual user promise in an attribute\n return d.promise;\n } else {\n return d;\n }\n};\n\n/**\n * Merge a list of objects from left to right\n *\n * For each object passed to the function, add to the previous object the keys\n * that are present in the former but not the latter. If the last argument\n * is a boolean, it sets whether or not to recursively merge objects.\n *\n * This function mutates the first passed object. To avopid this, you can pass\n * a new empty object as the first arg:\n *\n * defaults({}, obj1, obj2, ...)\n *\n * @example\n * defaults({ a: 1 }, { a: 2, b: 2 }, { b: 3, c: 3 })\n * // { a: 1, b: 2, c: 3 }\n *\n * defaults({ a: { k1: 1 } }, { a: { k2: 2 } })\n * // { a: { k1: 1 } }\n *\n * defaults({ a: { k1: 1 } }, { a: { k2: 2 } })\n * // { a: { k1: 1 } }\n *\n * @param {Object} base The object to merge defaults to\n * @param {Object} source[, ...] The default values source\n * @param {Boolean} [recursive] Whether to recurse fro object values*\n * (default: false)\n * @returns {Object} The mutated `base` object\n */\nvar defaults = function () {\n // Return an empty object if no arguments are passed\n if (arguments.length === 0) return {};\n\n var base = arguments[0];\n var recursive = false;\n var len = arguments.length;\n\n // Check for recursive mode param\n if (typeof arguments[len - 1] === 'boolean') {\n recursive = arguments[len - 1];\n len -= 1; // Ignore the last arg\n }\n\n // Merging function used by Array#forEach()\n var do_merge = function (key) {\n var val = obj[key];\n\n // Set if unset\n if (!(key in base)) {\n base[key] = val;\n // If the value is an object and we use recursive mode, use defaults on\n // the value\n } else if (recursive && typeof val === 'object' &&\n typeof base[key] === 'object') {\n defaults(base[key], val);\n }\n // Otherwise ignore the value\n };\n\n // Iterate over source objects\n for (var i=1; i < len; i++) {\n var obj = arguments[i];\n\n // Ignore falsy values\n if (!obj) continue;\n\n // Require object\n if (typeof obj !== 'object') {\n throw new Error('Expected argument at index ' + i +\n ' to be an object');\n }\n\n // Merge keys\n Object.keys(obj).forEach(do_merge);\n }\n\n // Return the mutated base object\n return base;\n};\n\n\nexports.rand_normal = rand_normal;\nexports.assert = assert;\nexports.http_post = http_post;\nexports.defaults = defaults;\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/util.js\n// module id = 258\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/util.js?");
2383
2384/***/ },
2385/* 259 */
2386/*!*******************************!*\
2387 !*** ./~/autobahn/lib/log.js ***!
2388 \*******************************/
2389/***/ function(module, exports) {
2390
2391 eval("/* WEBPACK VAR INJECTION */(function(global) {///////////////////////////////////////////////////////////////////////////////\n//\n// AutobahnJS - http://autobahn.ws, http://wamp.ws\n//\n// A JavaScript library for WAMP (\"The Web Application Messaging Protocol\").\n//\n// Copyright (c) Crossbar.io Technologies GmbH and contributors\n//\n// Licensed under the MIT License.\n// http://www.opensource.org/licenses/mit-license.php\n//\n///////////////////////////////////////////////////////////////////////////////\n\n\nvar debug = function () {};\n\nif ('AUTOBAHN_DEBUG' in global && AUTOBAHN_DEBUG && 'console' in global) {\n debug = function () {\n console.log.apply(console, arguments);\n }\n}\n\nvar warn = console.warn;\n\nexports.debug = debug;\nexports.warn = warn;\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/log.js\n// module id = 259\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/log.js?");
2392
2393/***/ },
2394/* 260 */
2395/*!***********************************!*\
2396 !*** ./~/autobahn/lib/session.js ***!
2397 \***********************************/
2398/***/ function(module, exports, __webpack_require__) {
2399
2400 eval("/* WEBPACK VAR INJECTION */(function(global) {///////////////////////////////////////////////////////////////////////////////\n//\n// AutobahnJS - http://autobahn.ws, http://wamp.ws\n//\n// A JavaScript library for WAMP (\"The Web Application Messaging Protocol\").\n//\n// Copyright (c) Crossbar.io Technologies GmbH and contributors\n//\n// Licensed under the MIT License.\n// http://www.opensource.org/licenses/mit-license.php\n//\n///////////////////////////////////////////////////////////////////////////////\n\n// require('assert') would be nice .. but it does not\n// work with Google Closure after Browserify\n\nvar when = __webpack_require__(/*! when */ 156);\nvar when_fn = __webpack_require__(/*! when/function */ 261);\n\nvar log = __webpack_require__(/*! ./log.js */ 259);\nvar util = __webpack_require__(/*! ./util.js */ 258);\n\n// IE fallback (http://afuchs.tumblr.com/post/23550124774/date-now-in-ie8)\nDate.now = Date.now || function() { return +new Date; };\n\n\n// WAMP \"Advanced Profile\" support in AutobahnJS per role\n//\nvar WAMP_FEATURES = {\n caller: {\n features: {\n caller_identification: true,\n //call_timeout: true,\n //call_canceling: true,\n progressive_call_results: true\n }\n },\n callee: {\n features: {\n caller_identification: true,\n //call_trustlevels: true,\n pattern_based_registration: true,\n shared_registration: true,\n //call_timeout: true,\n //call_canceling: true,\n progressive_call_results: true,\n registration_revocation: true\n }\n },\n publisher: {\n features: {\n publisher_identification: true,\n subscriber_blackwhite_listing: true,\n publisher_exclusion: true\n }\n },\n subscriber: {\n features: {\n publisher_identification: true,\n //publication_trustlevels: true,\n pattern_based_subscription: true,\n subscription_revocation: true\n //event_history: true,\n }\n }\n};\n\n\nvar Invocation = function (procedure,\n progress,\n caller,\n caller_authid,\n caller_authrole) {\n\n var self = this;\n\n self.procedure = procedure;\n self.progress = progress;\n self.caller = caller;\n self.caller_authid = caller_authid;\n self.caller_authrole = caller_authrole;\n};\n\n\nvar Event = function (publication,\n topic,\n publisher,\n publisher_authid,\n publisher_authrole,\n retained) {\n\n var self = this;\n\n self.publication = publication;\n self.topic = topic;\n self.publisher = publisher;\n self.publisher_authid = publisher_authid;\n self.publisher_authrole = publisher_authrole;\n self.retained = retained;\n};\n\n\nvar Result = function (args, kwargs) {\n\n var self = this;\n\n self.args = args || [];\n self.kwargs = kwargs || {};\n};\n\n\nvar Error = function (error, args, kwargs) {\n\n var self = this;\n\n self.error = error;\n self.args = args || [];\n self.kwargs = kwargs || {};\n};\n\n\nvar Subscription = function (topic, handler, options, session, id) {\n\n var self = this;\n\n self.topic = topic;\n self.handler = handler;\n self.options = options || {};\n self.session = session;\n self.id = id;\n\n self.active = true;\n\n // this will fire when the handler is unsubscribed\n self._on_unsubscribe = session._defer();\n\n if (self._on_unsubscribe.promise.then) {\n // whenjs has the actual user promise in an attribute\n self.on_unsubscribe = self._on_unsubscribe.promise;\n } else {\n self.on_unsubscribe = self._on_unsubscribe;\n }\n};\n\n\nSubscription.prototype.unsubscribe = function () {\n\n var self = this;\n return self.session.unsubscribe(self);\n};\n\n\nvar Registration = function (procedure, endpoint, options, session, id) {\n\n var self = this;\n\n self.procedure = procedure;\n self.endpoint = endpoint;\n self.options = options || {};\n self.session = session;\n self.id = id;\n\n self.active = true;\n\n // this will fire when the endpoint is unregistered\n self._on_unregister = session._defer();\n\n if (self._on_unregister.promise.then) {\n // whenjs has the actual user promise in an attribute\n self.on_unregister = self._on_unregister.promise;\n } else {\n self.on_unregister = self._on_unregister;\n }\n};\n\n\nRegistration.prototype.unregister = function () {\n\n var self = this;\n return self.session.unregister(self);\n};\n\n\nvar Publication = function (id) {\n\n var self = this;\n self.id = id;\n};\n\n\nvar MSG_TYPE = {\n HELLO: 1,\n WELCOME: 2,\n ABORT: 3,\n CHALLENGE: 4,\n AUTHENTICATE: 5,\n GOODBYE: 6,\n HEARTBEAT: 7,\n ERROR: 8,\n PUBLISH: 16,\n PUBLISHED: 17,\n SUBSCRIBE: 32,\n SUBSCRIBED: 33,\n UNSUBSCRIBE: 34,\n UNSUBSCRIBED: 35,\n EVENT: 36,\n CALL: 48,\n CANCEL: 49,\n RESULT: 50,\n REGISTER: 64,\n REGISTERED: 65,\n UNREGISTER: 66,\n UNREGISTERED: 67,\n INVOCATION: 68,\n INTERRUPT: 69,\n YIELD: 70\n};\n\n\n\nvar Session = function (socket, defer, onchallenge) {\n\n var self = this;\n\n // the transport connection (WebSocket object)\n self._socket = socket;\n\n // the Deferred factory to use\n self._defer = defer;\n\n // the WAMP authentication challenge handler\n self._onchallenge = onchallenge;\n\n // the WAMP session ID\n self._id = null;\n\n // the WAMP realm joined\n self._realm = null;\n\n // the WAMP features in use\n self._features = null;\n\n // closing state\n self._goodbye_sent = false;\n self._transport_is_closing = false;\n\n // outstanding requests;\n self._publish_reqs = {};\n self._subscribe_reqs = {};\n self._unsubscribe_reqs = {};\n self._call_reqs = {};\n self._register_reqs = {};\n self._unregister_reqs = {};\n\n // subscriptions in place;\n self._subscriptions = {};\n\n // registrations in place;\n self._registrations = {};\n\n // incoming invocations;\n self._invocations = {};\n\n // prefix shortcuts for URIs\n self._prefixes = {};\n\n // the defaults for 'disclose_me'\n self._caller_disclose_me = false;\n self._publisher_disclose_me = false;\n\n self._send_wamp = function (msg) {\n log.debug(msg);\n // forward WAMP message to be sent to WAMP transport\n self._socket.send(msg);\n };\n\n\n self._protocol_violation = function (reason) {\n log.warn(\"failing transport due to protocol violation: \" + reason);\n self._socket.close(1002, \"protocol violation: \" + reason);\n };\n\n self._MESSAGE_MAP = {};\n self._MESSAGE_MAP[MSG_TYPE.ERROR] = {};\n\n\n self._process_SUBSCRIBED = function (msg) {\n //\n // process SUBSCRIBED reply to SUBSCRIBE\n //\n var request = msg[1];\n var subscription = msg[2];\n\n if (request in self._subscribe_reqs) {\n\n var r = self._subscribe_reqs[request];\n\n var d = r[0];\n var topic = r[1];\n var handler = r[2];\n var options = r[3];\n\n if (!(subscription in self._subscriptions)) {\n self._subscriptions[subscription] = [];\n }\n var sub = new Subscription(topic, handler, options, self, subscription);\n self._subscriptions[subscription].push(sub);\n\n d.resolve(sub);\n\n delete self._subscribe_reqs[request];\n\n } else {\n self._protocol_violation(\"SUBSCRIBED received for non-pending request ID \" + request);\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.SUBSCRIBED] = self._process_SUBSCRIBED;\n\n\n self._process_SUBSCRIBE_ERROR = function (msg) {\n //\n // process ERROR reply to SUBSCRIBE\n //\n var request = msg[2];\n if (request in self._subscribe_reqs) {\n\n var details = msg[3];\n var error = new Error(msg[4], msg[5], msg[6]);\n\n var r = self._subscribe_reqs[request];\n\n var d = r[0];\n\n d.reject(error);\n\n delete self._subscribe_reqs[request];\n\n } else {\n self._protocol_violation(\"SUBSCRIBE-ERROR received for non-pending request ID \" + request);\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.ERROR][MSG_TYPE.SUBSCRIBE] = self._process_SUBSCRIBE_ERROR;\n\n\n self._process_UNSUBSCRIBED = function (msg) {\n //\n // process UNSUBSCRIBED reply to UNSUBSCRIBE\n //\n var request = msg[1];\n\n if (request in self._unsubscribe_reqs) {\n\n var r = self._unsubscribe_reqs[request];\n\n var d = r[0];\n var subscription_id = r[1];\n\n if (subscription_id in self._subscriptions) {\n var subs = self._subscriptions[subscription_id];\n // the following should actually be NOP, since UNSUBSCRIBE was\n // only sent when subs got empty\n for (var i = 0; i < subs.length; ++i) {\n subs[i].active = false;\n subs[i].on_unsubscribe.resolve();\n }\n delete self._subscriptions[subscription_id];\n }\n\n d.resolve(true);\n\n delete self._unsubscribe_reqs[request];\n\n } else {\n\n if (request === 0) {\n\n // router actively revoked our subscription\n //\n var details = msg[2];\n var subscription_id = details.subscription;\n var reason = details.reason;\n\n if (subscription_id in self._subscriptions) {\n var subs = self._subscriptions[subscription_id];\n for (var i = 0; i < subs.length; ++i) {\n subs[i].active = false;\n subs[i]._on_unsubscribe.resolve(reason);\n }\n delete self._subscriptions[subscription_id];\n } else {\n self._protocol_violation(\"non-voluntary UNSUBSCRIBED received for non-existing subscription ID \" + subscription_id);\n }\n\n } else {\n self._protocol_violation(\"UNSUBSCRIBED received for non-pending request ID \" + request);\n }\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.UNSUBSCRIBED] = self._process_UNSUBSCRIBED;\n\n\n self._process_UNSUBSCRIBE_ERROR = function (msg) {\n //\n // process ERROR reply to UNSUBSCRIBE\n //\n var request = msg[2];\n if (request in self._unsubscribe_reqs) {\n\n var details = msg[3];\n var error = new Error(msg[4], msg[5], msg[6]);\n\n var r = self._unsubscribe_reqs[request];\n\n var d = r[0];\n var subscription = r[1];\n\n d.reject(error);\n\n delete self._unsubscribe_reqs[request];\n\n } else {\n self._protocol_violation(\"UNSUBSCRIBE-ERROR received for non-pending request ID \" + request);\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.ERROR][MSG_TYPE.UNSUBSCRIBE] = self._process_UNSUBSCRIBE_ERROR;\n\n\n self._process_PUBLISHED = function (msg) {\n //\n // process PUBLISHED reply to PUBLISH\n //\n var request = msg[1];\n var publication = msg[2];\n\n if (request in self._publish_reqs) {\n\n var r = self._publish_reqs[request];\n\n var d = r[0];\n var options = r[1];\n\n var pub = new Publication(publication);\n d.resolve(pub);\n\n delete self._publish_reqs[request];\n\n } else {\n self._protocol_violation(\"PUBLISHED received for non-pending request ID \" + request);\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.PUBLISHED] = self._process_PUBLISHED;\n\n\n self._process_PUBLISH_ERROR = function (msg) {\n //\n // process ERROR reply to PUBLISH\n //\n var request = msg[2];\n if (request in self._publish_reqs) {\n\n var details = msg[3];\n var error = new Error(msg[4], msg[5], msg[6]);\n\n var r = self._publish_reqs[request];\n\n var d = r[0];\n var options = r[1];\n\n d.reject(error);\n\n delete self._publish_reqs[request];\n\n } else {\n self._protocol_violation(\"PUBLISH-ERROR received for non-pending request ID \" + request);\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.ERROR][MSG_TYPE.PUBLISH] = self._process_PUBLISH_ERROR;\n\n\n self._process_EVENT = function (msg) {\n //\n // process EVENT message\n //\n // [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list, PUBLISH.ArgumentsKw|dict]\n\n var subscription = msg[1];\n\n if (subscription in self._subscriptions) {\n\n var publication = msg[2];\n var details = msg[3];\n\n var args = msg[4] || [];\n var kwargs = msg[5] || {};\n\n var subs = self._subscriptions[subscription];\n\n // we want to provide the subscription topic to the handler, and may need to get this\n // from one of the subscription handler objects attached to the subscription\n // since for non-pattern subscriptions this is not sent over the wire\n var ed = new Event(publication,\n details.topic || (subs[0] && subs[0].topic),\n details.publisher,\n details.publisher_authid,\n details.publisher_authrole,\n details.retained || false\n );\n\n for (var i = 0; i < subs.length; ++i) {\n var sub = subs[i];\n try {\n sub.handler(args, kwargs, ed, sub);\n } catch (e) {\n log.debug(\"Exception raised in event handler\", e);\n }\n }\n\n } else {\n self._protocol_violation(\"EVENT received for non-subscribed subscription ID \" + subscription);\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.EVENT] = self._process_EVENT;\n\n\n self._process_REGISTERED = function (msg) {\n //\n // process REGISTERED reply to REGISTER\n //\n var request = msg[1];\n var registration = msg[2];\n\n if (request in self._register_reqs) {\n\n var r = self._register_reqs[request];\n\n var d = r[0];\n var procedure = r[1];\n var endpoint = r[2];\n var options = r[3];\n\n var reg = new Registration(procedure, endpoint, options, self, registration);\n\n self._registrations[registration] = reg;\n\n d.resolve(reg);\n\n delete self._register_reqs[request];\n\n } else {\n self._protocol_violation(\"REGISTERED received for non-pending request ID \" + request);\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.REGISTERED] = self._process_REGISTERED;\n\n\n self._process_REGISTER_ERROR = function (msg) {\n //\n // process ERROR reply to REGISTER\n //\n var request = msg[2];\n if (request in self._register_reqs) {\n\n var details = msg[3];\n var error = new Error(msg[4], msg[5], msg[6]);\n\n var r = self._register_reqs[request];\n\n var d = r[0];\n\n d.reject(error);\n\n delete self._register_reqs[request];\n\n } else {\n self._protocol_violation(\"REGISTER-ERROR received for non-pending request ID \" + request);\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.ERROR][MSG_TYPE.REGISTER] = self._process_REGISTER_ERROR;\n\n\n self._process_UNREGISTERED = function (msg) {\n //\n // process UNREGISTERED reply to UNREGISTER\n //\n var request = msg[1];\n\n if (request in self._unregister_reqs) {\n\n var r = self._unregister_reqs[request];\n\n var d = r[0];\n var registration = r[1];\n\n if (registration.id in self._registrations) {\n delete self._registrations[registration.id];\n }\n\n registration.active = false;\n d.resolve();\n\n delete self._unregister_reqs[request];\n\n } else {\n\n if (request === 0) {\n\n // the router actively revoked our registration\n //\n var details = msg[2];\n var registration_id = details.registration;\n var reason = details.reason;\n\n if (registration_id in self._registrations) {\n var registration = self._registrations[registration_id];\n registration.active = false;\n registration._on_unregister.resolve(reason);\n delete self._registrations[registration_id];\n } else {\n self._protocol_violation(\"non-voluntary UNREGISTERED received for non-existing registration ID \" + registration_id);\n }\n\n } else {\n self._protocol_violation(\"UNREGISTERED received for non-pending request ID \" + request);\n }\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.UNREGISTERED] = self._process_UNREGISTERED;\n\n\n self._process_UNREGISTER_ERROR = function (msg) {\n //\n // process ERROR reply to UNREGISTER\n //\n var request = msg[2];\n if (request in self._unregister_reqs) {\n\n var details = msg[3];\n var error = new Error(msg[4], msg[5], msg[6]);\n\n var r = self._unregister_reqs[request];\n\n var d = r[0];\n var registration = r[1];\n\n d.reject(error);\n\n delete self._unregister_reqs[request];\n\n } else {\n self._protocol_violation(\"UNREGISTER-ERROR received for non-pending request ID \" + request);\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.ERROR][MSG_TYPE.UNREGISTER] = self._process_UNREGISTER_ERROR;\n\n\n self._process_RESULT = function (msg) {\n //\n // process RESULT reply to CALL\n //\n var request = msg[1];\n if (request in self._call_reqs) {\n\n var details = msg[2];\n\n var args = msg[3] || [];\n var kwargs = msg[4] || {};\n\n // maybe wrap complex result:\n var result = null;\n if (args.length > 1 || Object.keys(kwargs).length > 0) {\n // wrap complex result is more than 1 positional result OR\n // non-empty keyword result\n result = new Result(args, kwargs);\n } else if (args.length > 0) {\n // single positional result\n result = args[0];\n }\n\n var r = self._call_reqs[request];\n\n var d = r[0];\n var options = r[1];\n\n if (details.progress) {\n if (options && options.receive_progress) {\n d.notify(result);\n }\n } else {\n d.resolve(result);\n delete self._call_reqs[request];\n }\n } else {\n self._protocol_violation(\"CALL-RESULT received for non-pending request ID \" + request);\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.RESULT] = self._process_RESULT;\n\n\n self._process_CALL_ERROR = function (msg) {\n //\n // process ERROR reply to CALL\n //\n var request = msg[2];\n if (request in self._call_reqs) {\n\n var details = msg[3];\n var error = new Error(msg[4], msg[5], msg[6]);\n\n var r = self._call_reqs[request];\n\n var d = r[0];\n var options = r[1];\n\n d.reject(error);\n\n delete self._call_reqs[request];\n\n } else {\n self._protocol_violation(\"CALL-ERROR received for non-pending request ID \" + request);\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.ERROR][MSG_TYPE.CALL] = self._process_CALL_ERROR;\n\n\n self._process_INVOCATION = function (msg) {\n //\n // process INVOCATION message\n //\n // [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list, CALL.ArgumentsKw|dict]\n //\n var request = msg[1];\n var registration = msg[2];\n\n var details = msg[3];\n // receive_progress\n // timeout\n // caller\n\n if (registration in self._registrations) {\n\n var reg = self._registrations[registration];\n\n var args = msg[4] || [];\n var kwargs = msg[5] || {};\n\n // create progress function for invocation\n //\n var progress = null;\n if (details.receive_progress) {\n\n progress = function (args, kwargs) {\n var progress_msg = [MSG_TYPE.YIELD, request, {progress: true}];\n\n args = args || [];\n kwargs = kwargs || {};\n\n var kwargs_len = Object.keys(kwargs).length;\n if (args.length || kwargs_len) {\n progress_msg.push(args);\n if (kwargs_len) {\n progress_msg.push(kwargs);\n }\n }\n self._send_wamp(progress_msg);\n }\n };\n\n // we want to provide the regitration procedure to the handler and may\n // need to get this from the registration object attached to the registration\n // since for non-pattern registrations this is not sent over the wire\n var cd = new Invocation(details.procedure || reg.procedure,\n progress,\n details.caller,\n details.caller_authid,\n details.caller_authrole\n );\n\n // We use the following whenjs call wrapper, which automatically\n // wraps a plain, non-promise value in a (immediately resolved) promise\n //\n // See: https://github.com/cujojs/when/blob/master/docs/api.md#fncall\n //\n when_fn.call(reg.endpoint, args, kwargs, cd).then(\n\n function (res) {\n // construct YIELD message\n // FIXME: Options\n //\n var reply = [MSG_TYPE.YIELD, request, {}];\n\n if (res instanceof Result) {\n var kwargs_len = Object.keys(res.kwargs).length;\n if (res.args.length || kwargs_len) {\n reply.push(res.args);\n if (kwargs_len) {\n reply.push(res.kwargs);\n }\n }\n } else {\n reply.push([res]);\n }\n\n // send WAMP message\n //\n self._send_wamp(reply);\n },\n\n function (err) {\n // construct ERROR message\n // [ERROR, REQUEST.Type|int, REQUEST.Request|id, Details|dict, Error|uri, Arguments|list, ArgumentsKw|dict]\n\n var reply = [MSG_TYPE.ERROR, MSG_TYPE.INVOCATION, request, {}];\n\n if (err instanceof Error) {\n\n reply.push(err.error);\n\n var kwargs_len = Object.keys(err.kwargs).length;\n if (err.args.length || kwargs_len) {\n reply.push(err.args);\n if (kwargs_len) {\n reply.push(err.kwargs);\n }\n }\n } else {\n reply.push('wamp.error.runtime_error');\n reply.push([err]);\n }\n\n // send WAMP message\n //\n self._send_wamp(reply);\n }\n );\n\n } else {\n self._protocol_violation(\"INVOCATION received for non-registered registration ID \" + request);\n }\n };\n self._MESSAGE_MAP[MSG_TYPE.INVOCATION] = self._process_INVOCATION;\n\n\n // callback fired by WAMP transport on receiving a WAMP message\n //\n self._socket.onmessage = function (msg) {\n\n var msg_type = msg[0];\n\n // WAMP session not yet open\n //\n if (!self._id) {\n\n // the first message must be WELCOME, ABORT or CHALLENGE ..\n //\n if (msg_type === MSG_TYPE.WELCOME) {\n\n self._id = msg[1];\n\n // determine actual set of advanced features that can be used\n //\n var rf = msg[2];\n self._features = {};\n\n if (rf.roles.broker) {\n // \"Basic Profile\" is mandatory\n self._features.subscriber = {};\n self._features.publisher = {};\n\n // fill in features that both peers support\n if (rf.roles.broker.features) {\n\n for (var att in WAMP_FEATURES.publisher.features) {\n self._features.publisher[att] = WAMP_FEATURES.publisher.features[att] &&\n rf.roles.broker.features[att];\n }\n\n for (var att in WAMP_FEATURES.subscriber.features) {\n self._features.subscriber[att] = WAMP_FEATURES.subscriber.features[att] &&\n rf.roles.broker.features[att];\n }\n }\n }\n\n if (rf.roles.dealer) {\n // \"Basic Profile\" is mandatory\n self._features.caller = {};\n self._features.callee = {};\n\n // fill in features that both peers support\n if (rf.roles.dealer.features) {\n\n for (var att in WAMP_FEATURES.caller.features) {\n self._features.caller[att] = WAMP_FEATURES.caller.features[att] &&\n rf.roles.dealer.features[att];\n }\n\n for (var att in WAMP_FEATURES.callee.features) {\n self._features.callee[att] = WAMP_FEATURES.callee.features[att] &&\n rf.roles.dealer.features[att];\n }\n }\n }\n\n if (self.onjoin) {\n self.onjoin(msg[2]);\n }\n\n } else if (msg_type === MSG_TYPE.ABORT) {\n\n var details = msg[1];\n var reason = msg[2];\n\n if (self.onleave) {\n self.onleave(reason, details);\n }\n\n } else if (msg_type === MSG_TYPE.CHALLENGE) {\n\n if (self._onchallenge) {\n\n var method = msg[1];\n var extra = msg[2];\n\n when_fn.call(self._onchallenge, self, method, extra).then(\n function (signature) {\n var msg = [MSG_TYPE.AUTHENTICATE, signature, {}];\n self._send_wamp(msg);\n },\n function (err) {\n log.debug(\"onchallenge() raised:\", err);\n\n var msg = [MSG_TYPE.ABORT, {message: \"sorry, I cannot authenticate (onchallenge handler raised an exception)\"}, \"wamp.error.cannot_authenticate\"];\n self._send_wamp(msg);\n self._socket.close(1000);\n }\n );\n } else {\n log.debug(\"received WAMP challenge, but no onchallenge() handler set\");\n\n var msg = [MSG_TYPE.ABORT, {message: \"sorry, I cannot authenticate (no onchallenge handler set)\"}, \"wamp.error.cannot_authenticate\"];\n self._send_wamp(msg);\n self._socket.close(1000);\n }\n\n } else {\n self._protocol_violation(\"unexpected message type \" + msg_type);\n }\n\n // WAMP session is open\n //\n } else {\n\n if (msg_type === MSG_TYPE.GOODBYE) {\n\n if (!self._goodbye_sent) {\n\n var reply = [MSG_TYPE.GOODBYE, {}, \"wamp.error.goodbye_and_out\"];\n self._send_wamp(reply);\n }\n\n self._id = null;\n self._realm = null;\n self._features = null;\n\n var details = msg[1];\n var reason = msg[2];\n\n if (self.onleave) {\n self.onleave(reason, details);\n }\n\n } else {\n\n if (msg_type === MSG_TYPE.ERROR) {\n\n var request_type = msg[1];\n if (request_type in self._MESSAGE_MAP[MSG_TYPE.ERROR]) {\n\n self._MESSAGE_MAP[msg_type][request_type](msg);\n\n } else {\n\n self._protocol_violation(\"unexpected ERROR message with request_type \" + request_type);\n }\n\n } else {\n\n if (msg_type in self._MESSAGE_MAP) {\n\n self._MESSAGE_MAP[msg_type](msg);\n\n } else {\n\n self._protocol_violation(\"unexpected message type \" + msg_type);\n }\n }\n }\n }\n };\n\n // session object constructed .. track creation time\n //\n if ('performance' in global && 'now' in performance) {\n self._created = performance.now();\n } else {\n self._created = Date.now();\n }\n};\n\n\nObject.defineProperty(Session.prototype, \"defer\", {\n get: function () {\n return this._defer;\n }\n});\n\n\nObject.defineProperty(Session.prototype, \"id\", {\n get: function () {\n return this._id;\n }\n});\n\n\nObject.defineProperty(Session.prototype, \"realm\", {\n get: function () {\n return this._realm;\n }\n});\n\n\nObject.defineProperty(Session.prototype, \"isOpen\", {\n get: function () {\n return this.id !== null;\n }\n});\n\n\nObject.defineProperty(Session.prototype, \"features\", {\n get: function () {\n return this._features;\n }\n});\n\n\nObject.defineProperty(Session.prototype, \"caller_disclose_me\", {\n get: function () {\n return this._caller_disclose_me;\n },\n set: function (newValue) {\n this._caller_disclose_me = newValue;\n }\n});\n\n\nObject.defineProperty(Session.prototype, \"publisher_disclose_me\", {\n get: function () {\n return this._publisher_disclose_me;\n },\n set: function (newValue) {\n this._publisher_disclose_me = newValue;\n }\n});\n\n\nObject.defineProperty(Session.prototype, \"subscriptions\", {\n get: function () {\n var keys = Object.keys(this._subscriptions);\n var vals = [];\n for (var i = 0; i < keys.length; ++i) {\n vals.push(this._subscriptions[keys[i]]);\n }\n return vals;\n }\n});\n\n\nObject.defineProperty(Session.prototype, \"registrations\", {\n get: function () {\n var keys = Object.keys(this._registrations);\n var vals = [];\n for (var i = 0; i < keys.length; ++i) {\n vals.push(this._registrations[keys[i]]);\n }\n return vals;\n }\n});\n\n\nSession.prototype.log = function () {\n var self = this;\n\n if ('console' in global) {\n\n var header = null;\n if (self._id && self._created) {\n\n var now = null;\n if ('performance' in global && 'now' in performance) {\n now = performance.now() - self._created;\n } else {\n now = Date.now() - self._created;\n }\n\n header = \"WAMP session \" + self._id + \" on '\" + self._realm + \"' at \" + Math.round(now * 1000) / 1000 + \" ms\";\n } else {\n header = \"WAMP session\";\n }\n\n if ('group' in console) {\n console.group(header);\n for (var i = 0; i < arguments.length; i += 1) {\n console.log(arguments[i]);\n }\n console.groupEnd();\n } else {\n var items = [header + \": \"];\n for (var i = 0; i < arguments.length; i += 1) {\n items.push(arguments[i]);\n }\n console.log.apply(console, items);\n }\n }\n};\n\n\nSession.prototype.join = function (realm, authmethods, authid, authextra) {\n\n util.assert(!realm || typeof realm === 'string', \"Session.join: <realm> must be a string\");\n util.assert(!authmethods || Array.isArray(authmethods), \"Session.join: <authmethods> must be an array []\");\n util.assert(!authid || typeof authid === 'string', \"Session.join: <authid> must be a string\");\n\n var self = this;\n\n if (self.isOpen) {\n throw \"session already open\";\n }\n\n self._goodbye_sent = false;\n self._realm = realm;\n\n var details = {};\n details.roles = WAMP_FEATURES;\n\n if (authmethods) {\n details.authmethods = authmethods;\n }\n if (authid) {\n details.authid = authid;\n }\n if (authextra) {\n details.authextra = authextra;\n }\n\n var msg = [MSG_TYPE.HELLO, realm, details];\n self._send_wamp(msg);\n};\n\n\nSession.prototype.leave = function (reason, message) {\n\n util.assert(!reason || typeof reason === 'string', \"Session.leave: <reason> must be a string\");\n util.assert(!message || typeof message === 'string', \"Session.leave: <message> must be a string\");\n\n var self = this;\n\n if (!self.isOpen) {\n throw \"session not open\";\n }\n\n if (!reason) {\n reason = \"wamp.close.normal\";\n }\n\n var details = {};\n if (message) {\n details.message = message;\n }\n\n var msg = [MSG_TYPE.GOODBYE, details, reason];\n self._send_wamp(msg);\n self._goodbye_sent = true;\n};\n\n\nSession.prototype.call = function (procedure, args, kwargs, options) {\n\n util.assert(typeof procedure === 'string', \"Session.call: <procedure> must be a string\");\n util.assert(!args || Array.isArray(args), \"Session.call: <args> must be an array []\");\n util.assert(!kwargs || kwargs instanceof Object, \"Session.call: <kwargs> must be an object {}\");\n util.assert(!options || options instanceof Object, \"Session.call: <options> must be an object {}\");\n\n var self = this;\n\n if (!self.isOpen) {\n throw \"session not open\";\n }\n\n options = options || {};\n\n // only set option if user hasn't set a value and global option is \"on\"\n if (options.disclose_me === undefined && self._caller_disclose_me) {\n options.disclose_me = true;\n }\n\n // create and remember new CALL request\n //\n var d = self._defer();\n var request = self._socket.serializer.newid();\n self._call_reqs[request] = [d, options];\n\n // construct CALL message\n //\n var msg = [MSG_TYPE.CALL, request, options, self.resolve(procedure)];\n if (args) {\n msg.push(args);\n if (kwargs) {\n msg.push(kwargs);\n }\n } else if (kwargs) {\n msg.push([]);\n msg.push(kwargs);\n }\n\n // send WAMP message\n //\n self._send_wamp(msg);\n\n if (d.promise.then) {\n // whenjs has the actual user promise in an attribute\n return d.promise;\n } else {\n return d;\n }\n};\n\n\nSession.prototype.publish = function (topic, args, kwargs, options) {\n\n util.assert(typeof topic === 'string', \"Session.publish: <topic> must be a string\");\n util.assert(!args || Array.isArray(args), \"Session.publish: <args> must be an array []\");\n util.assert(!kwargs || kwargs instanceof Object, \"Session.publish: <kwargs> must be an object {}\");\n util.assert(!options || options instanceof Object, \"Session.publish: <options> must be an object {}\");\n\n var self = this;\n\n if (!self.isOpen) {\n throw \"session not open\";\n }\n\n options = options || {};\n\n // only set option if user hasn't set a value and global option is \"on\"\n if (options.disclose_me === undefined && self._publisher_disclose_me) {\n options.disclose_me = true;\n }\n\n // create and remember new PUBLISH request\n //\n var d = null;\n var request = self._socket.serializer.newid();\n if (options.acknowledge) {\n d = self._defer();\n self._publish_reqs[request] = [d, options];\n }\n\n // construct PUBLISH message\n //\n var msg = [MSG_TYPE.PUBLISH, request, options, self.resolve(topic)];\n if (args) {\n msg.push(args);\n if (kwargs) {\n msg.push(kwargs);\n }\n } else if (kwargs) {\n msg.push([]);\n msg.push(kwargs);\n }\n\n // send WAMP message\n //\n self._send_wamp(msg);\n\n if (d) {\n if (d.promise.then) {\n // whenjs has the actual user promise in an attribute\n return d.promise;\n } else {\n return d;\n }\n }\n};\n\n\nSession.prototype.subscribe = function (topic, handler, options) {\n\n util.assert(typeof topic === 'string', \"Session.subscribe: <topic> must be a string\");\n util.assert(typeof handler === 'function', \"Session.subscribe: <handler> must be a function\");\n util.assert(!options || options instanceof Object, \"Session.subscribe: <options> must be an object {}\");\n\n var self = this;\n\n if (!self.isOpen) {\n throw \"session not open\";\n }\n\n // create an remember new SUBSCRIBE request\n //\n var request = self._socket.serializer.newid();\n var d = self._defer();\n self._subscribe_reqs[request] = [d, topic, handler, options];\n\n // construct SUBSCRIBE message\n //\n var msg = [MSG_TYPE.SUBSCRIBE, request];\n if (options) {\n msg.push(options);\n } else {\n msg.push({});\n }\n msg.push(self.resolve(topic));\n\n // send WAMP message\n //\n self._send_wamp(msg);\n\n if (d.promise.then) {\n // whenjs has the actual user promise in an attribute\n return d.promise;\n } else {\n return d;\n }\n};\n\n\nSession.prototype.register = function (procedure, endpoint, options) {\n\n util.assert(typeof procedure === 'string', \"Session.register: <procedure> must be a string\");\n util.assert(typeof endpoint === 'function', \"Session.register: <endpoint> must be a function\");\n util.assert(!options || options instanceof Object, \"Session.register: <options> must be an object {}\");\n\n var self = this;\n\n if (!self.isOpen) {\n throw \"session not open\";\n }\n\n // create an remember new REGISTER request\n //\n var request = self._socket.serializer.newid();\n var d = self._defer();\n self._register_reqs[request] = [d, procedure, endpoint, options];\n\n // construct REGISTER message\n //\n var msg = [MSG_TYPE.REGISTER, request];\n if (options) {\n msg.push(options);\n } else {\n msg.push({});\n }\n msg.push(self.resolve(procedure));\n\n // send WAMP message\n //\n self._send_wamp(msg);\n\n if (d.promise.then) {\n // whenjs has the actual user promise in an attribute\n return d.promise;\n } else {\n return d;\n }\n};\n\n\nSession.prototype.unsubscribe = function (subscription) {\n\n util.assert(subscription instanceof Subscription, \"Session.unsubscribe: <subscription> must be an instance of class autobahn.Subscription\");\n\n var self = this;\n\n if (!self.isOpen) {\n throw \"session not open\";\n }\n\n if (!subscription.active || !(subscription.id in self._subscriptions)) {\n throw \"subscription not active\";\n }\n\n var subs = self._subscriptions[subscription.id];\n var i = subs.indexOf(subscription);\n\n if (i === -1) {\n throw \"subscription not active\";\n }\n\n // remove handler subscription\n subs.splice(i, 1);\n subscription.active = false;\n\n var d = self._defer();\n\n if (subs.length) {\n // there are still handlers on the subscription ..\n d.resolve(false);\n\n } else {\n\n // no handlers left ..\n\n // create and remember new UNSUBSCRIBE request\n //\n var request = self._socket.serializer.newid();\n self._unsubscribe_reqs[request] = [d, subscription.id];\n\n // construct UNSUBSCRIBE message\n //\n var msg = [MSG_TYPE.UNSUBSCRIBE, request, subscription.id];\n\n // send WAMP message\n //\n self._send_wamp(msg);\n }\n\n if (d.promise.then) {\n // whenjs has the actual user promise in an attribute\n return d.promise;\n } else {\n return d;\n }\n};\n\n\nSession.prototype.unregister = function (registration) {\n\n util.assert(registration instanceof Registration, \"Session.unregister: <registration> must be an instance of class autobahn.Registration\");\n\n var self = this;\n\n if (!self.isOpen) {\n throw \"session not open\";\n }\n\n if (!registration.active || !(registration.id in self._registrations)) {\n throw \"registration not active\";\n }\n\n // create and remember new UNREGISTER request\n //\n var request = self._socket.serializer.newid();\n var d = self._defer();\n self._unregister_reqs[request] = [d, registration];\n\n // construct UNREGISTER message\n //\n var msg = [MSG_TYPE.UNREGISTER, request, registration.id];\n\n // send WAMP message\n //\n self._send_wamp(msg);\n\n if (d.promise.then) {\n // whenjs has the actual user promise in an attribute\n return d.promise;\n } else {\n return d;\n }\n};\n\n\nSession.prototype.prefix = function (prefix, uri) {\n\n util.assert(typeof prefix === 'string', \"Session.prefix: <prefix> must be a string\");\n util.assert(!uri || typeof uri === 'string', \"Session.prefix: <uri> must be a string or falsy\");\n\n var self = this;\n\n if (uri) {\n self._prefixes[prefix] = uri;\n } else {\n if (prefix in self._prefixes) {\n delete self._prefixes[prefix];\n }\n }\n};\n\n\nSession.prototype.resolve = function (curie) {\n\n util.assert(typeof curie === 'string', \"Session.resolve: <curie> must be a string\");\n\n var self = this;\n\n // skip if not a CURIE\n var i = curie.indexOf(\":\");\n if (i >= 0) {\n var prefix = curie.substring(0, i);\n if (prefix in self._prefixes) {\n return self._prefixes[prefix] + '.' + curie.substring(i + 1);\n } else {\n return curie;\n }\n } else {\n return curie;\n }\n};\n\n\nexports.Session = Session;\n\nexports.Invocation = Invocation;\nexports.Event = Event;\nexports.Result = Result;\nexports.Error = Error;\nexports.Subscription = Subscription;\nexports.Registration = Registration;\nexports.Publication = Publication;\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/session.js\n// module id = 260\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/session.js?");
2401
2402/***/ },
2403/* 261 */
2404/*!****************************!*\
2405 !*** ./~/when/function.js ***!
2406 \****************************/
2407/***/ function(module, exports, __webpack_require__) {
2408
2409 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2013-2014 original author or authors */\n\n/**\n * Collection of helper functions for wrapping and executing 'traditional'\n * synchronous functions in a promise interface.\n *\n * @author Brian Cavalier\n * @contributor Renato Zannon\n */\n\n(function(define) {\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require) {\n\n\tvar when = __webpack_require__(/*! ./when */ 156);\n\tvar attempt = when['try'];\n\tvar _liftAll = __webpack_require__(/*! ./lib/liftAll */ 262);\n\tvar _apply = __webpack_require__(/*! ./lib/apply */ 164)(when.Promise);\n\tvar slice = Array.prototype.slice;\n\n\treturn {\n\t\tlift: lift,\n\t\tliftAll: liftAll,\n\t\tcall: attempt,\n\t\tapply: apply,\n\t\tcompose: compose\n\t};\n\n\t/**\n\t * Takes a function and an optional array of arguments (that might be promises),\n\t * and calls the function. The return value is a promise whose resolution\n\t * depends on the value returned by the function.\n\t * @param {function} f function to be called\n\t * @param {Array} [args] array of arguments to func\n\t * @returns {Promise} promise for the return value of func\n\t */\n\tfunction apply(f, args) {\n\t\t// slice args just in case the caller passed an Arguments instance\n\t\treturn _apply(f, this, args == null ? [] : slice.call(args));\n\t}\n\n\t/**\n\t * Takes a 'regular' function and returns a version of that function that\n\t * returns a promise instead of a plain value, and handles thrown errors by\n\t * returning a rejected promise. Also accepts a list of arguments to be\n\t * prepended to the new function, as does Function.prototype.bind.\n\t *\n\t * The resulting function is promise-aware, in the sense that it accepts\n\t * promise arguments, and waits for their resolution.\n\t * @param {Function} f function to be bound\n\t * @param {...*} [args] arguments to be prepended for the new function @deprecated\n\t * @returns {Function} a promise-returning function\n\t */\n\tfunction lift(f /*, args... */) {\n\t\tvar args = arguments.length > 1 ? slice.call(arguments, 1) : [];\n\t\treturn function() {\n\t\t\treturn _apply(f, this, args.concat(slice.call(arguments)));\n\t\t};\n\t}\n\n\t/**\n\t * Lift all the functions/methods on src\n\t * @param {object|function} src source whose functions will be lifted\n\t * @param {function?} combine optional function for customizing the lifting\n\t * process. It is passed dst, the lifted function, and the property name of\n\t * the original function on src.\n\t * @param {(object|function)?} dst option destination host onto which to place lifted\n\t * functions. If not provided, liftAll returns a new object.\n\t * @returns {*} If dst is provided, returns dst with lifted functions as\n\t * properties. If dst not provided, returns a new object with lifted functions.\n\t */\n\tfunction liftAll(src, combine, dst) {\n\t\treturn _liftAll(lift, combine, dst, src);\n\t}\n\n\t/**\n\t * Composes multiple functions by piping their return values. It is\n\t * transparent to whether the functions return 'regular' values or promises:\n\t * the piped argument is always a resolved value. If one of the functions\n\t * throws or returns a rejected promise, the composed promise will be also\n\t * rejected.\n\t *\n\t * The arguments (or promises to arguments) given to the returned function (if\n\t * any), are passed directly to the first function on the 'pipeline'.\n\t * @param {Function} f the function to which the arguments will be passed\n\t * @param {...Function} [funcs] functions that will be composed, in order\n\t * @returns {Function} a promise-returning composition of the functions\n\t */\n\tfunction compose(f /*, funcs... */) {\n\t\tvar funcs = slice.call(arguments, 1);\n\n\t\treturn function() {\n\t\t\tvar thisArg = this;\n\t\t\tvar args = slice.call(arguments);\n\t\t\tvar firstPromise = attempt.apply(thisArg, [f].concat(args));\n\n\t\t\treturn when.reduce(funcs, function(arg, func) {\n\t\t\t\treturn func.call(thisArg, arg);\n\t\t\t}, firstPromise);\n\t\t};\n\t}\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n})(__webpack_require__(/*! !webpack amd define */ 160));\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/function.js\n// module id = 261\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/function.js?");
2410
2411/***/ },
2412/* 262 */
2413/*!*******************************!*\
2414 !*** ./~/when/lib/liftAll.js ***!
2415 \*******************************/
2416/***/ function(module, exports, __webpack_require__) {
2417
2418 eval("var __WEBPACK_AMD_DEFINE_RESULT__;/** @license MIT License (c) copyright 2010-2014 original author or authors */\n/** @author Brian Cavalier */\n/** @author John Hann */\n\n(function(define) { 'use strict';\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n\treturn function liftAll(liftOne, combine, dst, src) {\n\t\tif(typeof combine === 'undefined') {\n\t\t\tcombine = defaultCombine;\n\t\t}\n\n\t\treturn Object.keys(src).reduce(function(dst, key) {\n\t\t\tvar f = src[key];\n\t\t\treturn typeof f === 'function' ? combine(dst, liftOne(f), key) : dst;\n\t\t}, typeof dst === 'undefined' ? defaultDst(src) : dst);\n\t};\n\n\tfunction defaultCombine(o, f, k) {\n\t\to[k] = f;\n\t\treturn o;\n\t}\n\n\tfunction defaultDst(src) {\n\t\treturn typeof src === 'function' ? src.bind() : Object.create(src);\n\t}\n}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}(__webpack_require__(/*! !webpack amd define */ 160)));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/when/lib/liftAll.js\n// module id = 262\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/when/lib/liftAll.js?");
2419
2420/***/ },
2421/* 263 */
2422/*!**************************************!*\
2423 !*** ./~/autobahn/lib/connection.js ***!
2424 \**************************************/
2425/***/ function(module, exports, __webpack_require__) {
2426
2427 eval("/* WEBPACK VAR INJECTION */(function(global) {///////////////////////////////////////////////////////////////////////////////\n//\n// AutobahnJS - http://autobahn.ws, http://wamp.ws\n//\n// A JavaScript library for WAMP (\"The Web Application Messaging Protocol\").\n//\n// Copyright (c) Crossbar.io Technologies GmbH and contributors\n//\n// Licensed under the MIT License.\n// http://www.opensource.org/licenses/mit-license.php\n//\n///////////////////////////////////////////////////////////////////////////////\n\nvar when = __webpack_require__(/*! when */ 156);\n\nvar session = __webpack_require__(/*! ./session.js */ 260);\nvar util = __webpack_require__(/*! ./util.js */ 258);\nvar log = __webpack_require__(/*! ./log.js */ 259);\nvar autobahn = __webpack_require__(/*! ./autobahn.js */ 146);\n\n\nvar Connection = function (options) {\n\n var self = this;\n\n self._options = options;\n\n\n // Deferred factory\n //\n if (options && options.use_es6_promises) {\n\n if ('Promise' in global) {\n // ES6-based deferred factory\n //\n self._defer = function () {\n var deferred = {};\n\n deferred.promise = new Promise(function (resolve, reject) {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n\n return deferred;\n };\n } else {\n\n log.debug(\"Warning: ES6 promises requested, but not found! Falling back to whenjs.\");\n\n // whenjs-based deferred factory\n //\n self._defer = when.defer;\n }\n\n } else if (options && options.use_deferred) {\n\n // use explicit deferred factory, e.g. jQuery.Deferred or Q.defer\n //\n self._defer = options.use_deferred;\n\n } else {\n\n // whenjs-based deferred factory\n //\n self._defer = when.defer;\n }\n\n\n // WAMP transport\n //\n // backward compatiblity\n if (!self._options.transports) {\n self._options.transports = [\n {\n type: 'websocket',\n url: self._options.url\n }\n ];\n }\n self._transport_factories = [];\n self._init_transport_factories();\n\n\n // WAMP session\n //\n self._session = null;\n self._session_close_reason = null;\n self._session_close_message = null;\n\n // automatic reconnection configuration\n //\n\n // enable automatic reconnect if host is unreachable\n if (self._options.retry_if_unreachable !== undefined) {\n self._retry_if_unreachable = self._options.retry_if_unreachable;\n } else {\n self._retry_if_unreachable = true;\n }\n\n // maximum number of reconnection attempts\n self._max_retries = typeof self._options.max_retries !== 'undefined' ? self._options.max_retries : 15;\n\n // initial retry delay in seconds\n self._initial_retry_delay = self._options.initial_retry_delay || 1.5;\n\n // maximum seconds between reconnection attempts\n self._max_retry_delay = self._options.max_retry_delay || 300;\n\n // the growth factor applied to the retry delay on each retry cycle\n self._retry_delay_growth = self._options.retry_delay_growth || 1.5;\n\n // the SD of a Gaussian to jitter the delay on each retry cycle\n // as a fraction of the mean\n self._retry_delay_jitter = self._options.retry_delay_jitter || 0.1;\n\n // reconnection tracking\n //\n\n // total number of successful connections\n self._connect_successes = 0;\n\n // controls if we should try to reconnect\n self._retry = false;\n\n // current number of reconnect cycles we went through\n self._retry_count = 0;\n\n // the current retry delay\n self._retry_delay = self._initial_retry_delay;\n\n // flag indicating if we are currently in a reconnect cycle\n self._is_retrying = false;\n\n // when retrying, this is the timer object returned from window.setTimeout()\n self._retry_timer = null;\n};\n\n\n\nConnection.prototype._create_transport = function () {\n for (var i = 0; i < this._transport_factories.length; ++i) {\n var transport_factory = this._transport_factories[i];\n log.debug(\"trying to create WAMP transport of type: \" + transport_factory.type);\n try {\n var transport = transport_factory.create();\n if (transport) {\n log.debug(\"using WAMP transport type: \" + transport_factory.type);\n return transport;\n }\n } catch (e) {\n // ignore\n log.warn(\"could not create WAMP transport '\" + transport_factory.type + \"': \" + e);\n }\n }\n\n log.warn('could not create any WAMP transport');\n return null;\n};\n\n\n\nConnection.prototype._init_transport_factories = function () {\n // WAMP transport\n //\n var transports, transport_options, transport_factory, transport_factory_klass;\n\n util.assert(this._options.transports, \"No transport.factory specified\");\n transports = this._options.transports;\n //if(typeof transports === \"object\") {\n // this._options.transports = [transports];\n //}\n for(var i = 0; i < this._options.transports.length; ++i) {\n // cascading transports until we find one which works\n transport_options = this._options.transports[i];\n\n if (!transport_options.url) {\n // defaulting to options.url if none is provided\n transport_options.url = this._options.url;\n }\n if (!transport_options.serializers) {\n transport_options.serializers = this._options.serializers;\n }\n if (!transport_options.protocols) {\n transport_options.protocols = this._options.protocols;\n }\n util.assert(transport_options.type, \"No transport.type specified\");\n util.assert(typeof transport_options.type === \"string\", \"transport.type must be a string\");\n try {\n transport_factory_klass = autobahn.transports.get(transport_options.type);\n if (transport_factory_klass) {\n transport_factory = new transport_factory_klass(transport_options);\n this._transport_factories.push(transport_factory);\n }\n } catch (exc) {\n console.error(exc);\n }\n }\n};\n\n\nConnection.prototype._autoreconnect_reset_timer = function () {\n\n var self = this;\n\n if (self._retry_timer) {\n clearTimeout(self._retry_timer);\n }\n self._retry_timer = null;\n}\n\n\nConnection.prototype._autoreconnect_reset = function () {\n\n var self = this;\n\n self._autoreconnect_reset_timer();\n\n self._retry_count = 0;\n self._retry_delay = self._initial_retry_delay;\n self._is_retrying = false;\n}\n\n\nConnection.prototype._autoreconnect_advance = function () {\n\n var self = this;\n\n // jitter retry delay\n if (self._retry_delay_jitter) {\n self._retry_delay = util.rand_normal(self._retry_delay, self._retry_delay * self._retry_delay_jitter);\n }\n\n // cap the retry delay\n if (self._retry_delay > self._max_retry_delay) {\n self._retry_delay = self._max_retry_delay;\n }\n\n // count number of retries\n self._retry_count += 1;\n\n var res;\n if (self._retry && (self._max_retries === -1 || self._retry_count <= self._max_retries)) {\n res = {\n count: self._retry_count,\n delay: self._retry_delay,\n will_retry: true\n };\n } else {\n res = {\n count: null,\n delay: null,\n will_retry: false\n }\n }\n\n // retry delay growth for next retry cycle\n if (self._retry_delay_growth) {\n self._retry_delay = self._retry_delay * self._retry_delay_growth;\n }\n\n return res;\n}\n\n\nConnection.prototype.open = function () {\n\n var self = this;\n\n if (self._transport) {\n throw \"connection already open (or opening)\";\n }\n\n self._autoreconnect_reset();\n self._retry = true;\n\n function retry () {\n\n // create a WAMP transport\n try {\n self._transport = self._create_transport();\n } catch (e) {\n console.log(e);\n }\n\n if (!self._transport) {\n // failed to create a WAMP transport\n self._retry = false;\n if (self.onclose) {\n var details = {\n reason: null,\n message: null,\n retry_delay: null,\n retry_count: null,\n will_retry: false\n };\n self.onclose(\"unsupported\", details);\n }\n return;\n }\n\n // create a new WAMP session using the WebSocket connection as transport\n self._session = new session.Session(self._transport, self._defer, self._options.onchallenge);\n self._session_close_reason = null;\n self._session_close_message = null;\n\n self._transport.onopen = function () {\n\n // reset auto-reconnect timer and tracking\n self._autoreconnect_reset();\n\n // log successful connections\n self._connect_successes += 1;\n\n // start WAMP session\n self._session.join(self._options.realm, self._options.authmethods, self._options.authid, self._options.authextra);\n };\n\n self._session.onjoin = function (details) {\n if (self.onopen) {\n try {\n // forward transport info ..\n details.transport = self._transport.info;\n self.onopen(self._session, details);\n } catch (e) {\n log.debug(\"Exception raised from app code while firing Connection.onopen()\", e);\n }\n }\n };\n\n //\n // ... WAMP session is now attached to realm.\n //\n\n self._session.onleave = function (reason, details) {\n self._session_close_reason = reason;\n self._session_close_message = details.message || \"\";\n self._retry = false;\n self._transport.close(1000);\n };\n\n self._transport.onclose = function (evt) {\n\n // remove any pending reconnect timer\n self._autoreconnect_reset_timer();\n\n self._transport = null;\n\n var reason = null;\n if (self._connect_successes === 0) {\n reason = \"unreachable\";\n if (!self._retry_if_unreachable) {\n self._retry = false;\n }\n\n } else if (!evt.wasClean) {\n reason = \"lost\";\n\n } else {\n reason = \"closed\";\n }\n\n var next_retry = self._autoreconnect_advance();\n\n // fire app code handler\n //\n if (self.onclose) {\n var details = {\n reason: self._session_close_reason,\n message: self._session_close_message,\n retry_delay: next_retry.delay,\n retry_count: next_retry.count,\n will_retry: next_retry.will_retry\n };\n try {\n // Connection.onclose() allows to cancel any subsequent retry attempt\n var stop_retrying = self.onclose(reason, details);\n } catch (e) {\n log.debug(\"Exception raised from app code while firing Connection.onclose()\", e);\n }\n }\n\n // reset session info\n //\n if (self._session) {\n self._session._id = null;\n self._session = null;\n self._session_close_reason = null;\n self._session_close_message = null;\n }\n\n // automatic reconnection\n //\n if (self._retry && !stop_retrying) {\n\n if (next_retry.will_retry) {\n\n self._is_retrying = true;\n\n log.debug(\"retrying in \" + next_retry.delay + \" s\");\n self._retry_timer = setTimeout(retry, next_retry.delay * 1000);\n\n } else {\n log.debug(\"giving up trying to reconnect\");\n }\n }\n }\n }\n\n retry();\n};\n\n\nConnection.prototype.close = function (reason, message) {\n var self = this;\n\n if (!self._transport && !self._is_retrying) {\n throw \"connection already closed\";\n }\n\n // the app wants to close .. don't retry\n self._retry = false;\n\n if (self._session && self._session.isOpen) {\n // if there is an open session, close that first.\n self._session.leave(reason, message);\n } else if (self._transport) {\n // no session active: just close the transport\n self._transport.close(1000);\n }\n};\n\n\n\nObject.defineProperty(Connection.prototype, \"defer\", {\n get: function () {\n return this._defer;\n }\n});\n\n\n\nObject.defineProperty(Connection.prototype, \"session\", {\n get: function () {\n return this._session;\n }\n});\n\n\n\nObject.defineProperty(Connection.prototype, \"isOpen\", {\n get: function () {\n if (this._session && this._session.isOpen) {\n return true;\n } else {\n return false;\n }\n }\n});\n\n\n\nObject.defineProperty(Connection.prototype, \"isConnected\", {\n get: function () {\n if (this._transport) {\n return true;\n } else {\n return false;\n }\n }\n});\n\n\n\nObject.defineProperty(Connection.prototype, \"transport\", {\n get: function () {\n if (this._transport) {\n return this._transport;\n } else {\n return {info: {type: 'none', url: null, protocol: null}};\n }\n }\n});\n\n\n\nObject.defineProperty(Connection.prototype, \"isRetrying\", {\n get: function () {\n return this._is_retrying;\n }\n});\n\n\n\nexports.Connection = Connection;\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/connection.js\n// module id = 263\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/connection.js?");
2428
2429/***/ },
2430/* 264 */
2431/*!*************************************!*\
2432 !*** ./~/autobahn/lib/configure.js ***!
2433 \*************************************/
2434/***/ function(module, exports, __webpack_require__) {
2435
2436 eval("///////////////////////////////////////////////////////////////////////////////\n//\n// AutobahnJS - http://autobahn.ws, http://wamp.ws\n//\n// A JavaScript library for WAMP (\"The Web Application Messaging Protocol\").\n//\n// Copyright (c) Crossbar.io Technologies GmbH and contributors\n//\n// Licensed under the MIT License.\n// http://www.opensource.org/licenses/mit-license.php\n//\n///////////////////////////////////////////////////////////////////////////////\n\n\nfunction Transports() {\n this._repository = {};\n}\n\n\nTransports.prototype.register = function (name, factory) {\n this._repository[name] = factory;\n};\n\n\nTransports.prototype.isRegistered = function (name) {\n return this._repository[name] ? true : false;\n};\n\n\nTransports.prototype.get = function (name) {\n if (this._repository[name] !== undefined) {\n return this._repository[name];\n } else {\n throw \"no such transport: \" + name;\n }\n}\n\n\nTransports.prototype.list = function() {\n var items = [];\n for (var name in this._repository) {\n items.push(name);\n }\n return items;\n};\n\n\nvar _transports = new Transports();\n\n\n// register default transports\nvar websocket = __webpack_require__(/*! ./transport/websocket.js */ 265);\n_transports.register(\"websocket\", websocket.Factory);\n\nvar longpoll = __webpack_require__(/*! ./transport/longpoll.js */ 268);\n_transports.register(\"longpoll\", longpoll.Factory);\n\nvar rawsocket = __webpack_require__(/*! ./transport/rawsocket.js */ 269);\n_transports.register(\"rawsocket\", rawsocket.Factory);\n\nexports.transports = _transports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/configure.js\n// module id = 264\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/configure.js?");
2437
2438/***/ },
2439/* 265 */
2440/*!***********************************************!*\
2441 !*** ./~/autobahn/lib/transport/websocket.js ***!
2442 \***********************************************/
2443/***/ function(module, exports, __webpack_require__) {
2444
2445 eval("/* WEBPACK VAR INJECTION */(function(global) {///////////////////////////////////////////////////////////////////////////////\n//\n// AutobahnJS - http://autobahn.ws, http://wamp.ws\n//\n// A JavaScript library for WAMP (\"The Web Application Messaging Protocol\").\n//\n// Copyright (c) Crossbar.io Technologies GmbH and contributors\n//\n// Licensed under the MIT License.\n// http://www.opensource.org/licenses/mit-license.php\n//\n///////////////////////////////////////////////////////////////////////////////\n\n\nvar util = __webpack_require__(/*! ../util.js */ 258);\nvar log = __webpack_require__(/*! ../log.js */ 259);\nvar serializer = __webpack_require__(/*! ../serializer.js */ 266);\n\n\nfunction Factory (options) {\n var self = this;\n\n util.assert(options.url !== undefined, \"options.url missing\");\n util.assert(typeof options.url === \"string\", \"options.url must be a string\");\n\n if (!options.serializers) {\n options.serializers = [new serializer.JSONSerializer()];\n if (serializer.MsgpackSerializer) {\n options.serializers.push(new serializer.MsgpackSerializer());\n }\n } else {\n util.assert(Array.isArray(options.serializers), \"options.serializers must be an array\");\n }\n\n if (!options.protocols) {\n options.protocols = [];\n options.serializers.forEach(function (ser) {\n options.protocols.push(\"wamp.2.\" + ser.SERIALIZER_ID);\n });\n } else {\n util.assert(Array.isArray(options.protocols), \"options.protocols must be an array\");\n }\n\n self._options = options;\n}\n\n\nFactory.prototype.type = \"websocket\";\n\n\nFactory.prototype.create = function () {\n\n var self = this;\n\n // the WAMP transport we create\n var transport = {};\n\n // these will get defined further below\n transport.protocol = undefined;\n transport.serializer = undefined;\n transport.send = undefined;\n transport.close = undefined;\n\n // these will get overridden by the WAMP session using this transport\n transport.onmessage = function () {};\n transport.onopen = function () {};\n transport.onclose = function () {};\n\n transport.info = {\n type: 'websocket',\n url: self._options.url,\n protocol: null\n };\n\n\n // Test below used to be via the 'window' object in the browser.\n // This fails when running in a Web worker.\n //\n // running in Node.js\n //\n if (global.process && global.process.versions.node) {\n\n (function () {\n\n var WebSocket = __webpack_require__(/*! ws */ 267); // https://github.com/einaros/ws\n var websocket;\n\n var protocols;\n if (self._options.protocols) {\n protocols = self._options.protocols;\n if (Array.isArray(protocols)) {\n protocols = protocols.join(',');\n }\n websocket = new WebSocket(self._options.url, {protocol: protocols});\n } else {\n websocket = new WebSocket(self._options.url);\n }\n\n transport.send = function (msg) {\n var payload = transport.serializer.serialize(msg);\n websocket.send(payload, {binary: transport.serializer.BINARY});\n };\n\n transport.close = function (code, reason) {\n websocket.close();\n };\n\n websocket.on('open', function () {\n var serializer_part = websocket.protocol.split('.')[2];\n for (var index in self._options.serializers) {\n var serializer = self._options.serializers[index];\n if (serializer.SERIALIZER_ID == serializer_part) {\n transport.serializer = serializer;\n break;\n }\n }\n\n transport.info.protocol = websocket.protocol;\n transport.onopen();\n });\n\n websocket.on('message', function (data, flags) {\n var msg = transport.serializer.unserialize(data);\n transport.onmessage(msg);\n });\n\n // FIXME: improve mapping to WS API for the following\n // https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Close_codes\n //\n websocket.on('close', function (code, message) {\n var details = {\n code: code,\n reason: message,\n wasClean: code === 1000\n }\n transport.onclose(details);\n });\n\n websocket.on('error', function (error) {\n var details = {\n code: 1006,\n reason: '',\n wasClean: false\n }\n transport.onclose(details);\n });\n\n })();\n //\n // running in the browser\n //\n } else {\n\n (function () {\n\n var websocket;\n\n // Chrome, MSIE, newer Firefox\n if (\"WebSocket\" in global) {\n\n if (self._options.protocols) {\n websocket = new global.WebSocket(self._options.url, self._options.protocols);\n } else {\n websocket = new global.WebSocket(self._options.url);\n }\n websocket.binaryType = 'arraybuffer';\n\n // older versions of Firefox prefix the WebSocket object\n } else if (\"MozWebSocket\" in global) {\n\n if (self._options.protocols) {\n websocket = new global.MozWebSocket(self._options.url, self._options.protocols);\n } else {\n websocket = new global.MozWebSocket(self._options.url);\n }\n } else {\n throw \"browser does not support WebSocket or WebSocket in Web workers\";\n }\n\n websocket.onmessage = function (evt) {\n log.debug(\"WebSocket transport receive\", evt.data);\n\n var msg = transport.serializer.unserialize(evt.data);\n transport.onmessage(msg);\n }\n\n websocket.onopen = function () {\n var serializer_part = websocket.protocol.split('.')[2];\n for (var index in self._options.serializers) {\n var serializer = self._options.serializers[index];\n if (serializer.SERIALIZER_ID == serializer_part) {\n transport.serializer = serializer;\n break;\n }\n }\n\n transport.info.protocol = websocket.protocol;\n transport.onopen();\n }\n\n websocket.onclose = function (evt) {\n var details = {\n code: evt.code,\n reason: evt.message,\n wasClean: evt.wasClean\n }\n transport.onclose(details);\n }\n\n // do NOT do the following, since that will make\n // transport.onclose() fire twice (browsers already fire\n // websocket.onclose() for errors also)\n //websocket.onerror = websocket.onclose;\n\n transport.send = function (msg) {\n var payload = transport.serializer.serialize(msg);\n log.debug(\"WebSocket transport send\", payload);\n websocket.send(payload);\n }\n\n transport.close = function (code, reason) {\n websocket.close(code, reason);\n };\n\n })();\n }\n\n return transport;\n};\n\n\nexports.Factory = Factory;\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/transport/websocket.js\n// module id = 265\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/transport/websocket.js?");
2446
2447/***/ },
2448/* 266 */
2449/*!**************************************!*\
2450 !*** ./~/autobahn/lib/serializer.js ***!
2451 \**************************************/
2452/***/ function(module, exports, __webpack_require__) {
2453
2454 eval("///////////////////////////////////////////////////////////////////////////////\n//\n// AutobahnJS - http://autobahn.ws, http://wamp.ws\n//\n// A JavaScript library for WAMP (\"The Web Application Messaging Protocol\").\n//\n// Copyright (c) Crossbar.io Technologies GmbH and contributors\n//\n// Licensed under the MIT License.\n// http://www.opensource.org/licenses/mit-license.php\n//\n///////////////////////////////////////////////////////////////////////////////\n\nvar log = __webpack_require__(/*! ./log.js */ 259);\n\n\n// generate a WAMP ID: this might be serializer specific, as\n// we need to enforce encoding into an integer, not float\n// eg we need to do some extra stuff for msgpack (json and\n// cbor are fine \"as is\")\nfunction newid () {\n return Math.floor(Math.random() * 9007199254740992);\n}\n\n\nfunction JSONSerializer(replacer, reviver) {\n this.replacer = replacer;\n this.reviver = reviver;\n this.SERIALIZER_ID = 'json';\n this.BINARY = false;\n\n // JSON encoder does not need anything special here\n this.newid = newid;\n}\n\nJSONSerializer.prototype.serialize = function (obj) {\n try {\n var payload = JSON.stringify(obj, this.replacer);\n return payload;\n } catch (e) {\n log.warn('JSON encoding error', e);\n throw e;\n }\n};\n\nJSONSerializer.prototype.unserialize = function (payload) {\n try {\n var obj = JSON.parse(payload, this.reviver);\n return obj;\n } catch (e) {\n log.warn('JSON decoding error', e);\n throw e;\n }\n};\n\nexports.JSONSerializer = JSONSerializer;\n\n\n// https://github.com/kawanet/msgpack-lite/\n// https://github.com/kawanet/int64-buffer\nvar msgpack = __webpack_require__(/*! msgpack-lite */ 176);\n\n// this is needed for correct msgpack serialization of WAMP session IDs\nvar Uint64BE = __webpack_require__(/*! int64-buffer */ 190).Uint64BE;\n\nfunction MsgpackSerializer() {\n this.SERIALIZER_ID = 'msgpack';\n this.BINARY = true;\n this.codec = msgpack.createCodec();\n\n // msgpack: Uint64BE ensures that ID is encoded as int instead of double\n this.newid = function () { return new Uint64BE(newid()); };\n}\n\nMsgpackSerializer.prototype.serialize = function (obj) {\n try {\n var payload = msgpack.encode(obj, {codec: this.codec});\n return payload;\n } catch (e) {\n log.warn('MessagePack encoding error', e);\n throw e;\n }\n};\n\nMsgpackSerializer.prototype.unserialize = function (payload) {\n try {\n // need to encapsulate ArrayBuffer into Uint8Array for msgpack decoding\n // https://github.com/kawanet/msgpack-lite/issues/44\n var obj = msgpack.decode(new Uint8Array(payload), {codec: this.codec});\n return obj;\n } catch (e) {\n log.warn('MessagePack decoding error', e);\n throw e;\n }\n};\n\n/**\n * Register a packer and/or unpacker functions for a given type.\n *\n * The msgpack specification allows applications to register up to 128 extension\n * types.\n *\n * @param code numeric extension code (between 0-127)\n * @param type constructor for the given type (only required when packer is defined)\n * @param packer a function that takes an object and returns a Buffer\n * @param unpacker a function that takes a Buffer and returns an instance of the given type\n */\nMsgpackSerializer.prototype.registerExtType = function (code, type, packer, unpacker) {\n if (packer && type) {\n this.codec.addExtPacker(code, type, packer);\n }\n if (unpacker) {\n this.codec.addExtUnpacker(code, unpacker);\n }\n};\n\nexports.MsgpackSerializer = MsgpackSerializer;\n\n\n// http://hildjj.github.io/node-cbor/\nvar cbor = __webpack_require__(/*! cbor */ 206);\n\nfunction CBORSerializer() {\n this.SERIALIZER_ID = 'cbor';\n this.BINARY = true;\n\n // CBOR encoder does not need anything special here\n this.newid = newid;\n}\n\nCBORSerializer.prototype.serialize = function (obj) {\n try {\n var payload = cbor.encode(obj);\n return payload;\n } catch (e) {\n log.warn('CBOR encoding error', e);\n throw e;\n }\n};\n\nCBORSerializer.prototype.unserialize = function (payload) {\n try {\n //var obj = cbor.decodeAllSync(payload)[0];\n var obj = cbor.decodeFirstSync(payload);\n return obj;\n } catch (e) {\n log.warn('CBOR decoding error', e);\n throw e;\n }\n};\n\nexports.CBORSerializer = CBORSerializer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/serializer.js\n// module id = 266\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/serializer.js?");
2455
2456/***/ },
2457/* 267 */
2458/*!********************!*\
2459 !*** ws (ignored) ***!
2460 \********************/
2461/***/ function(module, exports) {
2462
2463 eval("/* (ignored) */\n\n//////////////////\n// WEBPACK FOOTER\n// ws (ignored)\n// module id = 267\n// module chunks = 0 1\n//# sourceURL=webpack:///ws_(ignored)?");
2464
2465/***/ },
2466/* 268 */
2467/*!**********************************************!*\
2468 !*** ./~/autobahn/lib/transport/longpoll.js ***!
2469 \**********************************************/
2470/***/ function(module, exports, __webpack_require__) {
2471
2472 eval("///////////////////////////////////////////////////////////////////////////////\n//\n// AutobahnJS - http://autobahn.ws, http://wamp.ws\n//\n// A JavaScript library for WAMP (\"The Web Application Messaging Protocol\").\n//\n// Copyright (c) Crossbar.io Technologies GmbH and contributors\n//\n// Licensed under the MIT License.\n// http://www.opensource.org/licenses/mit-license.php\n//\n///////////////////////////////////////////////////////////////////////////////\n\n\nvar when = __webpack_require__(/*! when */ 156);\nvar util = __webpack_require__(/*! ../util.js */ 258);\nvar log = __webpack_require__(/*! ../log.js */ 259);\nvar serializer = __webpack_require__(/*! ../serializer.js */ 266);\n\n\nfunction Factory (options) {\n var self = this;\n\n util.assert(options.url !== undefined, \"options.url missing\");\n util.assert(typeof options.url === \"string\", \"options.url must be a string\");\n\n self._options = options;\n};\n\n\nFactory.prototype.type = \"longpoll\";\n\n\nFactory.prototype.create = function () {\n\n var self = this;\n\n log.debug(\"longpoll.Factory.create\");\n\n // the WAMP transport we create\n var transport = {};\n\n // these will get defined further below\n transport.protocol = undefined;\n transport.serializer = new serializer.JSONSerializer();\n transport.send = undefined;\n transport.close = undefined;\n\n // these will get overridden by the WAMP session using this transport\n transport.onmessage = function () {};\n transport.onopen = function () {};\n transport.onclose = function () {};\n\n transport.info = {\n type: 'longpoll',\n url: null,\n protocol: 'wamp.2.json'\n };\n\n transport._run = function () {\n\n var session_info = null;\n var send_buffer = [];\n var is_closing = false;\n\n var txseq = 0;\n var rxseq = 0;\n\n var options = {'protocols': ['wamp.2.json']};\n var request_timeout = self._options.request_timeout || 12000; // timeout here > than the 10s default in Crossbar.io\n\n util.http_post(self._options.url + '/open', JSON.stringify(options), request_timeout).then(\n\n function (payload) {\n\n session_info = JSON.parse(payload);\n var base_url = self._options.url + '/' + session_info.transport;\n\n transport.info.url = base_url;\n\n log.debug(\"longpoll.Transport: open\", session_info);\n\n transport.close = function (code, reason) {\n\n if (is_closing) {\n throw \"transport is already closing\";\n }\n\n is_closing = true;\n\n util.http_post(base_url + '/close', null, request_timeout).then(\n\n function () {\n log.debug(\"longpoll.Transport: transport closed\");\n var details = {\n code: 1000,\n reason: \"transport closed\",\n wasClean: true\n }\n transport.onclose(details);\n },\n\n function (err) {\n log.debug(\"longpoll.Transport: could not close transport\", err.code, err.text);\n }\n );\n }\n\n transport.send = function (msg) {\n\n if (is_closing) {\n throw \"transport is closing or closed already\";\n }\n\n txseq += 1;\n\n log.debug(\"longpoll.Transport: sending message ...\", msg);\n\n var payload = JSON.stringify(msg);\n\n util.http_post(base_url + '/send', payload, request_timeout).then(\n\n function () {\n // ok, message sent\n log.debug(\"longpoll.Transport: message sent\");\n },\n\n function (err) {\n log.debug(\"longpoll.Transport: could not send message\", err.code, err.text);\n\n is_closing = true;\n var details = {\n code: 1001,\n reason: \"transport send failure (HTTP/POST status \" + err.code + \" - '\" + err.text + \"')\",\n wasClean: false\n }\n transport.onclose(details);\n }\n );\n };\n\n function receive() {\n\n rxseq += 1;\n\n log.debug(\"longpoll.Transport: polling for message ...\");\n\n util.http_post(base_url + '/receive', null, request_timeout).then(\n\n function (payload) {\n\n if (payload) {\n\n var msg = JSON.parse(payload);\n\n log.debug(\"longpoll.Transport: message received\", msg);\n\n transport.onmessage(msg);\n }\n\n if (!is_closing) {\n receive();\n }\n },\n\n function (err) {\n log.debug(\"longpoll.Transport: could not receive message\", err.code, err.text);\n\n is_closing = true;\n var details = {\n code: 1001,\n reason: \"transport receive failure (HTTP/POST status \" + err.code + \" - '\" + err.text + \"')\",\n wasClean: false\n }\n transport.onclose(details);\n }\n );\n }\n\n receive();\n\n transport.onopen();\n },\n\n function (err) {\n log.debug(\"longpoll.Transport: could not open transport\", err.code, err.text);\n\n is_closing = true;\n var details = {\n code: 1001,\n reason: \"transport open failure (HTTP/POST status \" + err.code + \" - '\" + err.text + \"')\",\n wasClean: false\n }\n transport.onclose(details);\n }\n );\n }\n\n transport._run();\n\n return transport;\n};\n\n\nexports.Factory = Factory;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/transport/longpoll.js\n// module id = 268\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/transport/longpoll.js?");
2473
2474/***/ },
2475/* 269 */
2476/*!******************************************!*\
2477 !*** ./transport/rawsocket.js (ignored) ***!
2478 \******************************************/
2479/***/ function(module, exports) {
2480
2481 eval("/* (ignored) */\n\n//////////////////\n// WEBPACK FOOTER\n// ./transport/rawsocket.js (ignored)\n// module id = 269\n// module chunks = 0 1\n//# sourceURL=webpack:///./transport/rawsocket.js_(ignored)?");
2482
2483/***/ },
2484/* 270 */
2485/*!****************************************!*\
2486 !*** ./~/autobahn/lib/auth/persona.js ***!
2487 \****************************************/
2488/***/ function(module, exports, __webpack_require__) {
2489
2490 eval("///////////////////////////////////////////////////////////////////////////////\n//\n// AutobahnJS - http://autobahn.ws, http://wamp.ws\n//\n// A JavaScript library for WAMP (\"The Web Application Messaging Protocol\").\n//\n// Copyright (c) Crossbar.io Technologies GmbH and contributors\n//\n// Licensed under the MIT License.\n// http://www.opensource.org/licenses/mit-license.php\n//\n///////////////////////////////////////////////////////////////////////////////\n\nvar when = __webpack_require__(/*! when */ 156);\nvar when_fn = __webpack_require__(/*! when/function */ 261);\n\n\nfunction auth(session, user, extra) {\n\n // Persona Issues:\n //\n // Chrome: https://github.com/mozilla/persona/issues/4083\n // IE11: https://groups.google.com/forum/#!topic/mozilla.dev.identity/keEkVpvfLA8\n\n var d = session.defer();\n\n navigator.id.watch({\n loggedInUser: user,\n onlogin: function (assertion) {\n // A user has logged in! Here you need to:\n // 1. Send the assertion to your backend for verification and to create a session.\n // 2. Update your UI.\n d.resolve(assertion);\n },\n onlogout: function() {\n // A user has logged out! Here you need to:\n // Tear down the user's session by redirecting the user or making a call to your backend.\n // Also, make sure loggedInUser will get set to null on the next page load.\n // (That's a literal JavaScript null. Not false, 0, or undefined. null.)\n session.leave(\"wamp.close.logout\");\n }\n });\n\n if (d.promise.then) {\n // whenjs has the actual user promise in an attribute\n return d.promise;\n } else {\n return d;\n }\n}\n\nexports.auth = auth;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/auth/persona.js\n// module id = 270\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/auth/persona.js?");
2491
2492/***/ },
2493/* 271 */
2494/*!************************************!*\
2495 !*** ./~/autobahn/lib/auth/cra.js ***!
2496 \************************************/
2497/***/ function(module, exports, __webpack_require__) {
2498
2499 eval("///////////////////////////////////////////////////////////////////////////////\n//\n// AutobahnJS - http://autobahn.ws, http://wamp.ws\n//\n// A JavaScript library for WAMP (\"The Web Application Messaging Protocol\").\n//\n// Copyright (c) Crossbar.io Technologies GmbH and contributors\n//\n// Licensed under the MIT License.\n// http://www.opensource.org/licenses/mit-license.php\n//\n///////////////////////////////////////////////////////////////////////////////\n\n// require('assert') would be nice .. but it does not\n// work with Google Closure after Browserify\n\nvar crypto = __webpack_require__(/*! crypto-js */ 272);\n\n// PBKDF2-base key derivation function for salted WAMP-CRA\n//\nfunction derive_key (secret, salt, iterations, keylen) {\n var iterations = iterations || 1000;\n var keylen = keylen || 32;\n var config = {\n keySize: keylen / 4,\n iterations: iterations,\n hasher: crypto.algo.SHA256\n }\n var key = crypto.PBKDF2(secret, salt, config);\n return key.toString(crypto.enc.Base64);\n}\n\n\nfunction sign (key, challenge) {\n return crypto.HmacSHA256(challenge, key).toString(crypto.enc.Base64);\n}\n\nexports.sign = sign;\nexports.derive_key = derive_key;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/auth/cra.js\n// module id = 271\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/auth/cra.js?");
2500
2501/***/ },
2502/* 272 */
2503/*!******************************!*\
2504 !*** ./~/crypto-js/index.js ***!
2505 \******************************/
2506/***/ function(module, exports, __webpack_require__) {
2507
2508 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./x64-core */ 274), __webpack_require__(/*! ./lib-typedarrays */ 275), __webpack_require__(/*! ./enc-utf16 */ 276), __webpack_require__(/*! ./enc-base64 */ 277), __webpack_require__(/*! ./md5 */ 278), __webpack_require__(/*! ./sha1 */ 279), __webpack_require__(/*! ./sha256 */ 280), __webpack_require__(/*! ./sha224 */ 281), __webpack_require__(/*! ./sha512 */ 282), __webpack_require__(/*! ./sha384 */ 283), __webpack_require__(/*! ./sha3 */ 284), __webpack_require__(/*! ./ripemd160 */ 285), __webpack_require__(/*! ./hmac */ 286), __webpack_require__(/*! ./pbkdf2 */ 287), __webpack_require__(/*! ./evpkdf */ 288), __webpack_require__(/*! ./cipher-core */ 289), __webpack_require__(/*! ./mode-cfb */ 290), __webpack_require__(/*! ./mode-ctr */ 291), __webpack_require__(/*! ./mode-ctr-gladman */ 292), __webpack_require__(/*! ./mode-ofb */ 293), __webpack_require__(/*! ./mode-ecb */ 294), __webpack_require__(/*! ./pad-ansix923 */ 295), __webpack_require__(/*! ./pad-iso10126 */ 296), __webpack_require__(/*! ./pad-iso97971 */ 297), __webpack_require__(/*! ./pad-zeropadding */ 298), __webpack_require__(/*! ./pad-nopadding */ 299), __webpack_require__(/*! ./format-hex */ 300), __webpack_require__(/*! ./aes */ 301), __webpack_require__(/*! ./tripledes */ 302), __webpack_require__(/*! ./rc4 */ 303), __webpack_require__(/*! ./rabbit */ 304), __webpack_require__(/*! ./rabbit-legacy */ 305));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/index.js\n// module id = 272\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/index.js?");
2509
2510/***/ },
2511/* 273 */
2512/*!*****************************!*\
2513 !*** ./~/crypto-js/core.js ***!
2514 \*****************************/
2515/***/ function(module, exports, __webpack_require__) {
2516
2517 eval(";(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t /*\n\t * Local polyfil of Object.create\n\t */\n\t var create = Object.create || (function () {\n\t function F() {};\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }())\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t var r = (function (m_w) {\n\t var m_w = m_w;\n\t var m_z = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\n\t return function () {\n\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t var result = ((m_z << 0x10) + m_w) & mask;\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > .5 ? 1 : -1);\n\t }\n\t });\n\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t rcache = _r() * 0x3ade67b7;\n\t words.push((_r() * 0x100000000) | 0);\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t var processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/core.js\n// module id = 273\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/core.js?");
2518
2519/***/ },
2520/* 274 */
2521/*!*********************************!*\
2522 !*** ./~/crypto-js/x64-core.js ***!
2523 \*********************************/
2524/***/ function(module, exports, __webpack_require__) {
2525
2526 eval(";(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/x64-core.js\n// module id = 274\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/x64-core.js?");
2527
2528/***/ },
2529/* 275 */
2530/*!****************************************!*\
2531 !*** ./~/crypto-js/lib-typedarrays.js ***!
2532 \****************************************/
2533/***/ function(module, exports, __webpack_require__) {
2534
2535 eval(";(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/lib-typedarrays.js\n// module id = 275\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/lib-typedarrays.js?");
2536
2537/***/ },
2538/* 276 */
2539/*!**********************************!*\
2540 !*** ./~/crypto-js/enc-utf16.js ***!
2541 \**********************************/
2542/***/ function(module, exports, __webpack_require__) {
2543
2544 eval(";(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/enc-utf16.js\n// module id = 276\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/enc-utf16.js?");
2545
2546/***/ },
2547/* 277 */
2548/*!***********************************!*\
2549 !*** ./~/crypto-js/enc-base64.js ***!
2550 \***********************************/
2551/***/ function(module, exports, __webpack_require__) {
2552
2553 eval(";(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/enc-base64.js\n// module id = 277\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/enc-base64.js?");
2554
2555/***/ },
2556/* 278 */
2557/*!****************************!*\
2558 !*** ./~/crypto-js/md5.js ***!
2559 \****************************/
2560/***/ function(module, exports, __webpack_require__) {
2561
2562 eval(";(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/md5.js\n// module id = 278\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/md5.js?");
2563
2564/***/ },
2565/* 279 */
2566/*!*****************************!*\
2567 !*** ./~/crypto-js/sha1.js ***!
2568 \*****************************/
2569/***/ function(module, exports, __webpack_require__) {
2570
2571 eval(";(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/sha1.js\n// module id = 279\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/sha1.js?");
2572
2573/***/ },
2574/* 280 */
2575/*!*******************************!*\
2576 !*** ./~/crypto-js/sha256.js ***!
2577 \*******************************/
2578/***/ function(module, exports, __webpack_require__) {
2579
2580 eval(";(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/sha256.js\n// module id = 280\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/sha256.js?");
2581
2582/***/ },
2583/* 281 */
2584/*!*******************************!*\
2585 !*** ./~/crypto-js/sha224.js ***!
2586 \*******************************/
2587/***/ function(module, exports, __webpack_require__) {
2588
2589 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./sha256 */ 280));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/sha224.js\n// module id = 281\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/sha224.js?");
2590
2591/***/ },
2592/* 282 */
2593/*!*******************************!*\
2594 !*** ./~/crypto-js/sha512.js ***!
2595 \*******************************/
2596/***/ function(module, exports, __webpack_require__) {
2597
2598 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./x64-core */ 274));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t var Wih = Wi.high = M[offset + i * 2] | 0;\n\t var Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t var Wil = gamma0l + Wi7l;\n\t var Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t var Wil = Wil + gamma1l;\n\t var Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t var Wil = Wil + Wi16l;\n\t var Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/sha512.js\n// module id = 282\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/sha512.js?");
2599
2600/***/ },
2601/* 283 */
2602/*!*******************************!*\
2603 !*** ./~/crypto-js/sha384.js ***!
2604 \*******************************/
2605/***/ function(module, exports, __webpack_require__) {
2606
2607 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./x64-core */ 274), __webpack_require__(/*! ./sha512 */ 282));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/sha384.js\n// module id = 283\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/sha384.js?");
2608
2609/***/ },
2610/* 284 */
2611/*!*****************************!*\
2612 !*** ./~/crypto-js/sha3.js ***!
2613 \*****************************/
2614/***/ function(module, exports, __webpack_require__) {
2615
2616 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./x64-core */ 274));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t var tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t var tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t var tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t var tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/sha3.js\n// module id = 284\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/sha3.js?");
2617
2618/***/ },
2619/* 285 */
2620/*!**********************************!*\
2621 !*** ./~/crypto-js/ripemd160.js ***!
2622 \**********************************/
2623/***/ function(module, exports, __webpack_require__) {
2624
2625 eval(";(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<<n) | (x>>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/ripemd160.js\n// module id = 285\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/ripemd160.js?");
2626
2627/***/ },
2628/* 286 */
2629/*!*****************************!*\
2630 !*** ./~/crypto-js/hmac.js ***!
2631 \*****************************/
2632/***/ function(module, exports, __webpack_require__) {
2633
2634 eval(";(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/hmac.js\n// module id = 286\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/hmac.js?");
2635
2636/***/ },
2637/* 287 */
2638/*!*******************************!*\
2639 !*** ./~/crypto-js/pbkdf2.js ***!
2640 \*******************************/
2641/***/ function(module, exports, __webpack_require__) {
2642
2643 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./sha1 */ 279), __webpack_require__(/*! ./hmac */ 286));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/pbkdf2.js\n// module id = 287\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/pbkdf2.js?");
2644
2645/***/ },
2646/* 288 */
2647/*!*******************************!*\
2648 !*** ./~/crypto-js/evpkdf.js ***!
2649 \*******************************/
2650/***/ function(module, exports, __webpack_require__) {
2651
2652 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./sha1 */ 279), __webpack_require__(/*! ./hmac */ 286));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t var block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/evpkdf.js\n// module id = 288\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/evpkdf.js?");
2653
2654/***/ },
2655/* 289 */
2656/*!************************************!*\
2657 !*** ./~/crypto-js/cipher-core.js ***!
2658 \************************************/
2659/***/ function(module, exports, __webpack_require__) {
2660
2661 eval(";(function (root, factory) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t var block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t var block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t var modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t var modeCreator = mode.createDecryptor;\n\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t var wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/cipher-core.js\n// module id = 289\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/cipher-core.js?");
2662
2663/***/ },
2664/* 290 */
2665/*!*********************************!*\
2666 !*** ./~/crypto-js/mode-cfb.js ***!
2667 \*********************************/
2668/***/ function(module, exports, __webpack_require__) {
2669
2670 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t var keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t var keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/mode-cfb.js\n// module id = 290\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/mode-cfb.js?");
2671
2672/***/ },
2673/* 291 */
2674/*!*********************************!*\
2675 !*** ./~/crypto-js/mode-ctr.js ***!
2676 \*********************************/
2677/***/ function(module, exports, __webpack_require__) {
2678
2679 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/mode-ctr.js\n// module id = 291\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/mode-ctr.js?");
2680
2681/***/ },
2682/* 292 */
2683/*!*****************************************!*\
2684 !*** ./~/crypto-js/mode-ctr-gladman.js ***!
2685 \*****************************************/
2686/***/ function(module, exports, __webpack_require__) {
2687
2688 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/mode-ctr-gladman.js\n// module id = 292\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/mode-ctr-gladman.js?");
2689
2690/***/ },
2691/* 293 */
2692/*!*********************************!*\
2693 !*** ./~/crypto-js/mode-ofb.js ***!
2694 \*********************************/
2695/***/ function(module, exports, __webpack_require__) {
2696
2697 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/mode-ofb.js\n// module id = 293\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/mode-ofb.js?");
2698
2699/***/ },
2700/* 294 */
2701/*!*********************************!*\
2702 !*** ./~/crypto-js/mode-ecb.js ***!
2703 \*********************************/
2704/***/ function(module, exports, __webpack_require__) {
2705
2706 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/mode-ecb.js\n// module id = 294\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/mode-ecb.js?");
2707
2708/***/ },
2709/* 295 */
2710/*!*************************************!*\
2711 !*** ./~/crypto-js/pad-ansix923.js ***!
2712 \*************************************/
2713/***/ function(module, exports, __webpack_require__) {
2714
2715 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/pad-ansix923.js\n// module id = 295\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/pad-ansix923.js?");
2716
2717/***/ },
2718/* 296 */
2719/*!*************************************!*\
2720 !*** ./~/crypto-js/pad-iso10126.js ***!
2721 \*************************************/
2722/***/ function(module, exports, __webpack_require__) {
2723
2724 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/pad-iso10126.js\n// module id = 296\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/pad-iso10126.js?");
2725
2726/***/ },
2727/* 297 */
2728/*!*************************************!*\
2729 !*** ./~/crypto-js/pad-iso97971.js ***!
2730 \*************************************/
2731/***/ function(module, exports, __webpack_require__) {
2732
2733 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/pad-iso97971.js\n// module id = 297\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/pad-iso97971.js?");
2734
2735/***/ },
2736/* 298 */
2737/*!****************************************!*\
2738 !*** ./~/crypto-js/pad-zeropadding.js ***!
2739 \****************************************/
2740/***/ function(module, exports, __webpack_require__) {
2741
2742 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t while (!((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t i--;\n\t }\n\t data.sigBytes = i + 1;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/pad-zeropadding.js\n// module id = 298\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/pad-zeropadding.js?");
2743
2744/***/ },
2745/* 299 */
2746/*!**************************************!*\
2747 !*** ./~/crypto-js/pad-nopadding.js ***!
2748 \**************************************/
2749/***/ function(module, exports, __webpack_require__) {
2750
2751 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/pad-nopadding.js\n// module id = 299\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/pad-nopadding.js?");
2752
2753/***/ },
2754/* 300 */
2755/*!***********************************!*\
2756 !*** ./~/crypto-js/format-hex.js ***!
2757 \***********************************/
2758/***/ function(module, exports, __webpack_require__) {
2759
2760 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/format-hex.js\n// module id = 300\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/format-hex.js?");
2761
2762/***/ },
2763/* 301 */
2764/*!****************************!*\
2765 !*** ./~/crypto-js/aes.js ***!
2766 \****************************/
2767/***/ function(module, exports, __webpack_require__) {
2768
2769 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./enc-base64 */ 277), __webpack_require__(/*! ./md5 */ 278), __webpack_require__(/*! ./evpkdf */ 288), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/aes.js\n// module id = 301\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/aes.js?");
2770
2771/***/ },
2772/* 302 */
2773/*!**********************************!*\
2774 !*** ./~/crypto-js/tripledes.js ***!
2775 \**********************************/
2776/***/ function(module, exports, __webpack_require__) {
2777
2778 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./enc-base64 */ 277), __webpack_require__(/*! ./md5 */ 278), __webpack_require__(/*! ./evpkdf */ 288), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/tripledes.js\n// module id = 302\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/tripledes.js?");
2779
2780/***/ },
2781/* 303 */
2782/*!****************************!*\
2783 !*** ./~/crypto-js/rc4.js ***!
2784 \****************************/
2785/***/ function(module, exports, __webpack_require__) {
2786
2787 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./enc-base64 */ 277), __webpack_require__(/*! ./md5 */ 278), __webpack_require__(/*! ./evpkdf */ 288), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/rc4.js\n// module id = 303\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/rc4.js?");
2788
2789/***/ },
2790/* 304 */
2791/*!*******************************!*\
2792 !*** ./~/crypto-js/rabbit.js ***!
2793 \*******************************/
2794/***/ function(module, exports, __webpack_require__) {
2795
2796 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./enc-base64 */ 277), __webpack_require__(/*! ./md5 */ 278), __webpack_require__(/*! ./evpkdf */ 288), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/rabbit.js\n// module id = 304\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/rabbit.js?");
2797
2798/***/ },
2799/* 305 */
2800/*!**************************************!*\
2801 !*** ./~/crypto-js/rabbit-legacy.js ***!
2802 \**************************************/
2803/***/ function(module, exports, __webpack_require__) {
2804
2805 eval(";(function (root, factory, undef) {\n\tif (true) {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(__webpack_require__(/*! ./core */ 273), __webpack_require__(/*! ./enc-base64 */ 277), __webpack_require__(/*! ./md5 */ 278), __webpack_require__(/*! ./evpkdf */ 288), __webpack_require__(/*! ./cipher-core */ 289));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/rabbit-legacy.js\n// module id = 305\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/crypto-js/rabbit-legacy.js?");
2806
2807/***/ },
2808/* 306 */
2809/*!*******************************************!*\
2810 !*** ./~/autobahn/lib/auth/cryptosign.js ***!
2811 \*******************************************/
2812/***/ function(module, exports, __webpack_require__) {
2813
2814 eval("///////////////////////////////////////////////////////////////////////////////\n//\n// AutobahnJS - http://autobahn.ws, http://wamp.ws\n//\n// A JavaScript library for WAMP (\"The Web Application Messaging Protocol\").\n//\n// Copyright (c) Crossbar.io Technologies GmbH and contributors\n//\n// Licensed under the MIT License.\n// http://www.opensource.org/licenses/mit-license.php\n//\n///////////////////////////////////////////////////////////////////////////////\n\nvar nacl = __webpack_require__(/*! tweetnacl */ 251);\nvar util = __webpack_require__(/*! ../util.js */ 258);\nvar log = __webpack_require__(/*! ../log.js */ 259);\nvar connection = __webpack_require__(/*! ../connection.js */ 263);\n\n\nfunction load_private_key (name, force_regenerate) {\n var seed = util.atob(localStorage.getItem(name));\n if (!seed || force_regenerate) {\n seed = nacl.randomBytes(nacl.sign.seedLength);\n localStorage.setItem(name, util.btoa(seed));\n log.debug('new key seed \"' + name + '\" saved to local storage!');\n } else {\n log.debug('key seed \"' + name + '\" loaded from local storage!');\n }\n return nacl.sign.keyPair.fromSeed(seed);\n}\n\nexports.load_private_key = load_private_key;\n\n\nfunction delete_private_key (name) {\n // FIXME: poor man's secure erase\n for (var i = 0; i < 5; ++i) {\n seed = nacl.randomBytes(nacl.sign.seedLength);\n localStorage.setItem(name, util.btoa(seed));\n localStorage.setItem(name, '');\n localStorage.setItem(name, null);\n }\n}\n\nexports.delete_private_key = delete_private_key;\n\n\nfunction sign_challenge (pkey, extra) {\n var challenge = util.htob(extra.challenge);\n var signature = nacl.sign.detached(challenge, pkey.secretKey);\n var res = util.btoh(signature) + util.btoh(challenge);\n return res;\n}\n\nexports.sign_challenge = sign_challenge;\n\n\nfunction public_key (pkey) {\n return util.btoh(pkey.publicKey);\n}\n\nexports.public_key = public_key;\n\n\nfunction create_connection (config) {\n\n var url = config.url;\n var realm = config.realm;\n var authid = config.authid;\n var pkey = config.pkey;\n var activation_code = config.activation_code;\n var request_new_activation_code = config.request_new_activation_code;\n var serializers = config.serializers;\n\n if (config.debug) {\n console.log(url);\n console.log(realm);\n console.log(authid);\n console.log(pkey);\n console.log(activation_code);\n console.log(request_new_activation_code);\n console.log(serializers);\n }\n\n function onchallenge (session, method, extra) {\n // we only know how to process WAMP-cryptosign here!\n if (method == \"cryptosign\") {\n // and to do so, we let above helper sign the\n // WAMP-cryptosign challenge as required\n // and return a signature\n return sign_challenge(pkey, extra);\n } else {\n throw \"don't know how to authenticate using '\" + method + \"'\";\n }\n }\n\n authextra = {\n // forward the client pubkey: this allows us to omit authid as\n // the router can identify us with the pubkey already\n pubkey: public_key(pkey),\n\n // not yet implemented. a public key the router should provide\n // a trustchain for it's public key. the trustroot can eg be\n // hard-coded in the client, or come from a command line option.\n trustroot: null,\n\n // not yet implemented. for authenticating the router, this\n // challenge will need to be signed by the router and send back\n // in AUTHENTICATE for client to verify. A string with a hex\n // encoded 32 bytes random value.\n challenge: null,\n\n // FIXME: at least on NodeJS, it should be possible to implement\n // this additional security measure!\n //channel_binding: 'tls-unique'\n channel_binding: null,\n\n // you should only provide an activation_code the very first time\n // the key pair used is paired. a token can only be used exactly once\n // and reusing it, even from the original client, will result in an error!\n activation_code: activation_code,\n\n // if true, request sending a new email with a new activation code\n request_new_activation_code: request_new_activation_code\n }\n\n // now create a AutobahnJS Connection object\n // with WAMP-cryptosign being the only configured\n // authentication method:\n var _connection = new connection.Connection({\n // this MUST be given\n url: url,\n\n // this MAY be given - if not, then connect to global user realm\n // if given, the user must have access permissions for the respective\n // management realm (to which both users and fabric nodes are connected)\n realm: realm,\n\n // this MAY be given (but MUST be given on register/pairing)\n authid: authid,\n\n // this MUST be given\n authmethods: [\"cryptosign\"],\n\n // see above\n onchallenge: onchallenge,\n\n // see above\n authextra: authextra,\n\n // WAMP serializers to use\n serializers: config.serializers\n });\n\n return _connection;\n}\n\nexports.create_connection = create_connection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/autobahn/lib/auth/cryptosign.js\n// module id = 306\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/autobahn/lib/auth/cryptosign.js?");
2815
2816/***/ },
2817/* 307 */
2818/*!***************************!*\
2819 !*** ./src/timeout-fs.ts ***!
2820 \***************************/
2821/***/ function(module, exports, __webpack_require__) {
2822
2823 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar api_1 = __webpack_require__(/*! ./api */ 89);\nvar TimeoutFileSystem = (function () {\n function TimeoutFileSystem(timeout, fs) {\n this.timeout = timeout;\n this.fs = fs;\n }\n Object.defineProperty(TimeoutFileSystem.prototype, \"events\", {\n get: function () {\n return this.fs.events;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeoutFileSystem.prototype, \"baseUrl\", {\n get: function () {\n return this.fs.baseUrl;\n },\n enumerable: true,\n configurable: true\n });\n TimeoutFileSystem.prototype.saveFile = function (fullPath, newContent) {\n return this.fs.saveFile(fullPath, newContent).timeout(this.timeout);\n };\n TimeoutFileSystem.prototype.deleteFile = function (fullPath) {\n return this.fs.deleteFile(fullPath).timeout(this.timeout);\n };\n TimeoutFileSystem.prototype.deleteDirectory = function (fullPath, recursive) {\n return this.fs.deleteDirectory(fullPath, recursive).timeout(this.timeout);\n };\n TimeoutFileSystem.prototype.loadTextFile = function (fullPath) {\n return this.fs.loadTextFile(fullPath).timeout(this.timeout);\n };\n TimeoutFileSystem.prototype.loadDirectoryTree = function () {\n return this.fs.loadDirectoryTree().timeout(this.timeout);\n };\n TimeoutFileSystem.prototype.ensureDirectory = function (fullPath) {\n return this.fs.ensureDirectory(fullPath).timeout(this.timeout);\n };\n TimeoutFileSystem.prototype.dispose = function () {\n if (api_1.isDisposable(this.fs))\n this.fs.dispose();\n };\n return TimeoutFileSystem;\n}());\nexports.TimeoutFileSystem = TimeoutFileSystem;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/timeout-fs.ts\n// module id = 307\n// module chunks = 0 1\n//# sourceURL=webpack:///./src/timeout-fs.ts?");
2824
2825/***/ },
2826/* 308 */
2827/*!********************************************!*\
2828 !*** ./test-kit/drivers/events-matcher.ts ***!
2829 \********************************************/
2830/***/ function(module, exports, __webpack_require__) {
2831
2832 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chai_1 = __webpack_require__(/*! chai */ 7);\nvar Promise = __webpack_require__(/*! bluebird */ 47);\nvar retry = __webpack_require__(/*! bluebird-retry */ 309);\nvar EventsMatcher = (function () {\n function EventsMatcher(options) {\n this.options = options;\n this.events = [];\n }\n EventsMatcher.prototype.track = function (emitter) {\n var _this = this;\n var eventNames = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n eventNames[_i - 1] = arguments[_i];\n }\n eventNames.forEach(function (eventName) { return emitter.on(eventName, function (event) {\n chai_1.expect(event.type, \"type of event dispatched as \" + eventName).to.eql(eventName);\n _this.events.push(event);\n }); });\n };\n EventsMatcher.prototype.expectEvents = function (events) {\n if (events.length) {\n return retry(this.checkEvents.bind(this, events), this.options)\n .then(function () { return undefined; })\n .catch(function (e) {\n throw e.failure;\n });\n }\n else {\n chai_1.expect(this.events).to.eql([]);\n return Promise.resolve();\n }\n };\n EventsMatcher.prototype.expect = function (events) {\n var _this = this;\n return this.expectEvents(events)\n .delay(this.options.noExtraEventsGrace)\n .then(function () {\n chai_1.expect(_this.events, 'no further events after matching').to.eql([]);\n });\n };\n EventsMatcher.prototype.checkEvents = function (events) {\n try {\n chai_1.expect(this.events).to.containSubset(events);\n this.events = [];\n return Promise.resolve();\n }\n catch (e) {\n return Promise.reject(e);\n }\n };\n return EventsMatcher;\n}());\nexports.EventsMatcher = EventsMatcher;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./test-kit/drivers/events-matcher.ts\n// module id = 308\n// module chunks = 0 1\n//# sourceURL=webpack:///./test-kit/drivers/events-matcher.ts?");
2833
2834/***/ },
2835/* 309 */
2836/*!************************************************!*\
2837 !*** ./~/bluebird-retry/lib/bluebird-retry.js ***!
2838 \************************************************/
2839/***/ function(module, exports, __webpack_require__) {
2840
2841 eval("var Promise = __webpack_require__(/*! bluebird */ 47);\n\n// Subclass of Error that can be thrown to indicate that retry should stop.\n//\n// If called with an instance of Error subclass, then the retry promise will be\n// rejected with the given error.\n//\n// Otherwise the cancel error object itself is propagated to the caller.\n//\nfunction StopError(err) {\n this.name = 'StopError';\n if (err instanceof Error) {\n this.err = err\n } else {\n this.message = err || 'cancelled'\n }\n}\nStopError.prototype = Object.create(Error.prototype);\n\nretry.StopError = StopError;\n\n\n// Retry `func` until it succeeds.\n//\n// For each attempt, invokes `func` with `options.args` as arguments and\n// `options.context` as `this`.\n//\n// Waits `options.interval` milliseconds (default 1000) between attempts.\n//\n// Increases wait by a factor of `options.backoff` each interval, up to\n// a limit of `options.max_interval`.\n//\n// Keeps trying until `options.timeout` milliseconds have elapsed,\n// or `options.max_tries` have been attempted, whichever comes first.\n//\n// If neither is specified, then the default is to make 5 attempts.\n//\n\nfunction retry(func, options) {\n options = options || {};\n\n var interval = typeof options.interval === 'number' ? options.interval : 1000;\n\n var max_tries, giveup_time;\n if (typeof(options.max_tries) !== 'undefined') {\n max_tries = options.max_tries;\n }\n\n if (options.timeout) {\n giveup_time = new Date().getTime() + options.timeout;\n }\n\n if (!max_tries && !giveup_time) {\n max_tries = 5;\n }\n\n var tries = 0;\n var start = new Date().getTime();\n\n // If the user didn't supply a predicate function then add one that\n // always succeeds.\n //\n // This is used in bluebird's filtered catch to flag the error types\n // that should retry.\n var predicate = options.predicate || function(err) { return true; }\n var stopped = false;\n\n function try_once() {\n var tryStart = new Date().getTime();\n return Promise.attempt(function() {\n return func.apply(options.context, options.args);\n })\n .caught(StopError, function(err) {\n stopped = true;\n if (err.err instanceof Error) {\n return Promise.reject(err.err);\n } else {\n return Promise.reject(err);\n }\n })\n .caught(predicate, function(err) {\n if (stopped) {\n return Promise.reject(err);\n }\n ++tries;\n if (tries > 1) {\n interval = backoff(interval, options);\n }\n var now = new Date().getTime();\n\n if ((max_tries && (tries === max_tries) ||\n (giveup_time && (now + interval >= giveup_time)))) {\n\n if (! (err instanceof Error)) {\n var failure = err;\n\n if (failure) {\n if (typeof failure !== 'string') {\n failure = JSON.stringify(failure);\n }\n }\n\n err = new Error('rejected with non-error: ' + failure);\n err.failure = failure;\n } else if (options.throw_original) {\n return Promise.reject(err);\n }\n\n var timeout = new Error('operation timed out after ' + (now - start) + ' ms, ' + tries + ' tries with error: ' + err.message);\n timeout.failure = err;\n timeout.code = 'ETIMEDOUT';\n return Promise.reject(timeout);\n } else {\n var delay = interval - (now - tryStart);\n if (delay <= 0) {\n return try_once();\n } else {\n return Promise.delay(delay).then(try_once);\n }\n }\n });\n }\n return try_once();\n}\n\n// Return the updated interval after applying the various backoff options\nfunction backoff(interval, options) {\n if (options.backoff) {\n interval = interval * options.backoff;\n }\n\n if (options.max_interval) {\n interval = Math.min(interval, options.max_interval);\n }\n\n return interval;\n}\n\nmodule.exports = retry;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bluebird-retry/lib/bluebird-retry.js\n// module id = 309\n// module chunks = 0 1\n//# sourceURL=webpack:///./~/bluebird-retry/lib/bluebird-retry.js?");
2842
2843/***/ },
2844/* 310 */
2845/*!**********************************************!*\
2846 !*** ./test-kit/test/events-matcher.spec.ts ***!
2847 \**********************************************/
2848/***/ function(module, exports, __webpack_require__) {
2849
2850 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar events_matcher_1 = __webpack_require__(/*! ../drivers/events-matcher */ 308);\nvar eventemitter3_1 = __webpack_require__(/*! eventemitter3 */ 95);\nvar chai_1 = __webpack_require__(/*! chai */ 7);\ndescribe('events test driver', function () {\n var matcher;\n var emitter;\n beforeEach(function () {\n emitter = new eventemitter3_1.EventEmitter();\n matcher = new events_matcher_1.EventsMatcher({ interval: 10, timeout: 100, noExtraEventsGrace: 20 });\n });\n it('failure when event has no type field', function () {\n matcher.track(emitter, 'event');\n return chai_1.expect(function () { return emitter.emit('event', { foo: 'bar' }); }).to.throw(Error);\n });\n it('failure when event has incorrect type field', function () {\n matcher.track(emitter, 'event');\n return chai_1.expect(function () { return emitter.emit('event', { type: 'eventz', foo: 'bar' }); }).to.throw(Error);\n });\n it('success when existing events', function () {\n matcher.track(emitter, 'event');\n emitter.emit('event', { type: 'event', foo: 'bar' });\n return matcher.expect([{ type: 'event', foo: 'bar' }]);\n });\n it('success when subset events', function () {\n matcher.track(emitter, 'event');\n emitter.emit('event', { type: 'event', foo: 'bar' });\n return matcher.expect([{ type: 'event' }]);\n });\n it('error contains original chai data', function () {\n matcher.track(emitter, 'event');\n emitter.emit('event', { type: 'event', foo: 'bar' });\n var rejection = matcher.expect([{ type: 'event', foo: 'baz' }]).catch(function (e) { return e; });\n return chai_1.expect(rejection).to.eventually.satisfy(function (err) { return chai_1.expect(err).to.containSubset({ actual: [{ foo: 'bar' }], expected: [{ foo: 'baz' }] }); });\n });\n it('failure when mismatched events', function () {\n matcher.track(emitter, 'event');\n emitter.emit('event', { type: 'event', foo: 'bar' });\n return chai_1.expect(matcher.expect([{ type: 'event', foo: 'baz' }])).to.be.rejectedWith(/{ type: 'event', foo: 'bar' }/);\n });\n it('success when matching delayed events', function () {\n matcher.track(emitter, 'event');\n var result = matcher.expect([{ type: 'event', foo: 'bar' }]);\n setTimeout(function () { return emitter.emit('event', { type: 'event', foo: 'bar' }); }, 25);\n return result;\n });\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./test-kit/test/events-matcher.spec.ts\n// module id = 310\n// module chunks = 0 1\n//# sourceURL=webpack:///./test-kit/test/events-matcher.spec.ts?");
2851
2852/***/ },
2853/* 311 */
2854/*!***************************************!*\
2855 !*** ./test-kit/test/slow-fs.spec.ts ***!
2856 \***************************************/
2857/***/ function(module, exports, __webpack_require__) {
2858
2859 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Promise = __webpack_require__(/*! bluebird */ 47);\nvar chai_1 = __webpack_require__(/*! chai */ 7);\nvar implementation_suite_1 = __webpack_require__(/*! ../../test/implementation-suite */ 87);\nvar slow_fs_1 = __webpack_require__(/*! ../drivers/slow-fs */ 312);\ndescribe('the slow (delayed) file system imeplementation', function () {\n var delay = 200;\n var accuracyFactor = 0.9;\n implementation_suite_1.assertFileSystemContract(function () { return Promise.resolve(new slow_fs_1.SlowFs(delay)); }, { interval: 1, noExtraEventsGrace: 10, timeout: 30 });\n describe(\"delayed methods\", function () {\n var fs;\n var startTimestamp;\n beforeEach(function () {\n startTimestamp = Date.now();\n return Promise.resolve(new slow_fs_1.SlowFs(delay)).then(function (newFs) { return fs = newFs; });\n });\n it(\"delay the dir creation, reading tree and deleting\", function () {\n return fs.ensureDirectory(implementation_suite_1.dirName)\n .then(function () { return fs.loadDirectoryTree(); })\n .then(function () { return fs.deleteDirectory(implementation_suite_1.dirName); })\n .then(function () { return chai_1.expect(Date.now() - startTimestamp).to.be.at.least(delay * 3 * accuracyFactor); });\n });\n it(\"delay the file saving, reading and deleting\", function () {\n return fs.saveFile(implementation_suite_1.fileName, implementation_suite_1.content)\n .then(function () { return fs.loadTextFile(implementation_suite_1.fileName); })\n .then(function () { return fs.deleteFile(implementation_suite_1.fileName); })\n .then(function () { return chai_1.expect(Date.now() - startTimestamp).to.be.at.least(delay * 3 * accuracyFactor); });\n });\n });\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./test-kit/test/slow-fs.spec.ts\n// module id = 311\n// module chunks = 0 1\n//# sourceURL=webpack:///./test-kit/test/slow-fs.spec.ts?");
2860
2861/***/ },
2862/* 312 */
2863/*!*************************************!*\
2864 !*** ./test-kit/drivers/slow-fs.ts ***!
2865 \*************************************/
2866/***/ function(module, exports, __webpack_require__) {
2867
2868 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Promise = __webpack_require__(/*! bluebird */ 47);\nvar api_1 = __webpack_require__(/*! ../../src/api */ 89);\nvar memory_fs_1 = __webpack_require__(/*! ../../src/memory-fs */ 91);\nvar implementation_suite_1 = __webpack_require__(/*! ../../test/implementation-suite */ 87);\nvar SlowFs = (function () {\n function SlowFs(delay) {\n this.delay = delay;\n this.fs = new memory_fs_1.MemoryFileSystem(undefined, [implementation_suite_1.ignoredDir, implementation_suite_1.ignoredFile]);\n this.events = this.fs.events;\n }\n SlowFs.prototype.saveFile = function (fullPath, newContent) {\n var _this = this;\n return Promise.delay(this.delay).then(function () { return _this.fs.saveFile(fullPath, newContent); });\n };\n SlowFs.prototype.deleteFile = function (fullPath) {\n var _this = this;\n return Promise.delay(this.delay).then(function () { return _this.fs.deleteFile(fullPath); });\n };\n SlowFs.prototype.deleteDirectory = function (fullPath, recursive) {\n var _this = this;\n if (recursive === void 0) { recursive = false; }\n return Promise.delay(this.delay).then(function () { return _this.fs.deleteDirectory(fullPath, recursive); });\n };\n SlowFs.prototype.ensureDirectory = function (fullPath) {\n var _this = this;\n return Promise.delay(this.delay).then(function () { return _this.fs.ensureDirectory(fullPath); });\n };\n SlowFs.prototype.loadTextFile = function (fullPath) {\n var _this = this;\n return Promise.delay(this.delay).then(function () { return _this.fs.loadTextFile(fullPath); });\n };\n SlowFs.prototype.loadDirectoryTree = function () {\n var _this = this;\n return Promise.delay(this.delay).then(function () { return _this.fs.loadDirectoryTree(); });\n };\n SlowFs.prototype.dispose = function () {\n var _this = this;\n setTimeout(function () { return api_1.isDisposable(_this.fs) && _this.fs.dispose(); }, this.delay);\n };\n return SlowFs;\n}());\nexports.SlowFs = SlowFs;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./test-kit/drivers/slow-fs.ts\n// module id = 312\n// module chunks = 0 1\n//# sourceURL=webpack:///./test-kit/drivers/slow-fs.ts?");
2869
2870/***/ },
2871/* 313 */
2872/*!*******************************!*\
2873 !*** ./test/cache-fs.spec.ts ***!
2874 \*******************************/
2875/***/ function(module, exports, __webpack_require__) {
2876
2877 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Promise = __webpack_require__(/*! bluebird */ 47);\nvar chai_1 = __webpack_require__(/*! chai */ 7);\nvar events_matcher_1 = __webpack_require__(/*! ../test-kit/drivers/events-matcher */ 308);\nvar slow_fs_1 = __webpack_require__(/*! ../test-kit/drivers/slow-fs */ 312);\nvar universal_1 = __webpack_require__(/*! ../src/universal */ 88);\nvar implementation_suite_1 = __webpack_require__(/*! ./implementation-suite */ 87);\ndescribe(\"the cache file system implementation\", function () {\n var eventMatcherOptions = {\n interval: 1,\n noExtraEventsGrace: 10,\n timeout: 30\n };\n implementation_suite_1.assertFileSystemContract(function () { return Promise.resolve(new universal_1.CacheFileSystem(new universal_1.MemoryFileSystem(undefined, [implementation_suite_1.ignoredDir, implementation_suite_1.ignoredFile]))); }, eventMatcherOptions);\n describe(\"using slow FileSystem\", function () {\n var timeout = 200;\n var timer;\n var fs;\n var slow;\n var startTimestamp;\n var matcher;\n beforeEach(function () {\n startTimestamp = Date.now();\n slow = new slow_fs_1.SlowFs(timeout);\n fs = new universal_1.CacheFileSystem(slow);\n matcher = new events_matcher_1.EventsMatcher(eventMatcherOptions);\n matcher.track.apply(matcher, [fs.events].concat(universal_1.fileSystemEventNames));\n });\n it('loads file faster after it has been saved', function () {\n return fs.saveFile(implementation_suite_1.fileName, implementation_suite_1.content)\n .then(function () { return fs.loadTextFile(implementation_suite_1.fileName); })\n .then(function () { return chai_1.expect(Date.now() - startTimestamp).to.be.lessThan(timeout * 2); });\n });\n it('loads file faster after it has been saved from outside', function () {\n var onFileCreated = new Promise(function (resolve, reject) {\n fs.events.once('fileCreated', function () {\n fs.loadTextFile(implementation_suite_1.fileName)\n .then(function () { return resolve(Date.now() - startTimestamp); });\n });\n });\n slow.saveFile(implementation_suite_1.fileName, implementation_suite_1.content);\n return chai_1.expect(onFileCreated).to.be.eventually.lessThan(timeout * 2);\n });\n it('loads tree faster after it has been loaded before', function () {\n return fs.loadDirectoryTree()\n .then(function () { return fs.loadDirectoryTree(); })\n .then(function () { return chai_1.expect(Date.now() - startTimestamp).to.be.lessThan(timeout * 2); });\n });\n });\n describe(\"unexpected error behaviour\", function () {\n var fs;\n var original;\n var matcher;\n beforeEach(function () {\n original = new universal_1.MemoryFileSystem();\n fs = new universal_1.CacheFileSystem(original);\n matcher = new events_matcher_1.EventsMatcher({\n interval: 2,\n noExtraEventsGrace: 150,\n timeout: 300\n });\n matcher.track.apply(matcher, [fs.events].concat(universal_1.fileSystemEventNames));\n });\n it('emits `fileCreated` if there is not cached file after error', function () {\n original.events.removeAllListeners('fileCreated');\n return original.saveFile(implementation_suite_1.fileName, implementation_suite_1.content)\n .then(function () { return matcher.expect([]); })\n .then(function () { return original.events.emit('unexpectedError', { type: 'unexpectedError' }); })\n .then(function () { return matcher.expect([{ type: 'fileCreated', fullPath: implementation_suite_1.fileName, newContent: implementation_suite_1.content }]); });\n });\n it('emits `directoryCreated` if there is not cached dir after error', function () {\n original.events.removeAllListeners('directoryCreated');\n return original.ensureDirectory(implementation_suite_1.dirName)\n .then(function () { return matcher.expect([]); })\n .then(function () { return original.events.emit('unexpectedError', { type: 'unexpectedError' }); })\n .then(function () { return matcher.expect([{ type: 'directoryCreated', fullPath: implementation_suite_1.dirName }]); });\n });\n it('emits `fileDeleted` if there is cached file and no real file after error', function () {\n return fs.saveFile(implementation_suite_1.fileName, implementation_suite_1.content).then(function () {\n original.events.removeAllListeners('fileDeleted');\n return original.deleteFile(implementation_suite_1.fileName)\n .then(function () { return matcher.expect([{ type: 'fileCreated', fullPath: implementation_suite_1.fileName }]); })\n .then(function () { return original.events.emit('unexpectedError', { type: 'unexpectedError' }); })\n .then(function () { return matcher.expect([{ type: 'fileDeleted', fullPath: implementation_suite_1.fileName }]); });\n });\n });\n it('emits `directoryDeleted` if there is cached dir and no real dir after error', function () {\n return fs.ensureDirectory(implementation_suite_1.dirName).then(function () {\n original.events.removeAllListeners('directoryDeleted');\n return original.deleteDirectory(implementation_suite_1.dirName)\n .then(function () { return matcher.expect([{ type: 'directoryCreated', fullPath: implementation_suite_1.dirName }]); })\n .then(function () { return original.events.emit('unexpectedError', { type: 'unexpectedError' }); })\n .then(function () { return matcher.expect([{ type: 'directoryDeleted', fullPath: implementation_suite_1.dirName }]); });\n });\n });\n it('emits `unexpectedError` if cache created with `rescanOnError = false` flag', function () {\n var fs = new universal_1.CacheFileSystem(original, false);\n var matcher = new events_matcher_1.EventsMatcher(eventMatcherOptions);\n matcher.track.apply(matcher, [fs.events].concat(universal_1.fileSystemEventNames));\n original.events.emit('unexpectedError', { type: 'unexpectedError' });\n return matcher.expect([{ type: 'unexpectedError' }]);\n });\n });\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./test/cache-fs.spec.ts\n// module id = 313\n// module chunks = 0 1\n//# sourceURL=webpack:///./test/cache-fs.spec.ts?");
2878
2879/***/ },
2880/* 314 */
2881/*!*********************************!*\
2882 !*** ./test/timeout-fs.spec.ts ***!
2883 \*********************************/
2884/***/ function(module, exports, __webpack_require__) {
2885
2886 eval("\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Promise = __webpack_require__(/*! bluebird */ 47);\nvar chai_1 = __webpack_require__(/*! chai */ 7);\nvar implementation_suite_1 = __webpack_require__(/*! ./implementation-suite */ 87);\nvar slow_fs_1 = __webpack_require__(/*! ../test-kit/drivers/slow-fs */ 312);\nvar universal_1 = __webpack_require__(/*! ../src/universal */ 88);\ndescribe('the timeout file system imeplementation', function () {\n var timeout = 200;\n var accuracyFactor = 0.9;\n implementation_suite_1.assertFileSystemContract(function () {\n return Promise.resolve(new universal_1.TimeoutFileSystem(timeout, new universal_1.MemoryFileSystem(undefined, [implementation_suite_1.ignoredDir, implementation_suite_1.ignoredFile])));\n }, { interval: 1, noExtraEventsGrace: 10, timeout: 30 });\n describe(\"delayed timeout test\", function () {\n var fs;\n var startTimestamp;\n var endTimestamp;\n var delay = timeout * 2;\n beforeEach(function () {\n startTimestamp = Date.now();\n fs = new universal_1.TimeoutFileSystem(timeout, new slow_fs_1.SlowFs(delay));\n });\n it(\"ensureDirectory exit before delay is over\", function () {\n return chai_1.expect(fs.ensureDirectory(implementation_suite_1.dirName)).to.eventually.be.rejectedWith('timed out')\n .then(function () { return chai_1.expect(startTimestamp - Date.now()).to.be.below(delay); });\n });\n it(\"saveFile exit before delay is over\", function () {\n return chai_1.expect(fs.saveFile(implementation_suite_1.dirName + \"\\\\\" + implementation_suite_1.fileName, '#goodnessSquad')).to.eventually.be.rejectedWith('timed out')\n .then(function () { return chai_1.expect(startTimestamp - Date.now()).to.be.below(delay); });\n });\n it(\"deleteFile exit before delay is over\", function () {\n return chai_1.expect(fs.deleteFile(implementation_suite_1.dirName + \"\\\\\" + implementation_suite_1.fileName)).to.eventually.be.rejectedWith('timed out')\n .then(function () { return chai_1.expect(startTimestamp - Date.now()).to.be.below(delay); });\n });\n it(\"deleteDirectory exit before delay is over\", function () {\n return chai_1.expect(fs.deleteDirectory(implementation_suite_1.dirName)).to.eventually.be.rejectedWith('timed out')\n .then(function () { return chai_1.expect(startTimestamp - Date.now()).to.be.below(delay); });\n });\n it(\"loadTextFile exit before delay is over\", function () {\n return chai_1.expect(fs.loadTextFile(implementation_suite_1.dirName)).to.eventually.be.rejectedWith('timed out')\n .then(function () { return chai_1.expect(startTimestamp - Date.now()).to.be.below(delay); });\n });\n it(\"loadDirectoryTree exit before delay is over\", function () {\n return chai_1.expect(fs.loadDirectoryTree()).to.eventually.be.rejectedWith('timed out')\n .then(function () { return chai_1.expect(startTimestamp - Date.now()).to.be.below(delay); });\n });\n });\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./test/timeout-fs.spec.ts\n// module id = 314\n// module chunks = 0 1\n//# sourceURL=webpack:///./test/timeout-fs.spec.ts?");
2887
2888/***/ },
2889/* 315 */
2890/*!******************************************!*\
2891 !*** ./~/mocha-loader!./test/browser.ts ***!
2892 \******************************************/
2893/***/ function(module, exports, __webpack_require__) {
2894
2895 eval("__webpack_require__(/*! !./~/mocha-loader/web.js */ 316);\nif(typeof window !== 'undefined' && window.initMochaPhantomJS) { window.initMochaPhantomJS(); }\nmocha.setup({\"ui\":\"bdd\"});\n__webpack_require__(/*! !./~/ts-loader?logLevel=warn!./test/browser.ts */ 1)\n__webpack_require__(/*! !./~/mocha-loader/start.js */ 324);\nif(false) {\n\tmodule.hot.accept();\n\tmodule.hot.dispose(function() {\n\t\tmocha.suite.suites.length = 0;\n\t\tvar stats = document.getElementById('mocha-stats');\n\t\tvar report = document.getElementById('mocha-report');\n\t\tstats && stats.parentNode.removeChild(stats);\n\t\treport && report.parentNode.removeChild(report);\n\t});\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/mocha-loader!./test/browser.ts\n// module id = 315\n// module chunks = 1\n//# sourceURL=webpack:///./test/browser.ts?./~/mocha-loader");
2896
2897/***/ },
2898/* 316 */
2899/*!*******************************!*\
2900 !*** ./~/mocha-loader/web.js ***!
2901 \*******************************/
2902/***/ function(module, exports, __webpack_require__) {
2903
2904 eval("if (! document.getElementById(\"mocha\")) { document.write(\"<div id=\\\"mocha\\\"></div>\"); }\n\n__webpack_require__(/*! style-loader!css-loader!mocha/mocha.css */ 317);\n__webpack_require__(/*! script-loader!mocha/mocha.js */ 321);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/mocha-loader/web.js\n// module id = 316\n// module chunks = 1\n//# sourceURL=webpack:///./~/mocha-loader/web.js?");
2905
2906/***/ },
2907/* 317 */
2908/*!***********************************************************!*\
2909 !*** ./~/style-loader!./~/css-loader!./~/mocha/mocha.css ***!
2910 \***********************************************************/
2911/***/ function(module, exports, __webpack_require__) {
2912
2913 eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../css-loader!./mocha.css */ 318);\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = __webpack_require__(/*! ../style-loader/addStyles.js */ 320)(content, {});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(false) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../css-loader/index.js!./mocha.css\", function() {\n\t\t\tvar newContent = require(\"!!../css-loader/index.js!./mocha.css\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/style-loader!./~/css-loader!./~/mocha/mocha.css\n// module id = 317\n// module chunks = 1\n//# sourceURL=webpack:///./~/mocha/mocha.css?./~/style-loader!./~/css-loader");
2914
2915/***/ },
2916/* 318 */
2917/*!******************************************!*\
2918 !*** ./~/css-loader!./~/mocha/mocha.css ***!
2919 \******************************************/
2920/***/ function(module, exports, __webpack_require__) {
2921
2922 eval("exports = module.exports = __webpack_require__(/*! ../css-loader/lib/css-base.js */ 319)();\n// imports\n\n\n// module\nexports.push([module.id, \"@charset \\\"utf-8\\\";\\n\\nbody {\\n margin:0;\\n}\\n\\n#mocha {\\n font: 20px/1.5 \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif;\\n margin: 60px 50px;\\n}\\n\\n#mocha ul,\\n#mocha li {\\n margin: 0;\\n padding: 0;\\n}\\n\\n#mocha ul {\\n list-style: none;\\n}\\n\\n#mocha h1,\\n#mocha h2 {\\n margin: 0;\\n}\\n\\n#mocha h1 {\\n margin-top: 15px;\\n font-size: 1em;\\n font-weight: 200;\\n}\\n\\n#mocha h1 a {\\n text-decoration: none;\\n color: inherit;\\n}\\n\\n#mocha h1 a:hover {\\n text-decoration: underline;\\n}\\n\\n#mocha .suite .suite h1 {\\n margin-top: 0;\\n font-size: .8em;\\n}\\n\\n#mocha .hidden {\\n display: none;\\n}\\n\\n#mocha h2 {\\n font-size: 12px;\\n font-weight: normal;\\n cursor: pointer;\\n}\\n\\n#mocha .suite {\\n margin-left: 15px;\\n}\\n\\n#mocha .test {\\n margin-left: 15px;\\n overflow: hidden;\\n}\\n\\n#mocha .test.pending:hover h2::after {\\n content: '(pending)';\\n font-family: arial, sans-serif;\\n}\\n\\n#mocha .test.pass.medium .duration {\\n background: #c09853;\\n}\\n\\n#mocha .test.pass.slow .duration {\\n background: #b94a48;\\n}\\n\\n#mocha .test.pass::before {\\n content: '\\\\2713';\\n font-size: 12px;\\n display: block;\\n float: left;\\n margin-right: 5px;\\n color: #00d6b2;\\n}\\n\\n#mocha .test.pass .duration {\\n font-size: 9px;\\n margin-left: 5px;\\n padding: 2px 5px;\\n color: #fff;\\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);\\n -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.2);\\n -webkit-border-radius: 5px;\\n -moz-border-radius: 5px;\\n -ms-border-radius: 5px;\\n -o-border-radius: 5px;\\n border-radius: 5px;\\n}\\n\\n#mocha .test.pass.fast .duration {\\n display: none;\\n}\\n\\n#mocha .test.pending {\\n color: #0b97c4;\\n}\\n\\n#mocha .test.pending::before {\\n content: '\\\\25E6';\\n color: #0b97c4;\\n}\\n\\n#mocha .test.fail {\\n color: #c00;\\n}\\n\\n#mocha .test.fail pre {\\n color: black;\\n}\\n\\n#mocha .test.fail::before {\\n content: '\\\\2716';\\n font-size: 12px;\\n display: block;\\n float: left;\\n margin-right: 5px;\\n color: #c00;\\n}\\n\\n#mocha .test pre.error {\\n color: #c00;\\n max-height: 300px;\\n overflow: auto;\\n}\\n\\n#mocha .test .html-error {\\n overflow: auto;\\n color: black;\\n line-height: 1.5;\\n display: block;\\n float: left;\\n clear: left;\\n font: 12px/1.5 monaco, monospace;\\n margin: 5px;\\n padding: 15px;\\n border: 1px solid #eee;\\n max-width: 85%; /*(1)*/\\n max-width: -webkit-calc(100% - 42px);\\n max-width: -moz-calc(100% - 42px);\\n max-width: calc(100% - 42px); /*(2)*/\\n max-height: 300px;\\n word-wrap: break-word;\\n border-bottom-color: #ddd;\\n -webkit-box-shadow: 0 1px 3px #eee;\\n -moz-box-shadow: 0 1px 3px #eee;\\n box-shadow: 0 1px 3px #eee;\\n -webkit-border-radius: 3px;\\n -moz-border-radius: 3px;\\n border-radius: 3px;\\n}\\n\\n#mocha .test .html-error pre.error {\\n border: none;\\n -webkit-border-radius: 0;\\n -moz-border-radius: 0;\\n border-radius: 0;\\n -webkit-box-shadow: 0;\\n -moz-box-shadow: 0;\\n box-shadow: 0;\\n padding: 0;\\n margin: 0;\\n margin-top: 18px;\\n max-height: none;\\n}\\n\\n/**\\n * (1): approximate for browsers not supporting calc\\n * (2): 42 = 2*15 + 2*10 + 2*1 (padding + margin + border)\\n * ^^ seriously\\n */\\n#mocha .test pre {\\n display: block;\\n float: left;\\n clear: left;\\n font: 12px/1.5 monaco, monospace;\\n margin: 5px;\\n padding: 15px;\\n border: 1px solid #eee;\\n max-width: 85%; /*(1)*/\\n max-width: -webkit-calc(100% - 42px);\\n max-width: -moz-calc(100% - 42px);\\n max-width: calc(100% - 42px); /*(2)*/\\n word-wrap: break-word;\\n border-bottom-color: #ddd;\\n -webkit-box-shadow: 0 1px 3px #eee;\\n -moz-box-shadow: 0 1px 3px #eee;\\n box-shadow: 0 1px 3px #eee;\\n -webkit-border-radius: 3px;\\n -moz-border-radius: 3px;\\n border-radius: 3px;\\n}\\n\\n#mocha .test h2 {\\n position: relative;\\n}\\n\\n#mocha .test a.replay {\\n position: absolute;\\n top: 3px;\\n right: 0;\\n text-decoration: none;\\n vertical-align: middle;\\n display: block;\\n width: 15px;\\n height: 15px;\\n line-height: 15px;\\n text-align: center;\\n background: #eee;\\n font-size: 15px;\\n -webkit-border-radius: 15px;\\n -moz-border-radius: 15px;\\n border-radius: 15px;\\n -webkit-transition:opacity 200ms;\\n -moz-transition:opacity 200ms;\\n -o-transition:opacity 200ms;\\n transition: opacity 200ms;\\n opacity: 0.3;\\n color: #888;\\n}\\n\\n#mocha .test:hover a.replay {\\n opacity: 1;\\n}\\n\\n#mocha-report.pass .test.fail {\\n display: none;\\n}\\n\\n#mocha-report.fail .test.pass {\\n display: none;\\n}\\n\\n#mocha-report.pending .test.pass,\\n#mocha-report.pending .test.fail {\\n display: none;\\n}\\n#mocha-report.pending .test.pass.pending {\\n display: block;\\n}\\n\\n#mocha-error {\\n color: #c00;\\n font-size: 1.5em;\\n font-weight: 100;\\n letter-spacing: 1px;\\n}\\n\\n#mocha-stats {\\n position: fixed;\\n top: 15px;\\n right: 10px;\\n font-size: 12px;\\n margin: 0;\\n color: #888;\\n z-index: 1;\\n}\\n\\n#mocha-stats .progress {\\n float: right;\\n padding-top: 0;\\n\\n /**\\n * Set safe initial values, so mochas .progress does not inherit these\\n * properties from Bootstrap .progress (which causes .progress height to\\n * equal line height set in Bootstrap).\\n */\\n height: auto;\\n -webkit-box-shadow: none;\\n -moz-box-shadow: none;\\n box-shadow: none;\\n background-color: initial;\\n}\\n\\n#mocha-stats em {\\n color: black;\\n}\\n\\n#mocha-stats a {\\n text-decoration: none;\\n color: inherit;\\n}\\n\\n#mocha-stats a:hover {\\n border-bottom: 1px solid #eee;\\n}\\n\\n#mocha-stats li {\\n display: inline-block;\\n margin: 0 5px;\\n list-style: none;\\n padding-top: 11px;\\n}\\n\\n#mocha-stats canvas {\\n width: 40px;\\n height: 40px;\\n}\\n\\n#mocha code .comment { color: #ddd; }\\n#mocha code .init { color: #2f6fad; }\\n#mocha code .string { color: #5890ad; }\\n#mocha code .keyword { color: #8a6343; }\\n#mocha code .number { color: #2f6fad; }\\n\\n@media screen and (max-device-width: 480px) {\\n #mocha {\\n margin: 60px 0px;\\n }\\n\\n #mocha #stats {\\n position: absolute;\\n }\\n}\\n\", \"\"]);\n\n// exports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/mocha/mocha.css\n// module id = 318\n// module chunks = 1\n//# sourceURL=webpack:///./~/mocha/mocha.css?./~/css-loader");
2923
2924/***/ },
2925/* 319 */
2926/*!**************************************!*\
2927 !*** ./~/css-loader/lib/css-base.js ***!
2928 \**************************************/
2929/***/ function(module, exports) {
2930
2931 eval("/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\n// css base code, injected by the css-loader\r\nmodule.exports = function() {\r\n\tvar list = [];\r\n\r\n\t// return the list of modules as css string\r\n\tlist.toString = function toString() {\r\n\t\tvar result = [];\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar item = this[i];\r\n\t\t\tif(item[2]) {\r\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(item[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result.join(\"\");\r\n\t};\r\n\r\n\t// import a list of modules into the list\r\n\tlist.i = function(modules, mediaQuery) {\r\n\t\tif(typeof modules === \"string\")\r\n\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\tvar alreadyImportedModules = {};\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar id = this[i][0];\r\n\t\t\tif(typeof id === \"number\")\r\n\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t}\r\n\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\tvar item = modules[i];\r\n\t\t\t// skip already imported module\r\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t// when a module is imported multiple times with different media queries.\r\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t}\r\n\t\t\t\tlist.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\treturn list;\r\n};\r\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader/lib/css-base.js\n// module id = 319\n// module chunks = 1\n//# sourceURL=webpack:///./~/css-loader/lib/css-base.js?");
2932
2933/***/ },
2934/* 320 */
2935/*!*************************************!*\
2936 !*** ./~/style-loader/addStyles.js ***!
2937 \*************************************/
2938/***/ function(module, exports, __webpack_require__) {
2939
2940 eval("/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nvar stylesInDom = {},\n\tmemoize = function(fn) {\n\t\tvar memo;\n\t\treturn function () {\n\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\treturn memo;\n\t\t};\n\t},\n\tisOldIE = memoize(function() {\n\t\treturn /msie [6-9]\\b/.test(self.navigator.userAgent.toLowerCase());\n\t}),\n\tgetHeadElement = memoize(function () {\n\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\n\t}),\n\tsingletonElement = null,\n\tsingletonCounter = 0,\n\tstyleElementsInsertedAtTop = [];\n\nmodule.exports = function(list, options) {\n\tif(false) {\n\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the bottom of <head>.\n\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list);\n\taddStylesToDom(styles, options);\n\n\treturn function update(newList) {\n\t\tvar mayRemove = [];\n\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\t\tfor(var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\n\t\t\t\t\tdomStyle.parts[j]();\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction addStylesToDom(styles, options) {\n\tfor(var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles(list) {\n\tvar styles = [];\n\tvar newStyles = {};\n\tfor(var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\t\tif(!newStyles[id])\n\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse\n\t\t\tnewStyles[id].parts.push(part);\n\t}\n\treturn styles;\n}\n\nfunction insertStyleElement(options, styleElement) {\n\tvar head = getHeadElement();\n\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\n\tif (options.insertAt === \"top\") {\n\t\tif(!lastStyleElementInsertedAtTop) {\n\t\t\thead.insertBefore(styleElement, head.firstChild);\n\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\thead.appendChild(styleElement);\n\t\t}\n\t\tstyleElementsInsertedAtTop.push(styleElement);\n\t} else if (options.insertAt === \"bottom\") {\n\t\thead.appendChild(styleElement);\n\t} else {\n\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\n\t}\n}\n\nfunction removeStyleElement(styleElement) {\n\tstyleElement.parentNode.removeChild(styleElement);\n\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\n\tif(idx >= 0) {\n\t\tstyleElementsInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement(options) {\n\tvar styleElement = document.createElement(\"style\");\n\tstyleElement.type = \"text/css\";\n\tinsertStyleElement(options, styleElement);\n\treturn styleElement;\n}\n\nfunction createLinkElement(options) {\n\tvar linkElement = document.createElement(\"link\");\n\tlinkElement.rel = \"stylesheet\";\n\tinsertStyleElement(options, linkElement);\n\treturn linkElement;\n}\n\nfunction addStyle(obj, options) {\n\tvar styleElement, update, remove;\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\n\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\n\t} else if(obj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\") {\n\t\tstyleElement = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t\tif(styleElement.href)\n\t\t\t\tURL.revokeObjectURL(styleElement.href);\n\t\t};\n\t} else {\n\t\tstyleElement = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle(newObj) {\n\t\tif(newObj) {\n\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\n\t\t\t\treturn;\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag(styleElement, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = styleElement.childNodes;\n\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\n\t\tif (childNodes.length) {\n\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyleElement.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag(styleElement, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyleElement.setAttribute(\"media\", media)\n\t}\n\n\tif(styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = css;\n\t} else {\n\t\twhile(styleElement.firstChild) {\n\t\t\tstyleElement.removeChild(styleElement.firstChild);\n\t\t}\n\t\tstyleElement.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink(linkElement, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\tif(sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = linkElement.href;\n\n\tlinkElement.href = URL.createObjectURL(blob);\n\n\tif(oldSrc)\n\t\tURL.revokeObjectURL(oldSrc);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/style-loader/addStyles.js\n// module id = 320\n// module chunks = 1\n//# sourceURL=webpack:///./~/style-loader/addStyles.js?");
2941
2942/***/ },
2943/* 321 */
2944/*!********************************************!*\
2945 !*** ./~/script-loader!./~/mocha/mocha.js ***!
2946 \********************************************/
2947/***/ function(module, exports, __webpack_require__) {
2948
2949 eval("__webpack_require__(/*! !./~/script-loader/addScript.js */ 322)(__webpack_require__(/*! !./~/raw-loader!./~/mocha/mocha.js */ 323))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/script-loader!./~/mocha/mocha.js\n// module id = 321\n// module chunks = 1\n//# sourceURL=webpack:///./~/mocha/mocha.js?./~/script-loader");
2950
2951/***/ },
2952/* 322 */
2953/*!**************************************!*\
2954 !*** ./~/script-loader/addScript.js ***!
2955 \**************************************/
2956/***/ function(module, exports) {
2957
2958 eval("/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\nmodule.exports = function(src) {\r\n\tif (typeof execScript !== \"undefined\")\r\n\t\texecScript(src);\r\n\telse\r\n\t\teval.call(null, src);\r\n}\r\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/script-loader/addScript.js\n// module id = 322\n// module chunks = 1\n//# sourceURL=webpack:///./~/script-loader/addScript.js?");
2959
2960/***/ },
2961/* 323 */
2962/*!*****************************************!*\
2963 !*** ./~/raw-loader!./~/mocha/mocha.js ***!
2964 \*****************************************/
2965/***/ function(module, exports) {
2966
2967 eval("module.exports = \"(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\\\"function\\\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\\\"Cannot find module '\\\"+o+\\\"'\\\");throw f.code=\\\"MODULE_NOT_FOUND\\\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\\\"function\\\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\\n(function (process,global){\\n'use strict';\\n\\n/* eslint no-unused-vars: off */\\n/* eslint-env commonjs */\\n\\n/**\\n * Shim process.stdout.\\n */\\n\\nprocess.stdout = require('browser-stdout')();\\n\\nvar Mocha = require('./lib/mocha');\\n\\n/**\\n * Create a Mocha instance.\\n *\\n * @return {undefined}\\n */\\n\\nvar mocha = new Mocha({ reporter: 'html' });\\n\\n/**\\n * Save timer references to avoid Sinon interfering (see GH-237).\\n */\\n\\nvar Date = global.Date;\\nvar setTimeout = global.setTimeout;\\nvar setInterval = global.setInterval;\\nvar clearTimeout = global.clearTimeout;\\nvar clearInterval = global.clearInterval;\\n\\nvar uncaughtExceptionHandlers = [];\\n\\nvar originalOnerrorHandler = global.onerror;\\n\\n/**\\n * Remove uncaughtException listener.\\n * Revert to original onerror handler if previously defined.\\n */\\n\\nprocess.removeListener = function (e, fn) {\\n if (e === 'uncaughtException') {\\n if (originalOnerrorHandler) {\\n global.onerror = originalOnerrorHandler;\\n } else {\\n global.onerror = function () {};\\n }\\n var i = Mocha.utils.indexOf(uncaughtExceptionHandlers, fn);\\n if (i !== -1) {\\n uncaughtExceptionHandlers.splice(i, 1);\\n }\\n }\\n};\\n\\n/**\\n * Implements uncaughtException listener.\\n */\\n\\nprocess.on = function (e, fn) {\\n if (e === 'uncaughtException') {\\n global.onerror = function (err, url, line) {\\n fn(new Error(err + ' (' + url + ':' + line + ')'));\\n return !mocha.allowUncaught;\\n };\\n uncaughtExceptionHandlers.push(fn);\\n }\\n};\\n\\n// The BDD UI is registered by default, but no UI will be functional in the\\n// browser without an explicit call to the overridden `mocha.ui` (see below).\\n// Ensure that this default UI does not expose its methods to the global scope.\\nmocha.suite.removeAllListeners('pre-require');\\n\\nvar immediateQueue = [];\\nvar immediateTimeout;\\n\\nfunction timeslice () {\\n var immediateStart = new Date().getTime();\\n while (immediateQueue.length && (new Date().getTime() - immediateStart) < 100) {\\n immediateQueue.shift()();\\n }\\n if (immediateQueue.length) {\\n immediateTimeout = setTimeout(timeslice, 0);\\n } else {\\n immediateTimeout = null;\\n }\\n}\\n\\n/**\\n * High-performance override of Runner.immediately.\\n */\\n\\nMocha.Runner.immediately = function (callback) {\\n immediateQueue.push(callback);\\n if (!immediateTimeout) {\\n immediateTimeout = setTimeout(timeslice, 0);\\n }\\n};\\n\\n/**\\n * Function to allow assertion libraries to throw errors directly into mocha.\\n * This is useful when running tests in a browser because window.onerror will\\n * only receive the 'message' attribute of the Error.\\n */\\nmocha.throwError = function (err) {\\n Mocha.utils.forEach(uncaughtExceptionHandlers, function (fn) {\\n fn(err);\\n });\\n throw err;\\n};\\n\\n/**\\n * Override ui to ensure that the ui functions are initialized.\\n * Normally this would happen in Mocha.prototype.loadFiles.\\n */\\n\\nmocha.ui = function (ui) {\\n Mocha.prototype.ui.call(this, ui);\\n this.suite.emit('pre-require', global, null, this);\\n return this;\\n};\\n\\n/**\\n * Setup mocha with the given setting options.\\n */\\n\\nmocha.setup = function (opts) {\\n if (typeof opts === 'string') {\\n opts = { ui: opts };\\n }\\n for (var opt in opts) {\\n if (opts.hasOwnProperty(opt)) {\\n this[opt](opts[opt]);\\n }\\n }\\n return this;\\n};\\n\\n/**\\n * Run mocha, returning the Runner.\\n */\\n\\nmocha.run = function (fn) {\\n var options = mocha.options;\\n mocha.globals('location');\\n\\n var query = Mocha.utils.parseQuery(global.location.search || '');\\n if (query.grep) {\\n mocha.grep(query.grep);\\n }\\n if (query.fgrep) {\\n mocha.fgrep(query.fgrep);\\n }\\n if (query.invert) {\\n mocha.invert();\\n }\\n\\n return Mocha.prototype.run.call(mocha, function (err) {\\n // The DOM Document is not available in Web Workers.\\n var document = global.document;\\n if (document && document.getElementById('mocha') && options.noHighlighting !== true) {\\n Mocha.utils.highlightTags('code');\\n }\\n if (fn) {\\n fn(err);\\n }\\n });\\n};\\n\\n/**\\n * Expose the process shim.\\n * https://github.com/mochajs/mocha/pull/916\\n */\\n\\nMocha.process = process;\\n\\n/**\\n * Expose mocha.\\n */\\n\\nglobal.Mocha = Mocha;\\nglobal.mocha = mocha;\\n\\n// this allows test/acceptance/required-tokens.js to pass; thus,\\n// you can now do `const describe = require('mocha').describe` in a\\n// browser context (assuming browserification). should fix #880\\nmodule.exports = global;\\n\\n}).call(this,require('_process'),typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{\\\"./lib/mocha\\\":14,\\\"_process\\\":82,\\\"browser-stdout\\\":41}],2:[function(require,module,exports){\\n'use strict';\\n\\nfunction noop () {}\\n\\nmodule.exports = function () {\\n return noop;\\n};\\n\\n},{}],3:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Module exports.\\n */\\n\\nexports.EventEmitter = EventEmitter;\\n\\n/**\\n * Object#toString reference.\\n */\\nvar objToString = Object.prototype.toString;\\n\\n/**\\n * Check if a value is an array.\\n *\\n * @api private\\n * @param {*} val The value to test.\\n * @return {boolean} true if the value is an array, otherwise false.\\n */\\nfunction isArray (val) {\\n return objToString.call(val) === '[object Array]';\\n}\\n\\n/**\\n * Event emitter constructor.\\n *\\n * @api public\\n */\\nfunction EventEmitter () {}\\n\\n/**\\n * Add a listener.\\n *\\n * @api public\\n * @param {string} name Event name.\\n * @param {Function} fn Event handler.\\n * @return {EventEmitter} Emitter instance.\\n */\\nEventEmitter.prototype.on = function (name, fn) {\\n if (!this.$events) {\\n this.$events = {};\\n }\\n\\n if (!this.$events[name]) {\\n this.$events[name] = fn;\\n } else if (isArray(this.$events[name])) {\\n this.$events[name].push(fn);\\n } else {\\n this.$events[name] = [this.$events[name], fn];\\n }\\n\\n return this;\\n};\\n\\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\\n\\n/**\\n * Adds a volatile listener.\\n *\\n * @api public\\n * @param {string} name Event name.\\n * @param {Function} fn Event handler.\\n * @return {EventEmitter} Emitter instance.\\n */\\nEventEmitter.prototype.once = function (name, fn) {\\n var self = this;\\n\\n function on () {\\n self.removeListener(name, on);\\n fn.apply(this, arguments);\\n }\\n\\n on.listener = fn;\\n this.on(name, on);\\n\\n return this;\\n};\\n\\n/**\\n * Remove a listener.\\n *\\n * @api public\\n * @param {string} name Event name.\\n * @param {Function} fn Event handler.\\n * @return {EventEmitter} Emitter instance.\\n */\\nEventEmitter.prototype.removeListener = function (name, fn) {\\n if (this.$events && this.$events[name]) {\\n var list = this.$events[name];\\n\\n if (isArray(list)) {\\n var pos = -1;\\n\\n for (var i = 0, l = list.length; i < l; i++) {\\n if (list[i] === fn || (list[i].listener && list[i].listener === fn)) {\\n pos = i;\\n break;\\n }\\n }\\n\\n if (pos < 0) {\\n return this;\\n }\\n\\n list.splice(pos, 1);\\n\\n if (!list.length) {\\n delete this.$events[name];\\n }\\n } else if (list === fn || (list.listener && list.listener === fn)) {\\n delete this.$events[name];\\n }\\n }\\n\\n return this;\\n};\\n\\n/**\\n * Remove all listeners for an event.\\n *\\n * @api public\\n * @param {string} name Event name.\\n * @return {EventEmitter} Emitter instance.\\n */\\nEventEmitter.prototype.removeAllListeners = function (name) {\\n if (name === undefined) {\\n this.$events = {};\\n return this;\\n }\\n\\n if (this.$events && this.$events[name]) {\\n this.$events[name] = null;\\n }\\n\\n return this;\\n};\\n\\n/**\\n * Get all listeners for a given event.\\n *\\n * @api public\\n * @param {string} name Event name.\\n * @return {EventEmitter} Emitter instance.\\n */\\nEventEmitter.prototype.listeners = function (name) {\\n if (!this.$events) {\\n this.$events = {};\\n }\\n\\n if (!this.$events[name]) {\\n this.$events[name] = [];\\n }\\n\\n if (!isArray(this.$events[name])) {\\n this.$events[name] = [this.$events[name]];\\n }\\n\\n return this.$events[name];\\n};\\n\\n/**\\n * Emit an event.\\n *\\n * @api public\\n * @param {string} name Event name.\\n * @return {boolean} true if at least one handler was invoked, else false.\\n */\\nEventEmitter.prototype.emit = function (name) {\\n if (!this.$events) {\\n return false;\\n }\\n\\n var handler = this.$events[name];\\n\\n if (!handler) {\\n return false;\\n }\\n\\n var args = Array.prototype.slice.call(arguments, 1);\\n\\n if (typeof handler === 'function') {\\n handler.apply(this, args);\\n } else if (isArray(handler)) {\\n var listeners = handler.slice();\\n\\n for (var i = 0, l = listeners.length; i < l; i++) {\\n listeners[i].apply(this, args);\\n }\\n } else {\\n return false;\\n }\\n\\n return true;\\n};\\n\\n},{}],4:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Expose `Progress`.\\n */\\n\\nmodule.exports = Progress;\\n\\n/**\\n * Initialize a new `Progress` indicator.\\n */\\nfunction Progress () {\\n this.percent = 0;\\n this.size(0);\\n this.fontSize(11);\\n this.font('helvetica, arial, sans-serif');\\n}\\n\\n/**\\n * Set progress size to `size`.\\n *\\n * @api public\\n * @param {number} size\\n * @return {Progress} Progress instance.\\n */\\nProgress.prototype.size = function (size) {\\n this._size = size;\\n return this;\\n};\\n\\n/**\\n * Set text to `text`.\\n *\\n * @api public\\n * @param {string} text\\n * @return {Progress} Progress instance.\\n */\\nProgress.prototype.text = function (text) {\\n this._text = text;\\n return this;\\n};\\n\\n/**\\n * Set font size to `size`.\\n *\\n * @api public\\n * @param {number} size\\n * @return {Progress} Progress instance.\\n */\\nProgress.prototype.fontSize = function (size) {\\n this._fontSize = size;\\n return this;\\n};\\n\\n/**\\n * Set font to `family`.\\n *\\n * @param {string} family\\n * @return {Progress} Progress instance.\\n */\\nProgress.prototype.font = function (family) {\\n this._font = family;\\n return this;\\n};\\n\\n/**\\n * Update percentage to `n`.\\n *\\n * @param {number} n\\n * @return {Progress} Progress instance.\\n */\\nProgress.prototype.update = function (n) {\\n this.percent = n;\\n return this;\\n};\\n\\n/**\\n * Draw on `ctx`.\\n *\\n * @param {CanvasRenderingContext2d} ctx\\n * @return {Progress} Progress instance.\\n */\\nProgress.prototype.draw = function (ctx) {\\n try {\\n var percent = Math.min(this.percent, 100);\\n var size = this._size;\\n var half = size / 2;\\n var x = half;\\n var y = half;\\n var rad = half - 1;\\n var fontSize = this._fontSize;\\n\\n ctx.font = fontSize + 'px ' + this._font;\\n\\n var angle = Math.PI * 2 * (percent / 100);\\n ctx.clearRect(0, 0, size, size);\\n\\n // outer circle\\n ctx.strokeStyle = '#9f9f9f';\\n ctx.beginPath();\\n ctx.arc(x, y, rad, 0, angle, false);\\n ctx.stroke();\\n\\n // inner circle\\n ctx.strokeStyle = '#eee';\\n ctx.beginPath();\\n ctx.arc(x, y, rad - 1, 0, angle, true);\\n ctx.stroke();\\n\\n // text\\n var text = this._text || (percent | 0) + '%';\\n var w = ctx.measureText(text).width;\\n\\n ctx.fillText(text, x - w / 2 + 1, y + fontSize / 2 - 1);\\n } catch (err) {\\n // don't fail if we can't render progress\\n }\\n return this;\\n};\\n\\n},{}],5:[function(require,module,exports){\\n(function (global){\\n'use strict';\\n\\nexports.isatty = function isatty () {\\n return true;\\n};\\n\\nexports.getWindowSize = function getWindowSize () {\\n if ('innerHeight' in global) {\\n return [global.innerHeight, global.innerWidth];\\n }\\n // In a Web Worker, the DOM Window is not available.\\n return [640, 480];\\n};\\n\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{}],6:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar JSON = require('json3');\\n\\n/**\\n * Expose `Context`.\\n */\\n\\nmodule.exports = Context;\\n\\n/**\\n * Initialize a new `Context`.\\n *\\n * @api private\\n */\\nfunction Context () {}\\n\\n/**\\n * Set or get the context `Runnable` to `runnable`.\\n *\\n * @api private\\n * @param {Runnable} runnable\\n * @return {Context}\\n */\\nContext.prototype.runnable = function (runnable) {\\n if (!arguments.length) {\\n return this._runnable;\\n }\\n this.test = this._runnable = runnable;\\n return this;\\n};\\n\\n/**\\n * Set test timeout `ms`.\\n *\\n * @api private\\n * @param {number} ms\\n * @return {Context} self\\n */\\nContext.prototype.timeout = function (ms) {\\n if (!arguments.length) {\\n return this.runnable().timeout();\\n }\\n this.runnable().timeout(ms);\\n return this;\\n};\\n\\n/**\\n * Set test timeout `enabled`.\\n *\\n * @api private\\n * @param {boolean} enabled\\n * @return {Context} self\\n */\\nContext.prototype.enableTimeouts = function (enabled) {\\n this.runnable().enableTimeouts(enabled);\\n return this;\\n};\\n\\n/**\\n * Set test slowness threshold `ms`.\\n *\\n * @api private\\n * @param {number} ms\\n * @return {Context} self\\n */\\nContext.prototype.slow = function (ms) {\\n this.runnable().slow(ms);\\n return this;\\n};\\n\\n/**\\n * Mark a test as skipped.\\n *\\n * @api private\\n * @return {Context} self\\n */\\nContext.prototype.skip = function () {\\n this.runnable().skip();\\n return this;\\n};\\n\\n/**\\n * Allow a number of retries on failed tests\\n *\\n * @api private\\n * @param {number} n\\n * @return {Context} self\\n */\\nContext.prototype.retries = function (n) {\\n if (!arguments.length) {\\n return this.runnable().retries();\\n }\\n this.runnable().retries(n);\\n return this;\\n};\\n\\n/**\\n * Inspect the context void of `._runnable`.\\n *\\n * @api private\\n * @return {string}\\n */\\nContext.prototype.inspect = function () {\\n return JSON.stringify(this, function (key, val) {\\n return key === 'runnable' || key === 'test' ? undefined : val;\\n }, 2);\\n};\\n\\n},{\\\"json3\\\":69}],7:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Runnable = require('./runnable');\\nvar inherits = require('./utils').inherits;\\n\\n/**\\n * Expose `Hook`.\\n */\\n\\nmodule.exports = Hook;\\n\\n/**\\n * Initialize a new `Hook` with the given `title` and callback `fn`.\\n *\\n * @param {String} title\\n * @param {Function} fn\\n * @api private\\n */\\nfunction Hook (title, fn) {\\n Runnable.call(this, title, fn);\\n this.type = 'hook';\\n}\\n\\n/**\\n * Inherit from `Runnable.prototype`.\\n */\\ninherits(Hook, Runnable);\\n\\n/**\\n * Get or set the test `err`.\\n *\\n * @param {Error} err\\n * @return {Error}\\n * @api public\\n */\\nHook.prototype.error = function (err) {\\n if (!arguments.length) {\\n err = this._error;\\n this._error = null;\\n return err;\\n }\\n\\n this._error = err;\\n};\\n\\n},{\\\"./runnable\\\":33,\\\"./utils\\\":38}],8:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Test = require('../test');\\n\\n/**\\n * BDD-style interface:\\n *\\n * describe('Array', function() {\\n * describe('#indexOf()', function() {\\n * it('should return -1 when not present', function() {\\n * // ...\\n * });\\n *\\n * it('should return the index when present', function() {\\n * // ...\\n * });\\n * });\\n * });\\n *\\n * @param {Suite} suite Root suite.\\n */\\nmodule.exports = function (suite) {\\n var suites = [suite];\\n\\n suite.on('pre-require', function (context, file, mocha) {\\n var common = require('./common')(suites, context, mocha);\\n\\n context.before = common.before;\\n context.after = common.after;\\n context.beforeEach = common.beforeEach;\\n context.afterEach = common.afterEach;\\n context.run = mocha.options.delay && common.runWithSuite(suite);\\n /**\\n * Describe a \\\"suite\\\" with the given `title`\\n * and callback `fn` containing nested suites\\n * and/or tests.\\n */\\n\\n context.describe = context.context = function (title, fn) {\\n return common.suite.create({\\n title: title,\\n file: file,\\n fn: fn\\n });\\n };\\n\\n /**\\n * Pending describe.\\n */\\n\\n context.xdescribe = context.xcontext = context.describe.skip = function (title, fn) {\\n return common.suite.skip({\\n title: title,\\n file: file,\\n fn: fn\\n });\\n };\\n\\n /**\\n * Exclusive suite.\\n */\\n\\n context.describe.only = function (title, fn) {\\n return common.suite.only({\\n title: title,\\n file: file,\\n fn: fn\\n });\\n };\\n\\n /**\\n * Describe a specification or test-case\\n * with the given `title` and callback `fn`\\n * acting as a thunk.\\n */\\n\\n context.it = context.specify = function (title, fn) {\\n var suite = suites[0];\\n if (suite.isPending()) {\\n fn = null;\\n }\\n var test = new Test(title, fn);\\n test.file = file;\\n suite.addTest(test);\\n return test;\\n };\\n\\n /**\\n * Exclusive test-case.\\n */\\n\\n context.it.only = function (title, fn) {\\n return common.test.only(mocha, context.it(title, fn));\\n };\\n\\n /**\\n * Pending test case.\\n */\\n\\n context.xit = context.xspecify = context.it.skip = function (title) {\\n context.it(title);\\n };\\n\\n /**\\n * Number of attempts to retry.\\n */\\n context.it.retries = function (n) {\\n context.retries(n);\\n };\\n });\\n};\\n\\n},{\\\"../test\\\":36,\\\"./common\\\":9}],9:[function(require,module,exports){\\n'use strict';\\n\\nvar Suite = require('../suite');\\n\\n/**\\n * Functions common to more than one interface.\\n *\\n * @param {Suite[]} suites\\n * @param {Context} context\\n * @param {Mocha} mocha\\n * @return {Object} An object containing common functions.\\n */\\nmodule.exports = function (suites, context, mocha) {\\n return {\\n /**\\n * This is only present if flag --delay is passed into Mocha. It triggers\\n * root suite execution.\\n *\\n * @param {Suite} suite The root suite.\\n * @return {Function} A function which runs the root suite\\n */\\n runWithSuite: function runWithSuite (suite) {\\n return function run () {\\n suite.run();\\n };\\n },\\n\\n /**\\n * Execute before running tests.\\n *\\n * @param {string} name\\n * @param {Function} fn\\n */\\n before: function (name, fn) {\\n suites[0].beforeAll(name, fn);\\n },\\n\\n /**\\n * Execute after running tests.\\n *\\n * @param {string} name\\n * @param {Function} fn\\n */\\n after: function (name, fn) {\\n suites[0].afterAll(name, fn);\\n },\\n\\n /**\\n * Execute before each test case.\\n *\\n * @param {string} name\\n * @param {Function} fn\\n */\\n beforeEach: function (name, fn) {\\n suites[0].beforeEach(name, fn);\\n },\\n\\n /**\\n * Execute after each test case.\\n *\\n * @param {string} name\\n * @param {Function} fn\\n */\\n afterEach: function (name, fn) {\\n suites[0].afterEach(name, fn);\\n },\\n\\n suite: {\\n /**\\n * Create an exclusive Suite; convenience function\\n * See docstring for create() below.\\n *\\n * @param {Object} opts\\n * @returns {Suite}\\n */\\n only: function only (opts) {\\n mocha.options.hasOnly = true;\\n opts.isOnly = true;\\n return this.create(opts);\\n },\\n\\n /**\\n * Create a Suite, but skip it; convenience function\\n * See docstring for create() below.\\n *\\n * @param {Object} opts\\n * @returns {Suite}\\n */\\n skip: function skip (opts) {\\n opts.pending = true;\\n return this.create(opts);\\n },\\n\\n /**\\n * Creates a suite.\\n * @param {Object} opts Options\\n * @param {string} opts.title Title of Suite\\n * @param {Function} [opts.fn] Suite Function (not always applicable)\\n * @param {boolean} [opts.pending] Is Suite pending?\\n * @param {string} [opts.file] Filepath where this Suite resides\\n * @param {boolean} [opts.isOnly] Is Suite exclusive?\\n * @returns {Suite}\\n */\\n create: function create (opts) {\\n var suite = Suite.create(suites[0], opts.title);\\n suite.pending = Boolean(opts.pending);\\n suite.file = opts.file;\\n suites.unshift(suite);\\n if (opts.isOnly) {\\n suite.parent._onlySuites = suite.parent._onlySuites.concat(suite);\\n mocha.options.hasOnly = true;\\n }\\n if (typeof opts.fn === 'function') {\\n opts.fn.call(suite);\\n suites.shift();\\n } else if (typeof opts.fn === 'undefined' && !suite.pending) {\\n throw new Error('Suite \\\"' + suite.fullTitle() + '\\\" was defined but no callback was supplied. Supply a callback or explicitly skip the suite.');\\n }\\n\\n return suite;\\n }\\n },\\n\\n test: {\\n\\n /**\\n * Exclusive test-case.\\n *\\n * @param {Object} mocha\\n * @param {Function} test\\n * @returns {*}\\n */\\n only: function (mocha, test) {\\n test.parent._onlyTests = test.parent._onlyTests.concat(test);\\n mocha.options.hasOnly = true;\\n return test;\\n },\\n\\n /**\\n * Pending test case.\\n *\\n * @param {string} title\\n */\\n skip: function (title) {\\n context.test(title);\\n },\\n\\n /**\\n * Number of retry attempts\\n *\\n * @param {number} n\\n */\\n retries: function (n) {\\n context.retries(n);\\n }\\n }\\n };\\n};\\n\\n},{\\\"../suite\\\":35}],10:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Suite = require('../suite');\\nvar Test = require('../test');\\n\\n/**\\n * Exports-style (as Node.js module) interface:\\n *\\n * exports.Array = {\\n * '#indexOf()': {\\n * 'should return -1 when the value is not present': function() {\\n *\\n * },\\n *\\n * 'should return the correct index when the value is present': function() {\\n *\\n * }\\n * }\\n * };\\n *\\n * @param {Suite} suite Root suite.\\n */\\nmodule.exports = function (suite) {\\n var suites = [suite];\\n\\n suite.on('require', visit);\\n\\n function visit (obj, file) {\\n var suite;\\n for (var key in obj) {\\n if (typeof obj[key] === 'function') {\\n var fn = obj[key];\\n switch (key) {\\n case 'before':\\n suites[0].beforeAll(fn);\\n break;\\n case 'after':\\n suites[0].afterAll(fn);\\n break;\\n case 'beforeEach':\\n suites[0].beforeEach(fn);\\n break;\\n case 'afterEach':\\n suites[0].afterEach(fn);\\n break;\\n default:\\n var test = new Test(key, fn);\\n test.file = file;\\n suites[0].addTest(test);\\n }\\n } else {\\n suite = Suite.create(suites[0], key);\\n suites.unshift(suite);\\n visit(obj[key], file);\\n suites.shift();\\n }\\n }\\n }\\n};\\n\\n},{\\\"../suite\\\":35,\\\"../test\\\":36}],11:[function(require,module,exports){\\n'use strict';\\n\\nexports.bdd = require('./bdd');\\nexports.tdd = require('./tdd');\\nexports.qunit = require('./qunit');\\nexports.exports = require('./exports');\\n\\n},{\\\"./bdd\\\":8,\\\"./exports\\\":10,\\\"./qunit\\\":12,\\\"./tdd\\\":13}],12:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Test = require('../test');\\n\\n/**\\n * QUnit-style interface:\\n *\\n * suite('Array');\\n *\\n * test('#length', function() {\\n * var arr = [1,2,3];\\n * ok(arr.length == 3);\\n * });\\n *\\n * test('#indexOf()', function() {\\n * var arr = [1,2,3];\\n * ok(arr.indexOf(1) == 0);\\n * ok(arr.indexOf(2) == 1);\\n * ok(arr.indexOf(3) == 2);\\n * });\\n *\\n * suite('String');\\n *\\n * test('#length', function() {\\n * ok('foo'.length == 3);\\n * });\\n *\\n * @param {Suite} suite Root suite.\\n */\\nmodule.exports = function (suite) {\\n var suites = [suite];\\n\\n suite.on('pre-require', function (context, file, mocha) {\\n var common = require('./common')(suites, context, mocha);\\n\\n context.before = common.before;\\n context.after = common.after;\\n context.beforeEach = common.beforeEach;\\n context.afterEach = common.afterEach;\\n context.run = mocha.options.delay && common.runWithSuite(suite);\\n /**\\n * Describe a \\\"suite\\\" with the given `title`.\\n */\\n\\n context.suite = function (title) {\\n if (suites.length > 1) {\\n suites.shift();\\n }\\n return common.suite.create({\\n title: title,\\n file: file,\\n fn: false\\n });\\n };\\n\\n /**\\n * Exclusive Suite.\\n */\\n\\n context.suite.only = function (title) {\\n if (suites.length > 1) {\\n suites.shift();\\n }\\n return common.suite.only({\\n title: title,\\n file: file,\\n fn: false\\n });\\n };\\n\\n /**\\n * Describe a specification or test-case\\n * with the given `title` and callback `fn`\\n * acting as a thunk.\\n */\\n\\n context.test = function (title, fn) {\\n var test = new Test(title, fn);\\n test.file = file;\\n suites[0].addTest(test);\\n return test;\\n };\\n\\n /**\\n * Exclusive test-case.\\n */\\n\\n context.test.only = function (title, fn) {\\n return common.test.only(mocha, context.test(title, fn));\\n };\\n\\n context.test.skip = common.test.skip;\\n context.test.retries = common.test.retries;\\n });\\n};\\n\\n},{\\\"../test\\\":36,\\\"./common\\\":9}],13:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Test = require('../test');\\n\\n/**\\n * TDD-style interface:\\n *\\n * suite('Array', function() {\\n * suite('#indexOf()', function() {\\n * suiteSetup(function() {\\n *\\n * });\\n *\\n * test('should return -1 when not present', function() {\\n *\\n * });\\n *\\n * test('should return the index when present', function() {\\n *\\n * });\\n *\\n * suiteTeardown(function() {\\n *\\n * });\\n * });\\n * });\\n *\\n * @param {Suite} suite Root suite.\\n */\\nmodule.exports = function (suite) {\\n var suites = [suite];\\n\\n suite.on('pre-require', function (context, file, mocha) {\\n var common = require('./common')(suites, context, mocha);\\n\\n context.setup = common.beforeEach;\\n context.teardown = common.afterEach;\\n context.suiteSetup = common.before;\\n context.suiteTeardown = common.after;\\n context.run = mocha.options.delay && common.runWithSuite(suite);\\n\\n /**\\n * Describe a \\\"suite\\\" with the given `title` and callback `fn` containing\\n * nested suites and/or tests.\\n */\\n context.suite = function (title, fn) {\\n return common.suite.create({\\n title: title,\\n file: file,\\n fn: fn\\n });\\n };\\n\\n /**\\n * Pending suite.\\n */\\n context.suite.skip = function (title, fn) {\\n return common.suite.skip({\\n title: title,\\n file: file,\\n fn: fn\\n });\\n };\\n\\n /**\\n * Exclusive test-case.\\n */\\n context.suite.only = function (title, fn) {\\n return common.suite.only({\\n title: title,\\n file: file,\\n fn: fn\\n });\\n };\\n\\n /**\\n * Describe a specification or test-case with the given `title` and\\n * callback `fn` acting as a thunk.\\n */\\n context.test = function (title, fn) {\\n var suite = suites[0];\\n if (suite.isPending()) {\\n fn = null;\\n }\\n var test = new Test(title, fn);\\n test.file = file;\\n suite.addTest(test);\\n return test;\\n };\\n\\n /**\\n * Exclusive test-case.\\n */\\n\\n context.test.only = function (title, fn) {\\n return common.test.only(mocha, context.test(title, fn));\\n };\\n\\n context.test.skip = common.test.skip;\\n context.test.retries = common.test.retries;\\n });\\n};\\n\\n},{\\\"../test\\\":36,\\\"./common\\\":9}],14:[function(require,module,exports){\\n(function (process,global,__dirname){\\n'use strict';\\n\\n/*!\\n * mocha\\n * Copyright(c) 2011 TJ Holowaychuk <tj@vision-media.ca>\\n * MIT Licensed\\n */\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar escapeRe = require('escape-string-regexp');\\nvar path = require('path');\\nvar reporters = require('./reporters');\\nvar utils = require('./utils');\\n\\n/**\\n * Expose `Mocha`.\\n */\\n\\nexports = module.exports = Mocha;\\n\\n/**\\n * To require local UIs and reporters when running in node.\\n */\\n\\nif (!process.browser) {\\n var cwd = process.cwd();\\n module.paths.push(cwd, path.join(cwd, 'node_modules'));\\n}\\n\\n/**\\n * Expose internals.\\n */\\n\\nexports.utils = utils;\\nexports.interfaces = require('./interfaces');\\nexports.reporters = reporters;\\nexports.Runnable = require('./runnable');\\nexports.Context = require('./context');\\nexports.Runner = require('./runner');\\nexports.Suite = require('./suite');\\nexports.Hook = require('./hook');\\nexports.Test = require('./test');\\n\\n/**\\n * Return image `name` path.\\n *\\n * @api private\\n * @param {string} name\\n * @return {string}\\n */\\nfunction image (name) {\\n return path.join(__dirname, '../images', name + '.png');\\n}\\n\\n/**\\n * Set up mocha with `options`.\\n *\\n * Options:\\n *\\n * - `ui` name \\\"bdd\\\", \\\"tdd\\\", \\\"exports\\\" etc\\n * - `reporter` reporter instance, defaults to `mocha.reporters.spec`\\n * - `globals` array of accepted globals\\n * - `timeout` timeout in milliseconds\\n * - `retries` number of times to retry failed tests\\n * - `bail` bail on the first test failure\\n * - `slow` milliseconds to wait before considering a test slow\\n * - `ignoreLeaks` ignore global leaks\\n * - `fullTrace` display the full stack-trace on failing\\n * - `grep` string or regexp to filter tests with\\n *\\n * @param {Object} options\\n * @api public\\n */\\nfunction Mocha (options) {\\n options = options || {};\\n this.files = [];\\n this.options = options;\\n if (options.grep) {\\n this.grep(new RegExp(options.grep));\\n }\\n if (options.fgrep) {\\n this.fgrep(options.fgrep);\\n }\\n this.suite = new exports.Suite('', new exports.Context());\\n this.ui(options.ui);\\n this.bail(options.bail);\\n this.reporter(options.reporter, options.reporterOptions);\\n if (typeof options.timeout !== 'undefined' && options.timeout !== null) {\\n this.timeout(options.timeout);\\n }\\n if (typeof options.retries !== 'undefined' && options.retries !== null) {\\n this.retries(options.retries);\\n }\\n this.useColors(options.useColors);\\n if (options.enableTimeouts !== null) {\\n this.enableTimeouts(options.enableTimeouts);\\n }\\n if (options.slow) {\\n this.slow(options.slow);\\n }\\n}\\n\\n/**\\n * Enable or disable bailing on the first failure.\\n *\\n * @api public\\n * @param {boolean} [bail]\\n */\\nMocha.prototype.bail = function (bail) {\\n if (!arguments.length) {\\n bail = true;\\n }\\n this.suite.bail(bail);\\n return this;\\n};\\n\\n/**\\n * Add test `file`.\\n *\\n * @api public\\n * @param {string} file\\n */\\nMocha.prototype.addFile = function (file) {\\n this.files.push(file);\\n return this;\\n};\\n\\n/**\\n * Set reporter to `reporter`, defaults to \\\"spec\\\".\\n *\\n * @param {String|Function} reporter name or constructor\\n * @param {Object} reporterOptions optional options\\n * @api public\\n * @param {string|Function} reporter name or constructor\\n * @param {Object} reporterOptions optional options\\n */\\nMocha.prototype.reporter = function (reporter, reporterOptions) {\\n if (typeof reporter === 'function') {\\n this._reporter = reporter;\\n } else {\\n reporter = reporter || 'spec';\\n var _reporter;\\n // Try to load a built-in reporter.\\n if (reporters[reporter]) {\\n _reporter = reporters[reporter];\\n }\\n // Try to load reporters from process.cwd() and node_modules\\n if (!_reporter) {\\n try {\\n _reporter = require(reporter);\\n } catch (err) {\\n if (err.message.indexOf('Cannot find module') !== -1) {\\n // Try to load reporters from a path (absolute or relative)\\n try {\\n _reporter = require(path.resolve(process.cwd(), reporter));\\n } catch (_err) {\\n err.message.indexOf('Cannot find module') !== -1 ? console.warn('\\\"' + reporter + '\\\" reporter not found')\\n : console.warn('\\\"' + reporter + '\\\" reporter blew up with error:\\\\n' + err.stack);\\n }\\n } else {\\n console.warn('\\\"' + reporter + '\\\" reporter blew up with error:\\\\n' + err.stack);\\n }\\n }\\n }\\n if (!_reporter && reporter === 'teamcity') {\\n console.warn('The Teamcity reporter was moved to a package named ' +\\n 'mocha-teamcity-reporter ' +\\n '(https://npmjs.org/package/mocha-teamcity-reporter).');\\n }\\n if (!_reporter) {\\n throw new Error('invalid reporter \\\"' + reporter + '\\\"');\\n }\\n this._reporter = _reporter;\\n }\\n this.options.reporterOptions = reporterOptions;\\n return this;\\n};\\n\\n/**\\n * Set test UI `name`, defaults to \\\"bdd\\\".\\n *\\n * @api public\\n * @param {string} bdd\\n */\\nMocha.prototype.ui = function (name) {\\n name = name || 'bdd';\\n this._ui = exports.interfaces[name];\\n if (!this._ui) {\\n try {\\n this._ui = require(name);\\n } catch (err) {\\n throw new Error('invalid interface \\\"' + name + '\\\"');\\n }\\n }\\n this._ui = this._ui(this.suite);\\n\\n this.suite.on('pre-require', function (context) {\\n exports.afterEach = context.afterEach || context.teardown;\\n exports.after = context.after || context.suiteTeardown;\\n exports.beforeEach = context.beforeEach || context.setup;\\n exports.before = context.before || context.suiteSetup;\\n exports.describe = context.describe || context.suite;\\n exports.it = context.it || context.test;\\n exports.setup = context.setup || context.beforeEach;\\n exports.suiteSetup = context.suiteSetup || context.before;\\n exports.suiteTeardown = context.suiteTeardown || context.after;\\n exports.suite = context.suite || context.describe;\\n exports.teardown = context.teardown || context.afterEach;\\n exports.test = context.test || context.it;\\n exports.run = context.run;\\n });\\n\\n return this;\\n};\\n\\n/**\\n * Load registered files.\\n *\\n * @api private\\n */\\nMocha.prototype.loadFiles = function (fn) {\\n var self = this;\\n var suite = this.suite;\\n this.files.forEach(function (file) {\\n file = path.resolve(file);\\n suite.emit('pre-require', global, file, self);\\n suite.emit('require', require(file), file, self);\\n suite.emit('post-require', global, file, self);\\n });\\n fn && fn();\\n};\\n\\n/**\\n * Enable growl support.\\n *\\n * @api private\\n */\\nMocha.prototype._growl = function (runner, reporter) {\\n var notify = require('growl');\\n\\n runner.on('end', function () {\\n var stats = reporter.stats;\\n if (stats.failures) {\\n var msg = stats.failures + ' of ' + runner.total + ' tests failed';\\n notify(msg, { name: 'mocha', title: 'Failed', image: image('error') });\\n } else {\\n notify(stats.passes + ' tests passed in ' + stats.duration + 'ms', {\\n name: 'mocha',\\n title: 'Passed',\\n image: image('ok')\\n });\\n }\\n });\\n};\\n\\n/**\\n * Escape string and add it to grep as a regexp.\\n *\\n * @api public\\n * @param str\\n * @returns {Mocha}\\n */\\nMocha.prototype.fgrep = function (str) {\\n return this.grep(new RegExp(escapeRe(str)));\\n};\\n\\n/**\\n * Add regexp to grep, if `re` is a string it is escaped.\\n *\\n * @param {RegExp|String} re\\n * @return {Mocha}\\n * @api public\\n * @param {RegExp|string} re\\n * @return {Mocha}\\n */\\nMocha.prototype.grep = function (re) {\\n if (utils.isString(re)) {\\n // extract args if it's regex-like, i.e: [string, pattern, flag]\\n var arg = re.match(/^\\\\/(.*)\\\\/(g|i|)$|.*/);\\n this.options.grep = new RegExp(arg[1] || arg[0], arg[2]);\\n } else {\\n this.options.grep = re;\\n }\\n return this;\\n};\\n/**\\n * Invert `.grep()` matches.\\n *\\n * @return {Mocha}\\n * @api public\\n */\\nMocha.prototype.invert = function () {\\n this.options.invert = true;\\n return this;\\n};\\n\\n/**\\n * Ignore global leaks.\\n *\\n * @param {Boolean} ignore\\n * @return {Mocha}\\n * @api public\\n * @param {boolean} ignore\\n * @return {Mocha}\\n */\\nMocha.prototype.ignoreLeaks = function (ignore) {\\n this.options.ignoreLeaks = Boolean(ignore);\\n return this;\\n};\\n\\n/**\\n * Enable global leak checking.\\n *\\n * @return {Mocha}\\n * @api public\\n */\\nMocha.prototype.checkLeaks = function () {\\n this.options.ignoreLeaks = false;\\n return this;\\n};\\n\\n/**\\n * Display long stack-trace on failing\\n *\\n * @return {Mocha}\\n * @api public\\n */\\nMocha.prototype.fullTrace = function () {\\n this.options.fullStackTrace = true;\\n return this;\\n};\\n\\n/**\\n * Enable growl support.\\n *\\n * @return {Mocha}\\n * @api public\\n */\\nMocha.prototype.growl = function () {\\n this.options.growl = true;\\n return this;\\n};\\n\\n/**\\n * Ignore `globals` array or string.\\n *\\n * @param {Array|String} globals\\n * @return {Mocha}\\n * @api public\\n * @param {Array|string} globals\\n * @return {Mocha}\\n */\\nMocha.prototype.globals = function (globals) {\\n this.options.globals = (this.options.globals || []).concat(globals);\\n return this;\\n};\\n\\n/**\\n * Emit color output.\\n *\\n * @param {Boolean} colors\\n * @return {Mocha}\\n * @api public\\n * @param {boolean} colors\\n * @return {Mocha}\\n */\\nMocha.prototype.useColors = function (colors) {\\n if (colors !== undefined) {\\n this.options.useColors = colors;\\n }\\n return this;\\n};\\n\\n/**\\n * Use inline diffs rather than +/-.\\n *\\n * @param {Boolean} inlineDiffs\\n * @return {Mocha}\\n * @api public\\n * @param {boolean} inlineDiffs\\n * @return {Mocha}\\n */\\nMocha.prototype.useInlineDiffs = function (inlineDiffs) {\\n this.options.useInlineDiffs = inlineDiffs !== undefined && inlineDiffs;\\n return this;\\n};\\n\\n/**\\n * Set the timeout in milliseconds.\\n *\\n * @param {Number} timeout\\n * @return {Mocha}\\n * @api public\\n * @param {number} timeout\\n * @return {Mocha}\\n */\\nMocha.prototype.timeout = function (timeout) {\\n this.suite.timeout(timeout);\\n return this;\\n};\\n\\n/**\\n * Set the number of times to retry failed tests.\\n *\\n * @param {Number} retry times\\n * @return {Mocha}\\n * @api public\\n */\\nMocha.prototype.retries = function (n) {\\n this.suite.retries(n);\\n return this;\\n};\\n\\n/**\\n * Set slowness threshold in milliseconds.\\n *\\n * @param {Number} slow\\n * @return {Mocha}\\n * @api public\\n * @param {number} slow\\n * @return {Mocha}\\n */\\nMocha.prototype.slow = function (slow) {\\n this.suite.slow(slow);\\n return this;\\n};\\n\\n/**\\n * Enable timeouts.\\n *\\n * @param {Boolean} enabled\\n * @return {Mocha}\\n * @api public\\n * @param {boolean} enabled\\n * @return {Mocha}\\n */\\nMocha.prototype.enableTimeouts = function (enabled) {\\n this.suite.enableTimeouts(arguments.length && enabled !== undefined ? enabled : true);\\n return this;\\n};\\n\\n/**\\n * Makes all tests async (accepting a callback)\\n *\\n * @return {Mocha}\\n * @api public\\n */\\nMocha.prototype.asyncOnly = function () {\\n this.options.asyncOnly = true;\\n return this;\\n};\\n\\n/**\\n * Disable syntax highlighting (in browser).\\n *\\n * @api public\\n */\\nMocha.prototype.noHighlighting = function () {\\n this.options.noHighlighting = true;\\n return this;\\n};\\n\\n/**\\n * Enable uncaught errors to propagate (in browser).\\n *\\n * @return {Mocha}\\n * @api public\\n */\\nMocha.prototype.allowUncaught = function () {\\n this.options.allowUncaught = true;\\n return this;\\n};\\n\\n/**\\n * Delay root suite execution.\\n * @returns {Mocha}\\n */\\nMocha.prototype.delay = function delay () {\\n this.options.delay = true;\\n return this;\\n};\\n\\n/**\\n * Run tests and invoke `fn()` when complete.\\n *\\n * @api public\\n * @param {Function} fn\\n * @return {Runner}\\n */\\nMocha.prototype.run = function (fn) {\\n if (this.files.length) {\\n this.loadFiles();\\n }\\n var suite = this.suite;\\n var options = this.options;\\n options.files = this.files;\\n var runner = new exports.Runner(suite, options.delay);\\n var reporter = new this._reporter(runner, options);\\n runner.ignoreLeaks = options.ignoreLeaks !== false;\\n runner.fullStackTrace = options.fullStackTrace;\\n runner.hasOnly = options.hasOnly;\\n runner.asyncOnly = options.asyncOnly;\\n runner.allowUncaught = options.allowUncaught;\\n if (options.grep) {\\n runner.grep(options.grep, options.invert);\\n }\\n if (options.globals) {\\n runner.globals(options.globals);\\n }\\n if (options.growl) {\\n this._growl(runner, reporter);\\n }\\n if (options.useColors !== undefined) {\\n exports.reporters.Base.useColors = options.useColors;\\n }\\n exports.reporters.Base.inlineDiffs = options.useInlineDiffs;\\n\\n function done (failures) {\\n if (reporter.done) {\\n reporter.done(failures, fn);\\n } else {\\n fn && fn(failures);\\n }\\n }\\n\\n return runner.run(done);\\n};\\n\\n}).call(this,require('_process'),typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {},\\\"/lib\\\")\\n},{\\\"./context\\\":6,\\\"./hook\\\":7,\\\"./interfaces\\\":11,\\\"./reporters\\\":21,\\\"./runnable\\\":33,\\\"./runner\\\":34,\\\"./suite\\\":35,\\\"./test\\\":36,\\\"./utils\\\":38,\\\"_process\\\":82,\\\"escape-string-regexp\\\":62,\\\"growl\\\":64,\\\"path\\\":42}],15:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Helpers.\\n */\\n\\nvar s = 1000;\\nvar m = s * 60;\\nvar h = m * 60;\\nvar d = h * 24;\\nvar y = d * 365.25;\\n\\n/**\\n * Parse or format the given `val`.\\n *\\n * Options:\\n *\\n * - `long` verbose formatting [false]\\n *\\n * @api public\\n * @param {string|number} val\\n * @param {Object} options\\n * @return {string|number}\\n */\\nmodule.exports = function (val, options) {\\n options = options || {};\\n if (typeof val === 'string') {\\n return parse(val);\\n }\\n // https://github.com/mochajs/mocha/pull/1035\\n return options['long'] ? longFormat(val) : shortFormat(val);\\n};\\n\\n/**\\n * Parse the given `str` and return milliseconds.\\n *\\n * @api private\\n * @param {string} str\\n * @return {number}\\n */\\nfunction parse (str) {\\n var match = (/^((?:\\\\d+)?\\\\.?\\\\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i).exec(str);\\n if (!match) {\\n return;\\n }\\n var n = parseFloat(match[1]);\\n var type = (match[2] || 'ms').toLowerCase();\\n switch (type) {\\n case 'years':\\n case 'year':\\n case 'y':\\n return n * y;\\n case 'days':\\n case 'day':\\n case 'd':\\n return n * d;\\n case 'hours':\\n case 'hour':\\n case 'h':\\n return n * h;\\n case 'minutes':\\n case 'minute':\\n case 'm':\\n return n * m;\\n case 'seconds':\\n case 'second':\\n case 's':\\n return n * s;\\n case 'ms':\\n return n;\\n default:\\n // No default case\\n }\\n}\\n\\n/**\\n * Short format for `ms`.\\n *\\n * @api private\\n * @param {number} ms\\n * @return {string}\\n */\\nfunction shortFormat (ms) {\\n if (ms >= d) {\\n return Math.round(ms / d) + 'd';\\n }\\n if (ms >= h) {\\n return Math.round(ms / h) + 'h';\\n }\\n if (ms >= m) {\\n return Math.round(ms / m) + 'm';\\n }\\n if (ms >= s) {\\n return Math.round(ms / s) + 's';\\n }\\n return ms + 'ms';\\n}\\n\\n/**\\n * Long format for `ms`.\\n *\\n * @api private\\n * @param {number} ms\\n * @return {string}\\n */\\nfunction longFormat (ms) {\\n return plural(ms, d, 'day') ||\\n plural(ms, h, 'hour') ||\\n plural(ms, m, 'minute') ||\\n plural(ms, s, 'second') ||\\n ms + ' ms';\\n}\\n\\n/**\\n * Pluralization helper.\\n *\\n * @api private\\n * @param {number} ms\\n * @param {number} n\\n * @param {string} name\\n */\\nfunction plural (ms, n, name) {\\n if (ms < n) {\\n return;\\n }\\n if (ms < n * 1.5) {\\n return Math.floor(ms / n) + ' ' + name;\\n }\\n return Math.ceil(ms / n) + ' ' + name + 's';\\n}\\n\\n},{}],16:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Expose `Pending`.\\n */\\n\\nmodule.exports = Pending;\\n\\n/**\\n * Initialize a new `Pending` error with the given message.\\n *\\n * @param {string} message\\n */\\nfunction Pending (message) {\\n this.message = message;\\n}\\n\\n},{}],17:[function(require,module,exports){\\n(function (process,global){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar tty = require('tty');\\nvar diff = require('diff');\\nvar ms = require('../ms');\\nvar utils = require('../utils');\\nvar supportsColor = process.browser ? null : require('supports-color');\\n\\n/**\\n * Expose `Base`.\\n */\\n\\nexports = module.exports = Base;\\n\\n/**\\n * Save timer references to avoid Sinon interfering.\\n * See: https://github.com/mochajs/mocha/issues/237\\n */\\n\\n/* eslint-disable no-unused-vars, no-native-reassign */\\nvar Date = global.Date;\\nvar setTimeout = global.setTimeout;\\nvar setInterval = global.setInterval;\\nvar clearTimeout = global.clearTimeout;\\nvar clearInterval = global.clearInterval;\\n/* eslint-enable no-unused-vars, no-native-reassign */\\n\\n/**\\n * Check if both stdio streams are associated with a tty.\\n */\\n\\nvar isatty = tty.isatty(1) && tty.isatty(2);\\n\\n/**\\n * Enable coloring by default, except in the browser interface.\\n */\\n\\nexports.useColors = !process.browser && (supportsColor || (process.env.MOCHA_COLORS !== undefined));\\n\\n/**\\n * Inline diffs instead of +/-\\n */\\n\\nexports.inlineDiffs = false;\\n\\n/**\\n * Default color map.\\n */\\n\\nexports.colors = {\\n pass: 90,\\n fail: 31,\\n 'bright pass': 92,\\n 'bright fail': 91,\\n 'bright yellow': 93,\\n pending: 36,\\n suite: 0,\\n 'error title': 0,\\n 'error message': 31,\\n 'error stack': 90,\\n checkmark: 32,\\n fast: 90,\\n medium: 33,\\n slow: 31,\\n green: 32,\\n light: 90,\\n 'diff gutter': 90,\\n 'diff added': 32,\\n 'diff removed': 31\\n};\\n\\n/**\\n * Default symbol map.\\n */\\n\\nexports.symbols = {\\n ok: '✓',\\n err: '✖',\\n dot: '․',\\n comma: ',',\\n bang: '!'\\n};\\n\\n// With node.js on Windows: use symbols available in terminal default fonts\\nif (process.platform === 'win32') {\\n exports.symbols.ok = '\\\\u221A';\\n exports.symbols.err = '\\\\u00D7';\\n exports.symbols.dot = '.';\\n}\\n\\n/**\\n * Color `str` with the given `type`,\\n * allowing colors to be disabled,\\n * as well as user-defined color\\n * schemes.\\n *\\n * @param {string} type\\n * @param {string} str\\n * @return {string}\\n * @api private\\n */\\nvar color = exports.color = function (type, str) {\\n if (!exports.useColors) {\\n return String(str);\\n }\\n return '\\\\u001b[' + exports.colors[type] + 'm' + str + '\\\\u001b[0m';\\n};\\n\\n/**\\n * Expose term window size, with some defaults for when stderr is not a tty.\\n */\\n\\nexports.window = {\\n width: 75\\n};\\n\\nif (isatty) {\\n exports.window.width = process.stdout.getWindowSize\\n ? process.stdout.getWindowSize(1)[0]\\n : tty.getWindowSize()[1];\\n}\\n\\n/**\\n * Expose some basic cursor interactions that are common among reporters.\\n */\\n\\nexports.cursor = {\\n hide: function () {\\n isatty && process.stdout.write('\\\\u001b[?25l');\\n },\\n\\n show: function () {\\n isatty && process.stdout.write('\\\\u001b[?25h');\\n },\\n\\n deleteLine: function () {\\n isatty && process.stdout.write('\\\\u001b[2K');\\n },\\n\\n beginningOfLine: function () {\\n isatty && process.stdout.write('\\\\u001b[0G');\\n },\\n\\n CR: function () {\\n if (isatty) {\\n exports.cursor.deleteLine();\\n exports.cursor.beginningOfLine();\\n } else {\\n process.stdout.write('\\\\r');\\n }\\n }\\n};\\n\\n/**\\n * Outut the given `failures` as a list.\\n *\\n * @param {Array} failures\\n * @api public\\n */\\n\\nexports.list = function (failures) {\\n console.log();\\n failures.forEach(function (test, i) {\\n // format\\n var fmt = color('error title', ' %s) %s:\\\\n') +\\n color('error message', ' %s') +\\n color('error stack', '\\\\n%s\\\\n');\\n\\n // msg\\n var msg;\\n var err = test.err;\\n var message;\\n if (err.message && typeof err.message.toString === 'function') {\\n message = err.message + '';\\n } else if (typeof err.inspect === 'function') {\\n message = err.inspect() + '';\\n } else {\\n message = '';\\n }\\n var stack = err.stack || message;\\n var index = message ? stack.indexOf(message) : -1;\\n var actual = err.actual;\\n var expected = err.expected;\\n var escape = true;\\n\\n if (index === -1) {\\n msg = message;\\n } else {\\n index += message.length;\\n msg = stack.slice(0, index);\\n // remove msg from stack\\n stack = stack.slice(index + 1);\\n }\\n\\n // uncaught\\n if (err.uncaught) {\\n msg = 'Uncaught ' + msg;\\n }\\n // explicitly show diff\\n if (err.showDiff !== false && sameType(actual, expected) && expected !== undefined) {\\n escape = false;\\n if (!(utils.isString(actual) && utils.isString(expected))) {\\n err.actual = actual = utils.stringify(actual);\\n err.expected = expected = utils.stringify(expected);\\n }\\n\\n fmt = color('error title', ' %s) %s:\\\\n%s') + color('error stack', '\\\\n%s\\\\n');\\n var match = message.match(/^([^:]+): expected/);\\n msg = '\\\\n ' + color('error message', match ? match[1] : msg);\\n\\n if (exports.inlineDiffs) {\\n msg += inlineDiff(err, escape);\\n } else {\\n msg += unifiedDiff(err, escape);\\n }\\n }\\n\\n // indent stack trace\\n stack = stack.replace(/^/gm, ' ');\\n\\n console.log(fmt, (i + 1), test.fullTitle(), msg, stack);\\n });\\n};\\n\\n/**\\n * Initialize a new `Base` reporter.\\n *\\n * All other reporters generally\\n * inherit from this reporter, providing\\n * stats such as test duration, number\\n * of tests passed / failed etc.\\n *\\n * @param {Runner} runner\\n * @api public\\n */\\n\\nfunction Base (runner) {\\n var stats = this.stats = { suites: 0, tests: 0, passes: 0, pending: 0, failures: 0 };\\n var failures = this.failures = [];\\n\\n if (!runner) {\\n return;\\n }\\n this.runner = runner;\\n\\n runner.stats = stats;\\n\\n runner.on('start', function () {\\n stats.start = new Date();\\n });\\n\\n runner.on('suite', function (suite) {\\n stats.suites = stats.suites || 0;\\n suite.root || stats.suites++;\\n });\\n\\n runner.on('test end', function () {\\n stats.tests = stats.tests || 0;\\n stats.tests++;\\n });\\n\\n runner.on('pass', function (test) {\\n stats.passes = stats.passes || 0;\\n\\n if (test.duration > test.slow()) {\\n test.speed = 'slow';\\n } else if (test.duration > test.slow() / 2) {\\n test.speed = 'medium';\\n } else {\\n test.speed = 'fast';\\n }\\n\\n stats.passes++;\\n });\\n\\n runner.on('fail', function (test, err) {\\n stats.failures = stats.failures || 0;\\n stats.failures++;\\n test.err = err;\\n failures.push(test);\\n });\\n\\n runner.on('end', function () {\\n stats.end = new Date();\\n stats.duration = new Date() - stats.start;\\n });\\n\\n runner.on('pending', function () {\\n stats.pending++;\\n });\\n}\\n\\n/**\\n * Output common epilogue used by many of\\n * the bundled reporters.\\n *\\n * @api public\\n */\\nBase.prototype.epilogue = function () {\\n var stats = this.stats;\\n var fmt;\\n\\n console.log();\\n\\n // passes\\n fmt = color('bright pass', ' ') +\\n color('green', ' %d passing') +\\n color('light', ' (%s)');\\n\\n console.log(fmt,\\n stats.passes || 0,\\n ms(stats.duration));\\n\\n // pending\\n if (stats.pending) {\\n fmt = color('pending', ' ') +\\n color('pending', ' %d pending');\\n\\n console.log(fmt, stats.pending);\\n }\\n\\n // failures\\n if (stats.failures) {\\n fmt = color('fail', ' %d failing');\\n\\n console.log(fmt, stats.failures);\\n\\n Base.list(this.failures);\\n console.log();\\n }\\n\\n console.log();\\n};\\n\\n/**\\n * Pad the given `str` to `len`.\\n *\\n * @api private\\n * @param {string} str\\n * @param {string} len\\n * @return {string}\\n */\\nfunction pad (str, len) {\\n str = String(str);\\n return Array(len - str.length + 1).join(' ') + str;\\n}\\n\\n/**\\n * Returns an inline diff between 2 strings with coloured ANSI output\\n *\\n * @api private\\n * @param {Error} err with actual/expected\\n * @param {boolean} escape\\n * @return {string} Diff\\n */\\nfunction inlineDiff (err, escape) {\\n var msg = errorDiff(err, 'WordsWithSpace', escape);\\n\\n // linenos\\n var lines = msg.split('\\\\n');\\n if (lines.length > 4) {\\n var width = String(lines.length).length;\\n msg = lines.map(function (str, i) {\\n return pad(++i, width) + ' |' + ' ' + str;\\n }).join('\\\\n');\\n }\\n\\n // legend\\n msg = '\\\\n' +\\n color('diff removed', 'actual') +\\n ' ' +\\n color('diff added', 'expected') +\\n '\\\\n\\\\n' +\\n msg +\\n '\\\\n';\\n\\n // indent\\n msg = msg.replace(/^/gm, ' ');\\n return msg;\\n}\\n\\n/**\\n * Returns a unified diff between two strings.\\n *\\n * @api private\\n * @param {Error} err with actual/expected\\n * @param {boolean} escape\\n * @return {string} The diff.\\n */\\nfunction unifiedDiff (err, escape) {\\n var indent = ' ';\\n function cleanUp (line) {\\n if (escape) {\\n line = escapeInvisibles(line);\\n }\\n if (line[0] === '+') {\\n return indent + colorLines('diff added', line);\\n }\\n if (line[0] === '-') {\\n return indent + colorLines('diff removed', line);\\n }\\n if (line.match(/@@/)) {\\n return null;\\n }\\n if (line.match(/\\\\\\\\ No newline/)) {\\n return null;\\n }\\n return indent + line;\\n }\\n function notBlank (line) {\\n return typeof line !== 'undefined' && line !== null;\\n }\\n var msg = diff.createPatch('string', err.actual, err.expected);\\n var lines = msg.split('\\\\n').splice(4);\\n return '\\\\n ' +\\n colorLines('diff added', '+ expected') + ' ' +\\n colorLines('diff removed', '- actual') +\\n '\\\\n\\\\n' +\\n lines.map(cleanUp).filter(notBlank).join('\\\\n');\\n}\\n\\n/**\\n * Return a character diff for `err`.\\n *\\n * @api private\\n * @param {Error} err\\n * @param {string} type\\n * @param {boolean} escape\\n * @return {string}\\n */\\nfunction errorDiff (err, type, escape) {\\n var actual = escape ? escapeInvisibles(err.actual) : err.actual;\\n var expected = escape ? escapeInvisibles(err.expected) : err.expected;\\n return diff['diff' + type](actual, expected).map(function (str) {\\n if (str.added) {\\n return colorLines('diff added', str.value);\\n }\\n if (str.removed) {\\n return colorLines('diff removed', str.value);\\n }\\n return str.value;\\n }).join('');\\n}\\n\\n/**\\n * Returns a string with all invisible characters in plain text\\n *\\n * @api private\\n * @param {string} line\\n * @return {string}\\n */\\nfunction escapeInvisibles (line) {\\n return line.replace(/\\\\t/g, '<tab>')\\n .replace(/\\\\r/g, '<CR>')\\n .replace(/\\\\n/g, '<LF>\\\\n');\\n}\\n\\n/**\\n * Color lines for `str`, using the color `name`.\\n *\\n * @api private\\n * @param {string} name\\n * @param {string} str\\n * @return {string}\\n */\\nfunction colorLines (name, str) {\\n return str.split('\\\\n').map(function (str) {\\n return color(name, str);\\n }).join('\\\\n');\\n}\\n\\n/**\\n * Object#toString reference.\\n */\\nvar objToString = Object.prototype.toString;\\n\\n/**\\n * Check that a / b have the same type.\\n *\\n * @api private\\n * @param {Object} a\\n * @param {Object} b\\n * @return {boolean}\\n */\\nfunction sameType (a, b) {\\n return objToString.call(a) === objToString.call(b);\\n}\\n\\n}).call(this,require('_process'),typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{\\\"../ms\\\":15,\\\"../utils\\\":38,\\\"_process\\\":82,\\\"diff\\\":56,\\\"supports-color\\\":42,\\\"tty\\\":5}],18:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\nvar utils = require('../utils');\\n\\n/**\\n * Expose `Doc`.\\n */\\n\\nexports = module.exports = Doc;\\n\\n/**\\n * Initialize a new `Doc` reporter.\\n *\\n * @param {Runner} runner\\n * @api public\\n */\\nfunction Doc (runner) {\\n Base.call(this, runner);\\n\\n var indents = 2;\\n\\n function indent () {\\n return Array(indents).join(' ');\\n }\\n\\n runner.on('suite', function (suite) {\\n if (suite.root) {\\n return;\\n }\\n ++indents;\\n console.log('%s<section class=\\\"suite\\\">', indent());\\n ++indents;\\n console.log('%s<h1>%s</h1>', indent(), utils.escape(suite.title));\\n console.log('%s<dl>', indent());\\n });\\n\\n runner.on('suite end', function (suite) {\\n if (suite.root) {\\n return;\\n }\\n console.log('%s</dl>', indent());\\n --indents;\\n console.log('%s</section>', indent());\\n --indents;\\n });\\n\\n runner.on('pass', function (test) {\\n console.log('%s <dt>%s</dt>', indent(), utils.escape(test.title));\\n var code = utils.escape(utils.clean(test.body));\\n console.log('%s <dd><pre><code>%s</code></pre></dd>', indent(), code);\\n });\\n\\n runner.on('fail', function (test, err) {\\n console.log('%s <dt class=\\\"error\\\">%s</dt>', indent(), utils.escape(test.title));\\n var code = utils.escape(utils.clean(test.body));\\n console.log('%s <dd class=\\\"error\\\"><pre><code>%s</code></pre></dd>', indent(), code);\\n console.log('%s <dd class=\\\"error\\\">%s</dd>', indent(), utils.escape(err));\\n });\\n}\\n\\n},{\\\"../utils\\\":38,\\\"./base\\\":17}],19:[function(require,module,exports){\\n(function (process){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\nvar inherits = require('../utils').inherits;\\nvar color = Base.color;\\n\\n/**\\n * Expose `Dot`.\\n */\\n\\nexports = module.exports = Dot;\\n\\n/**\\n * Initialize a new `Dot` matrix test reporter.\\n *\\n * @api public\\n * @param {Runner} runner\\n */\\nfunction Dot (runner) {\\n Base.call(this, runner);\\n\\n var self = this;\\n var width = Base.window.width * 0.75 | 0;\\n var n = -1;\\n\\n runner.on('start', function () {\\n process.stdout.write('\\\\n');\\n });\\n\\n runner.on('pending', function () {\\n if (++n % width === 0) {\\n process.stdout.write('\\\\n ');\\n }\\n process.stdout.write(color('pending', Base.symbols.comma));\\n });\\n\\n runner.on('pass', function (test) {\\n if (++n % width === 0) {\\n process.stdout.write('\\\\n ');\\n }\\n if (test.speed === 'slow') {\\n process.stdout.write(color('bright yellow', Base.symbols.dot));\\n } else {\\n process.stdout.write(color(test.speed, Base.symbols.dot));\\n }\\n });\\n\\n runner.on('fail', function () {\\n if (++n % width === 0) {\\n process.stdout.write('\\\\n ');\\n }\\n process.stdout.write(color('fail', Base.symbols.bang));\\n });\\n\\n runner.on('end', function () {\\n console.log();\\n self.epilogue();\\n });\\n}\\n\\n/**\\n * Inherit from `Base.prototype`.\\n */\\ninherits(Dot, Base);\\n\\n}).call(this,require('_process'))\\n},{\\\"../utils\\\":38,\\\"./base\\\":17,\\\"_process\\\":82}],20:[function(require,module,exports){\\n(function (global){\\n'use strict';\\n\\n/* eslint-env browser */\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\nvar utils = require('../utils');\\nvar Progress = require('../browser/progress');\\nvar escapeRe = require('escape-string-regexp');\\nvar escape = utils.escape;\\n\\n/**\\n * Save timer references to avoid Sinon interfering (see GH-237).\\n */\\n\\n/* eslint-disable no-unused-vars, no-native-reassign */\\nvar Date = global.Date;\\nvar setTimeout = global.setTimeout;\\nvar setInterval = global.setInterval;\\nvar clearTimeout = global.clearTimeout;\\nvar clearInterval = global.clearInterval;\\n/* eslint-enable no-unused-vars, no-native-reassign */\\n\\n/**\\n * Expose `HTML`.\\n */\\n\\nexports = module.exports = HTML;\\n\\n/**\\n * Stats template.\\n */\\n\\nvar statsTemplate = '<ul id=\\\"mocha-stats\\\">' +\\n '<li class=\\\"progress\\\"><canvas width=\\\"40\\\" height=\\\"40\\\"></canvas></li>' +\\n '<li class=\\\"passes\\\"><a href=\\\"javascript:void(0);\\\">passes:</a> <em>0</em></li>' +\\n '<li class=\\\"failures\\\"><a href=\\\"javascript:void(0);\\\">failures:</a> <em>0</em></li>' +\\n '<li class=\\\"duration\\\">duration: <em>0</em>s</li>' +\\n '</ul>';\\n\\nvar playIcon = '&#x2023;';\\n\\n/**\\n * Initialize a new `HTML` reporter.\\n *\\n * @api public\\n * @param {Runner} runner\\n */\\nfunction HTML (runner) {\\n Base.call(this, runner);\\n\\n var self = this;\\n var stats = this.stats;\\n var stat = fragment(statsTemplate);\\n var items = stat.getElementsByTagName('li');\\n var passes = items[1].getElementsByTagName('em')[0];\\n var passesLink = items[1].getElementsByTagName('a')[0];\\n var failures = items[2].getElementsByTagName('em')[0];\\n var failuresLink = items[2].getElementsByTagName('a')[0];\\n var duration = items[3].getElementsByTagName('em')[0];\\n var canvas = stat.getElementsByTagName('canvas')[0];\\n var report = fragment('<ul id=\\\"mocha-report\\\"></ul>');\\n var stack = [report];\\n var progress;\\n var ctx;\\n var root = document.getElementById('mocha');\\n\\n if (canvas.getContext) {\\n var ratio = window.devicePixelRatio || 1;\\n canvas.style.width = canvas.width;\\n canvas.style.height = canvas.height;\\n canvas.width *= ratio;\\n canvas.height *= ratio;\\n ctx = canvas.getContext('2d');\\n ctx.scale(ratio, ratio);\\n progress = new Progress();\\n }\\n\\n if (!root) {\\n return error('#mocha div missing, add it to your document');\\n }\\n\\n // pass toggle\\n on(passesLink, 'click', function (evt) {\\n evt.preventDefault();\\n unhide();\\n var name = (/pass/).test(report.className) ? '' : ' pass';\\n report.className = report.className.replace(/fail|pass/g, '') + name;\\n if (report.className.trim()) {\\n hideSuitesWithout('test pass');\\n }\\n });\\n\\n // failure toggle\\n on(failuresLink, 'click', function (evt) {\\n evt.preventDefault();\\n unhide();\\n var name = (/fail/).test(report.className) ? '' : ' fail';\\n report.className = report.className.replace(/fail|pass/g, '') + name;\\n if (report.className.trim()) {\\n hideSuitesWithout('test fail');\\n }\\n });\\n\\n root.appendChild(stat);\\n root.appendChild(report);\\n\\n if (progress) {\\n progress.size(40);\\n }\\n\\n runner.on('suite', function (suite) {\\n if (suite.root) {\\n return;\\n }\\n\\n // suite\\n var url = self.suiteURL(suite);\\n var el = fragment('<li class=\\\"suite\\\"><h1><a href=\\\"%s\\\">%s</a></h1></li>', url, escape(suite.title));\\n\\n // container\\n stack[0].appendChild(el);\\n stack.unshift(document.createElement('ul'));\\n el.appendChild(stack[0]);\\n });\\n\\n runner.on('suite end', function (suite) {\\n if (suite.root) {\\n updateStats();\\n return;\\n }\\n stack.shift();\\n });\\n\\n runner.on('pass', function (test) {\\n var url = self.testURL(test);\\n var markup = '<li class=\\\"test pass %e\\\"><h2>%e<span class=\\\"duration\\\">%ems</span> ' +\\n '<a href=\\\"%s\\\" class=\\\"replay\\\">' + playIcon + '</a></h2></li>';\\n var el = fragment(markup, test.speed, test.title, test.duration, url);\\n self.addCodeToggle(el, test.body);\\n appendToStack(el);\\n updateStats();\\n });\\n\\n runner.on('fail', function (test) {\\n var el = fragment('<li class=\\\"test fail\\\"><h2>%e <a href=\\\"%e\\\" class=\\\"replay\\\">' + playIcon + '</a></h2></li>',\\n test.title, self.testURL(test));\\n var stackString; // Note: Includes leading newline\\n var message = test.err.toString();\\n\\n // <=IE7 stringifies to [Object Error]. Since it can be overloaded, we\\n // check for the result of the stringifying.\\n if (message === '[object Error]') {\\n message = test.err.message;\\n }\\n\\n if (test.err.stack) {\\n var indexOfMessage = test.err.stack.indexOf(test.err.message);\\n if (indexOfMessage === -1) {\\n stackString = test.err.stack;\\n } else {\\n stackString = test.err.stack.substr(test.err.message.length + indexOfMessage);\\n }\\n } else if (test.err.sourceURL && test.err.line !== undefined) {\\n // Safari doesn't give you a stack. Let's at least provide a source line.\\n stackString = '\\\\n(' + test.err.sourceURL + ':' + test.err.line + ')';\\n }\\n\\n stackString = stackString || '';\\n\\n if (test.err.htmlMessage && stackString) {\\n el.appendChild(fragment('<div class=\\\"html-error\\\">%s\\\\n<pre class=\\\"error\\\">%e</pre></div>',\\n test.err.htmlMessage, stackString));\\n } else if (test.err.htmlMessage) {\\n el.appendChild(fragment('<div class=\\\"html-error\\\">%s</div>', test.err.htmlMessage));\\n } else {\\n el.appendChild(fragment('<pre class=\\\"error\\\">%e%e</pre>', message, stackString));\\n }\\n\\n self.addCodeToggle(el, test.body);\\n appendToStack(el);\\n updateStats();\\n });\\n\\n runner.on('pending', function (test) {\\n var el = fragment('<li class=\\\"test pass pending\\\"><h2>%e</h2></li>', test.title);\\n appendToStack(el);\\n updateStats();\\n });\\n\\n function appendToStack (el) {\\n // Don't call .appendChild if #mocha-report was already .shift()'ed off the stack.\\n if (stack[0]) {\\n stack[0].appendChild(el);\\n }\\n }\\n\\n function updateStats () {\\n // TODO: add to stats\\n var percent = stats.tests / runner.total * 100 | 0;\\n if (progress) {\\n progress.update(percent).draw(ctx);\\n }\\n\\n // update stats\\n var ms = new Date() - stats.start;\\n text(passes, stats.passes);\\n text(failures, stats.failures);\\n text(duration, (ms / 1000).toFixed(2));\\n }\\n}\\n\\n/**\\n * Makes a URL, preserving querystring (\\\"search\\\") parameters.\\n *\\n * @param {string} s\\n * @return {string} A new URL.\\n */\\nfunction makeUrl (s) {\\n var search = window.location.search;\\n\\n // Remove previous grep query parameter if present\\n if (search) {\\n search = search.replace(/[?&]grep=[^&\\\\s]*/g, '').replace(/^&/, '?');\\n }\\n\\n return window.location.pathname + (search ? search + '&' : '?') + 'grep=' + encodeURIComponent(escapeRe(s));\\n}\\n\\n/**\\n * Provide suite URL.\\n *\\n * @param {Object} [suite]\\n */\\nHTML.prototype.suiteURL = function (suite) {\\n return makeUrl(suite.fullTitle());\\n};\\n\\n/**\\n * Provide test URL.\\n *\\n * @param {Object} [test]\\n */\\nHTML.prototype.testURL = function (test) {\\n return makeUrl(test.fullTitle());\\n};\\n\\n/**\\n * Adds code toggle functionality for the provided test's list element.\\n *\\n * @param {HTMLLIElement} el\\n * @param {string} contents\\n */\\nHTML.prototype.addCodeToggle = function (el, contents) {\\n var h2 = el.getElementsByTagName('h2')[0];\\n\\n on(h2, 'click', function () {\\n pre.style.display = pre.style.display === 'none' ? 'block' : 'none';\\n });\\n\\n var pre = fragment('<pre><code>%e</code></pre>', utils.clean(contents));\\n el.appendChild(pre);\\n pre.style.display = 'none';\\n};\\n\\n/**\\n * Display error `msg`.\\n *\\n * @param {string} msg\\n */\\nfunction error (msg) {\\n document.body.appendChild(fragment('<div id=\\\"mocha-error\\\">%s</div>', msg));\\n}\\n\\n/**\\n * Return a DOM fragment from `html`.\\n *\\n * @param {string} html\\n */\\nfunction fragment (html) {\\n var args = arguments;\\n var div = document.createElement('div');\\n var i = 1;\\n\\n div.innerHTML = html.replace(/%([se])/g, function (_, type) {\\n switch (type) {\\n case 's': return String(args[i++]);\\n case 'e': return escape(args[i++]);\\n // no default\\n }\\n });\\n\\n return div.firstChild;\\n}\\n\\n/**\\n * Check for suites that do not have elements\\n * with `classname`, and hide them.\\n *\\n * @param {text} classname\\n */\\nfunction hideSuitesWithout (classname) {\\n var suites = document.getElementsByClassName('suite');\\n for (var i = 0; i < suites.length; i++) {\\n var els = suites[i].getElementsByClassName(classname);\\n if (!els.length) {\\n suites[i].className += ' hidden';\\n }\\n }\\n}\\n\\n/**\\n * Unhide .hidden suites.\\n */\\nfunction unhide () {\\n var els = document.getElementsByClassName('suite hidden');\\n for (var i = 0; i < els.length; ++i) {\\n els[i].className = els[i].className.replace('suite hidden', 'suite');\\n }\\n}\\n\\n/**\\n * Set an element's text contents.\\n *\\n * @param {HTMLElement} el\\n * @param {string} contents\\n */\\nfunction text (el, contents) {\\n if (el.textContent) {\\n el.textContent = contents;\\n } else {\\n el.innerText = contents;\\n }\\n}\\n\\n/**\\n * Listen on `event` with callback `fn`.\\n */\\nfunction on (el, event, fn) {\\n if (el.addEventListener) {\\n el.addEventListener(event, fn, false);\\n } else {\\n el.attachEvent('on' + event, fn);\\n }\\n}\\n\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{\\\"../browser/progress\\\":4,\\\"../utils\\\":38,\\\"./base\\\":17,\\\"escape-string-regexp\\\":62}],21:[function(require,module,exports){\\n'use strict';\\n\\n// Alias exports to a their normalized format Mocha#reporter to prevent a need\\n// for dynamic (try/catch) requires, which Browserify doesn't handle.\\nexports.Base = exports.base = require('./base');\\nexports.Dot = exports.dot = require('./dot');\\nexports.Doc = exports.doc = require('./doc');\\nexports.TAP = exports.tap = require('./tap');\\nexports.JSON = exports.json = require('./json');\\nexports.HTML = exports.html = require('./html');\\nexports.List = exports.list = require('./list');\\nexports.Min = exports.min = require('./min');\\nexports.Spec = exports.spec = require('./spec');\\nexports.Nyan = exports.nyan = require('./nyan');\\nexports.XUnit = exports.xunit = require('./xunit');\\nexports.Markdown = exports.markdown = require('./markdown');\\nexports.Progress = exports.progress = require('./progress');\\nexports.Landing = exports.landing = require('./landing');\\nexports.JSONStream = exports['json-stream'] = require('./json-stream');\\n\\n},{\\\"./base\\\":17,\\\"./doc\\\":18,\\\"./dot\\\":19,\\\"./html\\\":20,\\\"./json\\\":23,\\\"./json-stream\\\":22,\\\"./landing\\\":24,\\\"./list\\\":25,\\\"./markdown\\\":26,\\\"./min\\\":27,\\\"./nyan\\\":28,\\\"./progress\\\":29,\\\"./spec\\\":30,\\\"./tap\\\":31,\\\"./xunit\\\":32}],22:[function(require,module,exports){\\n(function (process){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\nvar JSON = require('json3');\\n\\n/**\\n * Expose `List`.\\n */\\n\\nexports = module.exports = List;\\n\\n/**\\n * Initialize a new `List` test reporter.\\n *\\n * @api public\\n * @param {Runner} runner\\n */\\nfunction List (runner) {\\n Base.call(this, runner);\\n\\n var self = this;\\n var total = runner.total;\\n\\n runner.on('start', function () {\\n console.log(JSON.stringify(['start', { total: total }]));\\n });\\n\\n runner.on('pass', function (test) {\\n console.log(JSON.stringify(['pass', clean(test)]));\\n });\\n\\n runner.on('fail', function (test, err) {\\n test = clean(test);\\n test.err = err.message;\\n test.stack = err.stack || null;\\n console.log(JSON.stringify(['fail', test]));\\n });\\n\\n runner.on('end', function () {\\n process.stdout.write(JSON.stringify(['end', self.stats]));\\n });\\n}\\n\\n/**\\n * Return a plain-object representation of `test`\\n * free of cyclic properties etc.\\n *\\n * @api private\\n * @param {Object} test\\n * @return {Object}\\n */\\nfunction clean (test) {\\n return {\\n title: test.title,\\n fullTitle: test.fullTitle(),\\n duration: test.duration,\\n currentRetry: test.currentRetry()\\n };\\n}\\n\\n}).call(this,require('_process'))\\n},{\\\"./base\\\":17,\\\"_process\\\":82,\\\"json3\\\":69}],23:[function(require,module,exports){\\n(function (process){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\n\\n/**\\n * Expose `JSON`.\\n */\\n\\nexports = module.exports = JSONReporter;\\n\\n/**\\n * Initialize a new `JSON` reporter.\\n *\\n * @api public\\n * @param {Runner} runner\\n */\\nfunction JSONReporter (runner) {\\n Base.call(this, runner);\\n\\n var self = this;\\n var tests = [];\\n var pending = [];\\n var failures = [];\\n var passes = [];\\n\\n runner.on('test end', function (test) {\\n tests.push(test);\\n });\\n\\n runner.on('pass', function (test) {\\n passes.push(test);\\n });\\n\\n runner.on('fail', function (test) {\\n failures.push(test);\\n });\\n\\n runner.on('pending', function (test) {\\n pending.push(test);\\n });\\n\\n runner.on('end', function () {\\n var obj = {\\n stats: self.stats,\\n tests: tests.map(clean),\\n pending: pending.map(clean),\\n failures: failures.map(clean),\\n passes: passes.map(clean)\\n };\\n\\n runner.testResults = obj;\\n\\n process.stdout.write(JSON.stringify(obj, null, 2));\\n });\\n}\\n\\n/**\\n * Return a plain-object representation of `test`\\n * free of cyclic properties etc.\\n *\\n * @api private\\n * @param {Object} test\\n * @return {Object}\\n */\\nfunction clean (test) {\\n return {\\n title: test.title,\\n fullTitle: test.fullTitle(),\\n duration: test.duration,\\n currentRetry: test.currentRetry(),\\n err: errorJSON(test.err || {})\\n };\\n}\\n\\n/**\\n * Transform `error` into a JSON object.\\n *\\n * @api private\\n * @param {Error} err\\n * @return {Object}\\n */\\nfunction errorJSON (err) {\\n var res = {};\\n Object.getOwnPropertyNames(err).forEach(function (key) {\\n res[key] = err[key];\\n }, err);\\n return res;\\n}\\n\\n}).call(this,require('_process'))\\n},{\\\"./base\\\":17,\\\"_process\\\":82}],24:[function(require,module,exports){\\n(function (process){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\nvar inherits = require('../utils').inherits;\\nvar cursor = Base.cursor;\\nvar color = Base.color;\\n\\n/**\\n * Expose `Landing`.\\n */\\n\\nexports = module.exports = Landing;\\n\\n/**\\n * Airplane color.\\n */\\n\\nBase.colors.plane = 0;\\n\\n/**\\n * Airplane crash color.\\n */\\n\\nBase.colors['plane crash'] = 31;\\n\\n/**\\n * Runway color.\\n */\\n\\nBase.colors.runway = 90;\\n\\n/**\\n * Initialize a new `Landing` reporter.\\n *\\n * @api public\\n * @param {Runner} runner\\n */\\nfunction Landing (runner) {\\n Base.call(this, runner);\\n\\n var self = this;\\n var width = Base.window.width * 0.75 | 0;\\n var total = runner.total;\\n var stream = process.stdout;\\n var plane = color('plane', '✈');\\n var crashed = -1;\\n var n = 0;\\n\\n function runway () {\\n var buf = Array(width).join('-');\\n return ' ' + color('runway', buf);\\n }\\n\\n runner.on('start', function () {\\n stream.write('\\\\n\\\\n\\\\n ');\\n cursor.hide();\\n });\\n\\n runner.on('test end', function (test) {\\n // check if the plane crashed\\n var col = crashed === -1 ? width * ++n / total | 0 : crashed;\\n\\n // show the crash\\n if (test.state === 'failed') {\\n plane = color('plane crash', '✈');\\n crashed = col;\\n }\\n\\n // render landing strip\\n stream.write('\\\\u001b[' + (width + 1) + 'D\\\\u001b[2A');\\n stream.write(runway());\\n stream.write('\\\\n ');\\n stream.write(color('runway', Array(col).join('⋅')));\\n stream.write(plane);\\n stream.write(color('runway', Array(width - col).join('⋅') + '\\\\n'));\\n stream.write(runway());\\n stream.write('\\\\u001b[0m');\\n });\\n\\n runner.on('end', function () {\\n cursor.show();\\n console.log();\\n self.epilogue();\\n });\\n}\\n\\n/**\\n * Inherit from `Base.prototype`.\\n */\\ninherits(Landing, Base);\\n\\n}).call(this,require('_process'))\\n},{\\\"../utils\\\":38,\\\"./base\\\":17,\\\"_process\\\":82}],25:[function(require,module,exports){\\n(function (process){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\nvar inherits = require('../utils').inherits;\\nvar color = Base.color;\\nvar cursor = Base.cursor;\\n\\n/**\\n * Expose `List`.\\n */\\n\\nexports = module.exports = List;\\n\\n/**\\n * Initialize a new `List` test reporter.\\n *\\n * @api public\\n * @param {Runner} runner\\n */\\nfunction List (runner) {\\n Base.call(this, runner);\\n\\n var self = this;\\n var n = 0;\\n\\n runner.on('start', function () {\\n console.log();\\n });\\n\\n runner.on('test', function (test) {\\n process.stdout.write(color('pass', ' ' + test.fullTitle() + ': '));\\n });\\n\\n runner.on('pending', function (test) {\\n var fmt = color('checkmark', ' -') +\\n color('pending', ' %s');\\n console.log(fmt, test.fullTitle());\\n });\\n\\n runner.on('pass', function (test) {\\n var fmt = color('checkmark', ' ' + Base.symbols.ok) +\\n color('pass', ' %s: ') +\\n color(test.speed, '%dms');\\n cursor.CR();\\n console.log(fmt, test.fullTitle(), test.duration);\\n });\\n\\n runner.on('fail', function (test) {\\n cursor.CR();\\n console.log(color('fail', ' %d) %s'), ++n, test.fullTitle());\\n });\\n\\n runner.on('end', self.epilogue.bind(self));\\n}\\n\\n/**\\n * Inherit from `Base.prototype`.\\n */\\ninherits(List, Base);\\n\\n}).call(this,require('_process'))\\n},{\\\"../utils\\\":38,\\\"./base\\\":17,\\\"_process\\\":82}],26:[function(require,module,exports){\\n(function (process){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\nvar utils = require('../utils');\\n\\n/**\\n * Constants\\n */\\n\\nvar SUITE_PREFIX = '$';\\n\\n/**\\n * Expose `Markdown`.\\n */\\n\\nexports = module.exports = Markdown;\\n\\n/**\\n * Initialize a new `Markdown` reporter.\\n *\\n * @api public\\n * @param {Runner} runner\\n */\\nfunction Markdown (runner) {\\n Base.call(this, runner);\\n\\n var level = 0;\\n var buf = '';\\n\\n function title (str) {\\n return Array(level).join('#') + ' ' + str;\\n }\\n\\n function mapTOC (suite, obj) {\\n var ret = obj;\\n var key = SUITE_PREFIX + suite.title;\\n\\n obj = obj[key] = obj[key] || { suite: suite };\\n suite.suites.forEach(function (suite) {\\n mapTOC(suite, obj);\\n });\\n\\n return ret;\\n }\\n\\n function stringifyTOC (obj, level) {\\n ++level;\\n var buf = '';\\n var link;\\n for (var key in obj) {\\n if (key === 'suite') {\\n continue;\\n }\\n if (key !== SUITE_PREFIX) {\\n link = ' - [' + key.substring(1) + ']';\\n link += '(#' + utils.slug(obj[key].suite.fullTitle()) + ')\\\\n';\\n buf += Array(level).join(' ') + link;\\n }\\n buf += stringifyTOC(obj[key], level);\\n }\\n return buf;\\n }\\n\\n function generateTOC (suite) {\\n var obj = mapTOC(suite, {});\\n return stringifyTOC(obj, 0);\\n }\\n\\n generateTOC(runner.suite);\\n\\n runner.on('suite', function (suite) {\\n ++level;\\n var slug = utils.slug(suite.fullTitle());\\n buf += '<a name=\\\"' + slug + '\\\"></a>' + '\\\\n';\\n buf += title(suite.title) + '\\\\n';\\n });\\n\\n runner.on('suite end', function () {\\n --level;\\n });\\n\\n runner.on('pass', function (test) {\\n var code = utils.clean(test.body);\\n buf += test.title + '.\\\\n';\\n buf += '\\\\n```js\\\\n';\\n buf += code + '\\\\n';\\n buf += '```\\\\n\\\\n';\\n });\\n\\n runner.on('end', function () {\\n process.stdout.write('# TOC\\\\n');\\n process.stdout.write(generateTOC(runner.suite));\\n process.stdout.write(buf);\\n });\\n}\\n\\n}).call(this,require('_process'))\\n},{\\\"../utils\\\":38,\\\"./base\\\":17,\\\"_process\\\":82}],27:[function(require,module,exports){\\n(function (process){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\nvar inherits = require('../utils').inherits;\\n\\n/**\\n * Expose `Min`.\\n */\\n\\nexports = module.exports = Min;\\n\\n/**\\n * Initialize a new `Min` minimal test reporter (best used with --watch).\\n *\\n * @api public\\n * @param {Runner} runner\\n */\\nfunction Min (runner) {\\n Base.call(this, runner);\\n\\n runner.on('start', function () {\\n // clear screen\\n process.stdout.write('\\\\u001b[2J');\\n // set cursor position\\n process.stdout.write('\\\\u001b[1;3H');\\n });\\n\\n runner.on('end', this.epilogue.bind(this));\\n}\\n\\n/**\\n * Inherit from `Base.prototype`.\\n */\\ninherits(Min, Base);\\n\\n}).call(this,require('_process'))\\n},{\\\"../utils\\\":38,\\\"./base\\\":17,\\\"_process\\\":82}],28:[function(require,module,exports){\\n(function (process){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\nvar inherits = require('../utils').inherits;\\n\\n/**\\n * Expose `Dot`.\\n */\\n\\nexports = module.exports = NyanCat;\\n\\n/**\\n * Initialize a new `Dot` matrix test reporter.\\n *\\n * @param {Runner} runner\\n * @api public\\n */\\n\\nfunction NyanCat (runner) {\\n Base.call(this, runner);\\n\\n var self = this;\\n var width = Base.window.width * 0.75 | 0;\\n var nyanCatWidth = this.nyanCatWidth = 11;\\n\\n this.colorIndex = 0;\\n this.numberOfLines = 4;\\n this.rainbowColors = self.generateColors();\\n this.scoreboardWidth = 5;\\n this.tick = 0;\\n this.trajectories = [[], [], [], []];\\n this.trajectoryWidthMax = (width - nyanCatWidth);\\n\\n runner.on('start', function () {\\n Base.cursor.hide();\\n self.draw();\\n });\\n\\n runner.on('pending', function () {\\n self.draw();\\n });\\n\\n runner.on('pass', function () {\\n self.draw();\\n });\\n\\n runner.on('fail', function () {\\n self.draw();\\n });\\n\\n runner.on('end', function () {\\n Base.cursor.show();\\n for (var i = 0; i < self.numberOfLines; i++) {\\n write('\\\\n');\\n }\\n self.epilogue();\\n });\\n}\\n\\n/**\\n * Inherit from `Base.prototype`.\\n */\\ninherits(NyanCat, Base);\\n\\n/**\\n * Draw the nyan cat\\n *\\n * @api private\\n */\\n\\nNyanCat.prototype.draw = function () {\\n this.appendRainbow();\\n this.drawScoreboard();\\n this.drawRainbow();\\n this.drawNyanCat();\\n this.tick = !this.tick;\\n};\\n\\n/**\\n * Draw the \\\"scoreboard\\\" showing the number\\n * of passes, failures and pending tests.\\n *\\n * @api private\\n */\\n\\nNyanCat.prototype.drawScoreboard = function () {\\n var stats = this.stats;\\n\\n function draw (type, n) {\\n write(' ');\\n write(Base.color(type, n));\\n write('\\\\n');\\n }\\n\\n draw('green', stats.passes);\\n draw('fail', stats.failures);\\n draw('pending', stats.pending);\\n write('\\\\n');\\n\\n this.cursorUp(this.numberOfLines);\\n};\\n\\n/**\\n * Append the rainbow.\\n *\\n * @api private\\n */\\n\\nNyanCat.prototype.appendRainbow = function () {\\n var segment = this.tick ? '_' : '-';\\n var rainbowified = this.rainbowify(segment);\\n\\n for (var index = 0; index < this.numberOfLines; index++) {\\n var trajectory = this.trajectories[index];\\n if (trajectory.length >= this.trajectoryWidthMax) {\\n trajectory.shift();\\n }\\n trajectory.push(rainbowified);\\n }\\n};\\n\\n/**\\n * Draw the rainbow.\\n *\\n * @api private\\n */\\n\\nNyanCat.prototype.drawRainbow = function () {\\n var self = this;\\n\\n this.trajectories.forEach(function (line) {\\n write('\\\\u001b[' + self.scoreboardWidth + 'C');\\n write(line.join(''));\\n write('\\\\n');\\n });\\n\\n this.cursorUp(this.numberOfLines);\\n};\\n\\n/**\\n * Draw the nyan cat\\n *\\n * @api private\\n */\\nNyanCat.prototype.drawNyanCat = function () {\\n var self = this;\\n var startWidth = this.scoreboardWidth + this.trajectories[0].length;\\n var dist = '\\\\u001b[' + startWidth + 'C';\\n var padding = '';\\n\\n write(dist);\\n write('_,------,');\\n write('\\\\n');\\n\\n write(dist);\\n padding = self.tick ? ' ' : ' ';\\n write('_|' + padding + '/\\\\\\\\_/\\\\\\\\ ');\\n write('\\\\n');\\n\\n write(dist);\\n padding = self.tick ? '_' : '__';\\n var tail = self.tick ? '~' : '^';\\n write(tail + '|' + padding + this.face() + ' ');\\n write('\\\\n');\\n\\n write(dist);\\n padding = self.tick ? ' ' : ' ';\\n write(padding + '\\\"\\\" \\\"\\\" ');\\n write('\\\\n');\\n\\n this.cursorUp(this.numberOfLines);\\n};\\n\\n/**\\n * Draw nyan cat face.\\n *\\n * @api private\\n * @return {string}\\n */\\n\\nNyanCat.prototype.face = function () {\\n var stats = this.stats;\\n if (stats.failures) {\\n return '( x .x)';\\n } else if (stats.pending) {\\n return '( o .o)';\\n } else if (stats.passes) {\\n return '( ^ .^)';\\n }\\n return '( - .-)';\\n};\\n\\n/**\\n * Move cursor up `n`.\\n *\\n * @api private\\n * @param {number} n\\n */\\n\\nNyanCat.prototype.cursorUp = function (n) {\\n write('\\\\u001b[' + n + 'A');\\n};\\n\\n/**\\n * Move cursor down `n`.\\n *\\n * @api private\\n * @param {number} n\\n */\\n\\nNyanCat.prototype.cursorDown = function (n) {\\n write('\\\\u001b[' + n + 'B');\\n};\\n\\n/**\\n * Generate rainbow colors.\\n *\\n * @api private\\n * @return {Array}\\n */\\nNyanCat.prototype.generateColors = function () {\\n var colors = [];\\n\\n for (var i = 0; i < (6 * 7); i++) {\\n var pi3 = Math.floor(Math.PI / 3);\\n var n = (i * (1.0 / 6));\\n var r = Math.floor(3 * Math.sin(n) + 3);\\n var g = Math.floor(3 * Math.sin(n + 2 * pi3) + 3);\\n var b = Math.floor(3 * Math.sin(n + 4 * pi3) + 3);\\n colors.push(36 * r + 6 * g + b + 16);\\n }\\n\\n return colors;\\n};\\n\\n/**\\n * Apply rainbow to the given `str`.\\n *\\n * @api private\\n * @param {string} str\\n * @return {string}\\n */\\nNyanCat.prototype.rainbowify = function (str) {\\n if (!Base.useColors) {\\n return str;\\n }\\n var color = this.rainbowColors[this.colorIndex % this.rainbowColors.length];\\n this.colorIndex += 1;\\n return '\\\\u001b[38;5;' + color + 'm' + str + '\\\\u001b[0m';\\n};\\n\\n/**\\n * Stdout helper.\\n *\\n * @param {string} string A message to write to stdout.\\n */\\nfunction write (string) {\\n process.stdout.write(string);\\n}\\n\\n}).call(this,require('_process'))\\n},{\\\"../utils\\\":38,\\\"./base\\\":17,\\\"_process\\\":82}],29:[function(require,module,exports){\\n(function (process){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\nvar inherits = require('../utils').inherits;\\nvar color = Base.color;\\nvar cursor = Base.cursor;\\n\\n/**\\n * Expose `Progress`.\\n */\\n\\nexports = module.exports = Progress;\\n\\n/**\\n * General progress bar color.\\n */\\n\\nBase.colors.progress = 90;\\n\\n/**\\n * Initialize a new `Progress` bar test reporter.\\n *\\n * @api public\\n * @param {Runner} runner\\n * @param {Object} options\\n */\\nfunction Progress (runner, options) {\\n Base.call(this, runner);\\n\\n var self = this;\\n var width = Base.window.width * 0.50 | 0;\\n var total = runner.total;\\n var complete = 0;\\n var lastN = -1;\\n\\n // default chars\\n options = options || {};\\n options.open = options.open || '[';\\n options.complete = options.complete || '▬';\\n options.incomplete = options.incomplete || Base.symbols.dot;\\n options.close = options.close || ']';\\n options.verbose = false;\\n\\n // tests started\\n runner.on('start', function () {\\n console.log();\\n cursor.hide();\\n });\\n\\n // tests complete\\n runner.on('test end', function () {\\n complete++;\\n\\n var percent = complete / total;\\n var n = width * percent | 0;\\n var i = width - n;\\n\\n if (n === lastN && !options.verbose) {\\n // Don't re-render the line if it hasn't changed\\n return;\\n }\\n lastN = n;\\n\\n cursor.CR();\\n process.stdout.write('\\\\u001b[J');\\n process.stdout.write(color('progress', ' ' + options.open));\\n process.stdout.write(Array(n).join(options.complete));\\n process.stdout.write(Array(i).join(options.incomplete));\\n process.stdout.write(color('progress', options.close));\\n if (options.verbose) {\\n process.stdout.write(color('progress', ' ' + complete + ' of ' + total));\\n }\\n });\\n\\n // tests are complete, output some stats\\n // and the failures if any\\n runner.on('end', function () {\\n cursor.show();\\n console.log();\\n self.epilogue();\\n });\\n}\\n\\n/**\\n * Inherit from `Base.prototype`.\\n */\\ninherits(Progress, Base);\\n\\n}).call(this,require('_process'))\\n},{\\\"../utils\\\":38,\\\"./base\\\":17,\\\"_process\\\":82}],30:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\nvar inherits = require('../utils').inherits;\\nvar color = Base.color;\\n\\n/**\\n * Expose `Spec`.\\n */\\n\\nexports = module.exports = Spec;\\n\\n/**\\n * Initialize a new `Spec` test reporter.\\n *\\n * @api public\\n * @param {Runner} runner\\n */\\nfunction Spec (runner) {\\n Base.call(this, runner);\\n\\n var self = this;\\n var indents = 0;\\n var n = 0;\\n\\n function indent () {\\n return Array(indents).join(' ');\\n }\\n\\n runner.on('start', function () {\\n console.log();\\n });\\n\\n runner.on('suite', function (suite) {\\n ++indents;\\n console.log(color('suite', '%s%s'), indent(), suite.title);\\n });\\n\\n runner.on('suite end', function () {\\n --indents;\\n if (indents === 1) {\\n console.log();\\n }\\n });\\n\\n runner.on('pending', function (test) {\\n var fmt = indent() + color('pending', ' - %s');\\n console.log(fmt, test.title);\\n });\\n\\n runner.on('pass', function (test) {\\n var fmt;\\n if (test.speed === 'fast') {\\n fmt = indent() +\\n color('checkmark', ' ' + Base.symbols.ok) +\\n color('pass', ' %s');\\n console.log(fmt, test.title);\\n } else {\\n fmt = indent() +\\n color('checkmark', ' ' + Base.symbols.ok) +\\n color('pass', ' %s') +\\n color(test.speed, ' (%dms)');\\n console.log(fmt, test.title, test.duration);\\n }\\n });\\n\\n runner.on('fail', function (test) {\\n console.log(indent() + color('fail', ' %d) %s'), ++n, test.title);\\n });\\n\\n runner.on('end', self.epilogue.bind(self));\\n}\\n\\n/**\\n * Inherit from `Base.prototype`.\\n */\\ninherits(Spec, Base);\\n\\n},{\\\"../utils\\\":38,\\\"./base\\\":17}],31:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\n\\n/**\\n * Expose `TAP`.\\n */\\n\\nexports = module.exports = TAP;\\n\\n/**\\n * Initialize a new `TAP` reporter.\\n *\\n * @api public\\n * @param {Runner} runner\\n */\\nfunction TAP (runner) {\\n Base.call(this, runner);\\n\\n var n = 1;\\n var passes = 0;\\n var failures = 0;\\n\\n runner.on('start', function () {\\n var total = runner.grepTotal(runner.suite);\\n console.log('%d..%d', 1, total);\\n });\\n\\n runner.on('test end', function () {\\n ++n;\\n });\\n\\n runner.on('pending', function (test) {\\n console.log('ok %d %s # SKIP -', n, title(test));\\n });\\n\\n runner.on('pass', function (test) {\\n passes++;\\n console.log('ok %d %s', n, title(test));\\n });\\n\\n runner.on('fail', function (test, err) {\\n failures++;\\n console.log('not ok %d %s', n, title(test));\\n if (err.stack) {\\n console.log(err.stack.replace(/^/gm, ' '));\\n }\\n });\\n\\n runner.on('end', function () {\\n console.log('# tests ' + (passes + failures));\\n console.log('# pass ' + passes);\\n console.log('# fail ' + failures);\\n });\\n}\\n\\n/**\\n * Return a TAP-safe title of `test`\\n *\\n * @api private\\n * @param {Object} test\\n * @return {String}\\n */\\nfunction title (test) {\\n return test.fullTitle().replace(/#/g, '');\\n}\\n\\n},{\\\"./base\\\":17}],32:[function(require,module,exports){\\n(function (process,global){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Base = require('./base');\\nvar utils = require('../utils');\\nvar inherits = utils.inherits;\\nvar fs = require('fs');\\nvar escape = utils.escape;\\nvar mkdirp = require('mkdirp');\\nvar path = require('path');\\n\\n/**\\n * Save timer references to avoid Sinon interfering (see GH-237).\\n */\\n\\n/* eslint-disable no-unused-vars, no-native-reassign */\\nvar Date = global.Date;\\nvar setTimeout = global.setTimeout;\\nvar setInterval = global.setInterval;\\nvar clearTimeout = global.clearTimeout;\\nvar clearInterval = global.clearInterval;\\n/* eslint-enable no-unused-vars, no-native-reassign */\\n\\n/**\\n * Expose `XUnit`.\\n */\\n\\nexports = module.exports = XUnit;\\n\\n/**\\n * Initialize a new `XUnit` reporter.\\n *\\n * @api public\\n * @param {Runner} runner\\n */\\nfunction XUnit (runner, options) {\\n Base.call(this, runner);\\n\\n var stats = this.stats;\\n var tests = [];\\n var self = this;\\n\\n if (options && options.reporterOptions && options.reporterOptions.output) {\\n if (!fs.createWriteStream) {\\n throw new Error('file output not supported in browser');\\n }\\n mkdirp.sync(path.dirname(options.reporterOptions.output));\\n self.fileStream = fs.createWriteStream(options.reporterOptions.output);\\n }\\n\\n runner.on('pending', function (test) {\\n tests.push(test);\\n });\\n\\n runner.on('pass', function (test) {\\n tests.push(test);\\n });\\n\\n runner.on('fail', function (test) {\\n tests.push(test);\\n });\\n\\n runner.on('end', function () {\\n self.write(tag('testsuite', {\\n name: 'Mocha Tests',\\n tests: stats.tests,\\n failures: stats.failures,\\n errors: stats.failures,\\n skipped: stats.tests - stats.failures - stats.passes,\\n timestamp: (new Date()).toUTCString(),\\n time: (stats.duration / 1000) || 0\\n }, false));\\n\\n tests.forEach(function (t) {\\n self.test(t);\\n });\\n\\n self.write('</testsuite>');\\n });\\n}\\n\\n/**\\n * Inherit from `Base.prototype`.\\n */\\ninherits(XUnit, Base);\\n\\n/**\\n * Override done to close the stream (if it's a file).\\n *\\n * @param failures\\n * @param {Function} fn\\n */\\nXUnit.prototype.done = function (failures, fn) {\\n if (this.fileStream) {\\n this.fileStream.end(function () {\\n fn(failures);\\n });\\n } else {\\n fn(failures);\\n }\\n};\\n\\n/**\\n * Write out the given line.\\n *\\n * @param {string} line\\n */\\nXUnit.prototype.write = function (line) {\\n if (this.fileStream) {\\n this.fileStream.write(line + '\\\\n');\\n } else if (typeof process === 'object' && process.stdout) {\\n process.stdout.write(line + '\\\\n');\\n } else {\\n console.log(line);\\n }\\n};\\n\\n/**\\n * Output tag for the given `test.`\\n *\\n * @param {Test} test\\n */\\nXUnit.prototype.test = function (test) {\\n var attrs = {\\n classname: test.parent.fullTitle(),\\n name: test.title,\\n time: (test.duration / 1000) || 0\\n };\\n\\n if (test.state === 'failed') {\\n var err = test.err;\\n this.write(tag('testcase', attrs, false, tag('failure', {}, false, escape(err.message) + '\\\\n' + escape(err.stack))));\\n } else if (test.isPending()) {\\n this.write(tag('testcase', attrs, false, tag('skipped', {}, true)));\\n } else {\\n this.write(tag('testcase', attrs, true));\\n }\\n};\\n\\n/**\\n * HTML tag helper.\\n *\\n * @param name\\n * @param attrs\\n * @param close\\n * @param content\\n * @return {string}\\n */\\nfunction tag (name, attrs, close, content) {\\n var end = close ? '/>' : '>';\\n var pairs = [];\\n var tag;\\n\\n for (var key in attrs) {\\n if (Object.prototype.hasOwnProperty.call(attrs, key)) {\\n pairs.push(key + '=\\\"' + escape(attrs[key]) + '\\\"');\\n }\\n }\\n\\n tag = '<' + name + (pairs.length ? ' ' + pairs.join(' ') : '') + end;\\n if (content) {\\n tag += content + '</' + name + end;\\n }\\n return tag;\\n}\\n\\n}).call(this,require('_process'),typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{\\\"../utils\\\":38,\\\"./base\\\":17,\\\"_process\\\":82,\\\"fs\\\":42,\\\"mkdirp\\\":79,\\\"path\\\":42}],33:[function(require,module,exports){\\n(function (global){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar EventEmitter = require('events').EventEmitter;\\nvar JSON = require('json3');\\nvar Pending = require('./pending');\\nvar debug = require('debug')('mocha:runnable');\\nvar milliseconds = require('./ms');\\nvar utils = require('./utils');\\nvar create = require('lodash.create');\\n\\n/**\\n * Save timer references to avoid Sinon interfering (see GH-237).\\n */\\n\\n/* eslint-disable no-unused-vars, no-native-reassign */\\nvar Date = global.Date;\\nvar setTimeout = global.setTimeout;\\nvar setInterval = global.setInterval;\\nvar clearTimeout = global.clearTimeout;\\nvar clearInterval = global.clearInterval;\\n/* eslint-enable no-unused-vars, no-native-reassign */\\n\\n/**\\n * Object#toString().\\n */\\n\\nvar toString = Object.prototype.toString;\\n\\n/**\\n * Expose `Runnable`.\\n */\\n\\nmodule.exports = Runnable;\\n\\n/**\\n * Initialize a new `Runnable` with the given `title` and callback `fn`.\\n *\\n * @param {String} title\\n * @param {Function} fn\\n * @api private\\n * @param {string} title\\n * @param {Function} fn\\n */\\nfunction Runnable (title, fn) {\\n this.title = title;\\n this.fn = fn;\\n this.body = (fn || '').toString();\\n this.async = fn && fn.length;\\n this.sync = !this.async;\\n this._timeout = 2000;\\n this._slow = 75;\\n this._enableTimeouts = true;\\n this.timedOut = false;\\n this._trace = new Error('done() called multiple times');\\n this._retries = -1;\\n this._currentRetry = 0;\\n this.pending = false;\\n}\\n\\n/**\\n * Inherit from `EventEmitter.prototype`.\\n */\\nRunnable.prototype = create(EventEmitter.prototype, {\\n constructor: Runnable\\n});\\n\\n/**\\n * Set & get timeout `ms`.\\n *\\n * @api private\\n * @param {number|string} ms\\n * @return {Runnable|number} ms or Runnable instance.\\n */\\nRunnable.prototype.timeout = function (ms) {\\n if (!arguments.length) {\\n return this._timeout;\\n }\\n // see #1652 for reasoning\\n if (ms === 0 || ms > Math.pow(2, 31)) {\\n this._enableTimeouts = false;\\n }\\n if (typeof ms === 'string') {\\n ms = milliseconds(ms);\\n }\\n debug('timeout %d', ms);\\n this._timeout = ms;\\n if (this.timer) {\\n this.resetTimeout();\\n }\\n return this;\\n};\\n\\n/**\\n * Set & get slow `ms`.\\n *\\n * @api private\\n * @param {number|string} ms\\n * @return {Runnable|number} ms or Runnable instance.\\n */\\nRunnable.prototype.slow = function (ms) {\\n if (typeof ms === 'undefined') {\\n return this._slow;\\n }\\n if (typeof ms === 'string') {\\n ms = milliseconds(ms);\\n }\\n debug('timeout %d', ms);\\n this._slow = ms;\\n return this;\\n};\\n\\n/**\\n * Set and get whether timeout is `enabled`.\\n *\\n * @api private\\n * @param {boolean} enabled\\n * @return {Runnable|boolean} enabled or Runnable instance.\\n */\\nRunnable.prototype.enableTimeouts = function (enabled) {\\n if (!arguments.length) {\\n return this._enableTimeouts;\\n }\\n debug('enableTimeouts %s', enabled);\\n this._enableTimeouts = enabled;\\n return this;\\n};\\n\\n/**\\n * Halt and mark as pending.\\n *\\n * @api public\\n */\\nRunnable.prototype.skip = function () {\\n throw new Pending('sync skip');\\n};\\n\\n/**\\n * Check if this runnable or its parent suite is marked as pending.\\n *\\n * @api private\\n */\\nRunnable.prototype.isPending = function () {\\n return this.pending || (this.parent && this.parent.isPending());\\n};\\n\\n/**\\n * Set number of retries.\\n *\\n * @api private\\n */\\nRunnable.prototype.retries = function (n) {\\n if (!arguments.length) {\\n return this._retries;\\n }\\n this._retries = n;\\n};\\n\\n/**\\n * Get current retry\\n *\\n * @api private\\n */\\nRunnable.prototype.currentRetry = function (n) {\\n if (!arguments.length) {\\n return this._currentRetry;\\n }\\n this._currentRetry = n;\\n};\\n\\n/**\\n * Return the full title generated by recursively concatenating the parent's\\n * full title.\\n *\\n * @api public\\n * @return {string}\\n */\\nRunnable.prototype.fullTitle = function () {\\n return this.parent.fullTitle() + ' ' + this.title;\\n};\\n\\n/**\\n * Clear the timeout.\\n *\\n * @api private\\n */\\nRunnable.prototype.clearTimeout = function () {\\n clearTimeout(this.timer);\\n};\\n\\n/**\\n * Inspect the runnable void of private properties.\\n *\\n * @api private\\n * @return {string}\\n */\\nRunnable.prototype.inspect = function () {\\n return JSON.stringify(this, function (key, val) {\\n if (key[0] === '_') {\\n return;\\n }\\n if (key === 'parent') {\\n return '#<Suite>';\\n }\\n if (key === 'ctx') {\\n return '#<Context>';\\n }\\n return val;\\n }, 2);\\n};\\n\\n/**\\n * Reset the timeout.\\n *\\n * @api private\\n */\\nRunnable.prototype.resetTimeout = function () {\\n var self = this;\\n var ms = this.timeout() || 1e9;\\n\\n if (!this._enableTimeouts) {\\n return;\\n }\\n this.clearTimeout();\\n this.timer = setTimeout(function () {\\n if (!self._enableTimeouts) {\\n return;\\n }\\n self.callback(new Error('Timeout of ' + ms +\\n 'ms exceeded. For async tests and hooks, ensure \\\"done()\\\" is called; if returning a Promise, ensure it resolves.'));\\n self.timedOut = true;\\n }, ms);\\n};\\n\\n/**\\n * Whitelist a list of globals for this test run.\\n *\\n * @api private\\n * @param {string[]} globals\\n */\\nRunnable.prototype.globals = function (globals) {\\n if (!arguments.length) {\\n return this._allowedGlobals;\\n }\\n this._allowedGlobals = globals;\\n};\\n\\n/**\\n * Run the test and invoke `fn(err)`.\\n *\\n * @param {Function} fn\\n * @api private\\n */\\nRunnable.prototype.run = function (fn) {\\n var self = this;\\n var start = new Date();\\n var ctx = this.ctx;\\n var finished;\\n var emitted;\\n\\n // Sometimes the ctx exists, but it is not runnable\\n if (ctx && ctx.runnable) {\\n ctx.runnable(this);\\n }\\n\\n // called multiple times\\n function multiple (err) {\\n if (emitted) {\\n return;\\n }\\n emitted = true;\\n self.emit('error', err || new Error('done() called multiple times; stacktrace may be inaccurate'));\\n }\\n\\n // finished\\n function done (err) {\\n var ms = self.timeout();\\n if (self.timedOut) {\\n return;\\n }\\n if (finished) {\\n return multiple(err || self._trace);\\n }\\n\\n self.clearTimeout();\\n self.duration = new Date() - start;\\n finished = true;\\n if (!err && self.duration > ms && self._enableTimeouts) {\\n err = new Error('Timeout of ' + ms +\\n 'ms exceeded. For async tests and hooks, ensure \\\"done()\\\" is called; if returning a Promise, ensure it resolves.');\\n }\\n fn(err);\\n }\\n\\n // for .resetTimeout()\\n this.callback = done;\\n\\n // explicit async with `done` argument\\n if (this.async) {\\n this.resetTimeout();\\n\\n // allows skip() to be used in an explicit async context\\n this.skip = function asyncSkip () {\\n done(new Pending('async skip call'));\\n // halt execution. the Runnable will be marked pending\\n // by the previous call, and the uncaught handler will ignore\\n // the failure.\\n throw new Pending('async skip; aborting execution');\\n };\\n\\n if (this.allowUncaught) {\\n return callFnAsync(this.fn);\\n }\\n try {\\n callFnAsync(this.fn);\\n } catch (err) {\\n emitted = true;\\n done(utils.getError(err));\\n }\\n return;\\n }\\n\\n if (this.allowUncaught) {\\n if (this.isPending()) {\\n done();\\n } else {\\n callFn(this.fn);\\n }\\n return;\\n }\\n\\n // sync or promise-returning\\n try {\\n if (this.isPending()) {\\n done();\\n } else {\\n callFn(this.fn);\\n }\\n } catch (err) {\\n emitted = true;\\n done(utils.getError(err));\\n }\\n\\n function callFn (fn) {\\n var result = fn.call(ctx);\\n if (result && typeof result.then === 'function') {\\n self.resetTimeout();\\n result\\n .then(function () {\\n done();\\n // Return null so libraries like bluebird do not warn about\\n // subsequently constructed Promises.\\n return null;\\n },\\n function (reason) {\\n done(reason || new Error('Promise rejected with no or falsy reason'));\\n });\\n } else {\\n if (self.asyncOnly) {\\n return done(new Error('--async-only option in use without declaring `done()` or returning a promise'));\\n }\\n\\n done();\\n }\\n }\\n\\n function callFnAsync (fn) {\\n var result = fn.call(ctx, function (err) {\\n if (err instanceof Error || toString.call(err) === '[object Error]') {\\n return done(err);\\n }\\n if (err) {\\n if (Object.prototype.toString.call(err) === '[object Object]') {\\n return done(new Error('done() invoked with non-Error: ' +\\n JSON.stringify(err)));\\n }\\n return done(new Error('done() invoked with non-Error: ' + err));\\n }\\n if (result && utils.isPromise(result)) {\\n return done(new Error('Resolution method is overspecified. Specify a callback *or* return a Promise; not both.'));\\n }\\n\\n done();\\n });\\n }\\n};\\n\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{\\\"./ms\\\":15,\\\"./pending\\\":16,\\\"./utils\\\":38,\\\"debug\\\":2,\\\"events\\\":3,\\\"json3\\\":69,\\\"lodash.create\\\":75}],34:[function(require,module,exports){\\n(function (process,global){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar EventEmitter = require('events').EventEmitter;\\nvar Pending = require('./pending');\\nvar utils = require('./utils');\\nvar inherits = utils.inherits;\\nvar debug = require('debug')('mocha:runner');\\nvar Runnable = require('./runnable');\\nvar filter = utils.filter;\\nvar indexOf = utils.indexOf;\\nvar some = utils.some;\\nvar keys = utils.keys;\\nvar stackFilter = utils.stackTraceFilter();\\nvar stringify = utils.stringify;\\nvar type = utils.type;\\nvar undefinedError = utils.undefinedError;\\nvar isArray = utils.isArray;\\n\\n/**\\n * Non-enumerable globals.\\n */\\n\\nvar globals = [\\n 'setTimeout',\\n 'clearTimeout',\\n 'setInterval',\\n 'clearInterval',\\n 'XMLHttpRequest',\\n 'Date',\\n 'setImmediate',\\n 'clearImmediate'\\n];\\n\\n/**\\n * Expose `Runner`.\\n */\\n\\nmodule.exports = Runner;\\n\\n/**\\n * Initialize a `Runner` for the given `suite`.\\n *\\n * Events:\\n *\\n * - `start` execution started\\n * - `end` execution complete\\n * - `suite` (suite) test suite execution started\\n * - `suite end` (suite) all tests (and sub-suites) have finished\\n * - `test` (test) test execution started\\n * - `test end` (test) test completed\\n * - `hook` (hook) hook execution started\\n * - `hook end` (hook) hook complete\\n * - `pass` (test) test passed\\n * - `fail` (test, err) test failed\\n * - `pending` (test) test pending\\n *\\n * @api public\\n * @param {Suite} suite Root suite\\n * @param {boolean} [delay] Whether or not to delay execution of root suite\\n * until ready.\\n */\\nfunction Runner (suite, delay) {\\n var self = this;\\n this._globals = [];\\n this._abort = false;\\n this._delay = delay;\\n this.suite = suite;\\n this.started = false;\\n this.total = suite.total();\\n this.failures = 0;\\n this.on('test end', function (test) {\\n self.checkGlobals(test);\\n });\\n this.on('hook end', function (hook) {\\n self.checkGlobals(hook);\\n });\\n this._defaultGrep = /.*/;\\n this.grep(this._defaultGrep);\\n this.globals(this.globalProps().concat(extraGlobals()));\\n}\\n\\n/**\\n * Wrapper for setImmediate, process.nextTick, or browser polyfill.\\n *\\n * @param {Function} fn\\n * @api private\\n */\\nRunner.immediately = global.setImmediate || process.nextTick;\\n\\n/**\\n * Inherit from `EventEmitter.prototype`.\\n */\\ninherits(Runner, EventEmitter);\\n\\n/**\\n * Run tests with full titles matching `re`. Updates runner.total\\n * with number of tests matched.\\n *\\n * @param {RegExp} re\\n * @param {Boolean} invert\\n * @return {Runner} for chaining\\n * @api public\\n * @param {RegExp} re\\n * @param {boolean} invert\\n * @return {Runner} Runner instance.\\n */\\nRunner.prototype.grep = function (re, invert) {\\n debug('grep %s', re);\\n this._grep = re;\\n this._invert = invert;\\n this.total = this.grepTotal(this.suite);\\n return this;\\n};\\n\\n/**\\n * Returns the number of tests matching the grep search for the\\n * given suite.\\n *\\n * @param {Suite} suite\\n * @return {Number}\\n * @api public\\n * @param {Suite} suite\\n * @return {number}\\n */\\nRunner.prototype.grepTotal = function (suite) {\\n var self = this;\\n var total = 0;\\n\\n suite.eachTest(function (test) {\\n var match = self._grep.test(test.fullTitle());\\n if (self._invert) {\\n match = !match;\\n }\\n if (match) {\\n total++;\\n }\\n });\\n\\n return total;\\n};\\n\\n/**\\n * Return a list of global properties.\\n *\\n * @return {Array}\\n * @api private\\n */\\nRunner.prototype.globalProps = function () {\\n var props = keys(global);\\n\\n // non-enumerables\\n for (var i = 0; i < globals.length; ++i) {\\n if (~indexOf(props, globals[i])) {\\n continue;\\n }\\n props.push(globals[i]);\\n }\\n\\n return props;\\n};\\n\\n/**\\n * Allow the given `arr` of globals.\\n *\\n * @param {Array} arr\\n * @return {Runner} for chaining\\n * @api public\\n * @param {Array} arr\\n * @return {Runner} Runner instance.\\n */\\nRunner.prototype.globals = function (arr) {\\n if (!arguments.length) {\\n return this._globals;\\n }\\n debug('globals %j', arr);\\n this._globals = this._globals.concat(arr);\\n return this;\\n};\\n\\n/**\\n * Check for global variable leaks.\\n *\\n * @api private\\n */\\nRunner.prototype.checkGlobals = function (test) {\\n if (this.ignoreLeaks) {\\n return;\\n }\\n var ok = this._globals;\\n\\n var globals = this.globalProps();\\n var leaks;\\n\\n if (test) {\\n ok = ok.concat(test._allowedGlobals || []);\\n }\\n\\n if (this.prevGlobalsLength === globals.length) {\\n return;\\n }\\n this.prevGlobalsLength = globals.length;\\n\\n leaks = filterLeaks(ok, globals);\\n this._globals = this._globals.concat(leaks);\\n\\n if (leaks.length > 1) {\\n this.fail(test, new Error('global leaks detected: ' + leaks.join(', ') + ''));\\n } else if (leaks.length) {\\n this.fail(test, new Error('global leak detected: ' + leaks[0]));\\n }\\n};\\n\\n/**\\n * Fail the given `test`.\\n *\\n * @api private\\n * @param {Test} test\\n * @param {Error} err\\n */\\nRunner.prototype.fail = function (test, err) {\\n if (test.isPending()) {\\n return;\\n }\\n\\n ++this.failures;\\n test.state = 'failed';\\n\\n if (!(err instanceof Error || err && typeof err.message === 'string')) {\\n err = new Error('the ' + type(err) + ' ' + stringify(err) + ' was thrown, throw an Error :)');\\n }\\n\\n try {\\n err.stack = (this.fullStackTrace || !err.stack)\\n ? err.stack\\n : stackFilter(err.stack);\\n } catch (ignored) {\\n // some environments do not take kindly to monkeying with the stack\\n }\\n\\n this.emit('fail', test, err);\\n};\\n\\n/**\\n * Fail the given `hook` with `err`.\\n *\\n * Hook failures work in the following pattern:\\n * - If bail, then exit\\n * - Failed `before` hook skips all tests in a suite and subsuites,\\n * but jumps to corresponding `after` hook\\n * - Failed `before each` hook skips remaining tests in a\\n * suite and jumps to corresponding `after each` hook,\\n * which is run only once\\n * - Failed `after` hook does not alter\\n * execution order\\n * - Failed `after each` hook skips remaining tests in a\\n * suite and subsuites, but executes other `after each`\\n * hooks\\n *\\n * @api private\\n * @param {Hook} hook\\n * @param {Error} err\\n */\\nRunner.prototype.failHook = function (hook, err) {\\n if (hook.ctx && hook.ctx.currentTest) {\\n hook.originalTitle = hook.originalTitle || hook.title;\\n hook.title = hook.originalTitle + ' for \\\"' + hook.ctx.currentTest.title + '\\\"';\\n }\\n\\n this.fail(hook, err);\\n if (this.suite.bail()) {\\n this.emit('end');\\n }\\n};\\n\\n/**\\n * Run hook `name` callbacks and then invoke `fn()`.\\n *\\n * @api private\\n * @param {string} name\\n * @param {Function} fn\\n */\\n\\nRunner.prototype.hook = function (name, fn) {\\n var suite = this.suite;\\n var hooks = suite['_' + name];\\n var self = this;\\n\\n function next (i) {\\n var hook = hooks[i];\\n if (!hook) {\\n return fn();\\n }\\n self.currentRunnable = hook;\\n\\n hook.ctx.currentTest = self.test;\\n\\n self.emit('hook', hook);\\n\\n if (!hook.listeners('error').length) {\\n hook.on('error', function (err) {\\n self.failHook(hook, err);\\n });\\n }\\n\\n hook.run(function (err) {\\n var testError = hook.error();\\n if (testError) {\\n self.fail(self.test, testError);\\n }\\n if (err) {\\n if (err instanceof Pending) {\\n if (name === 'beforeEach' || name === 'afterEach') {\\n self.test.pending = true;\\n } else {\\n utils.forEach(suite.tests, function (test) {\\n test.pending = true;\\n });\\n // a pending hook won't be executed twice.\\n hook.pending = true;\\n }\\n } else {\\n self.failHook(hook, err);\\n\\n // stop executing hooks, notify callee of hook err\\n return fn(err);\\n }\\n }\\n self.emit('hook end', hook);\\n delete hook.ctx.currentTest;\\n next(++i);\\n });\\n }\\n\\n Runner.immediately(function () {\\n next(0);\\n });\\n};\\n\\n/**\\n * Run hook `name` for the given array of `suites`\\n * in order, and callback `fn(err, errSuite)`.\\n *\\n * @api private\\n * @param {string} name\\n * @param {Array} suites\\n * @param {Function} fn\\n */\\nRunner.prototype.hooks = function (name, suites, fn) {\\n var self = this;\\n var orig = this.suite;\\n\\n function next (suite) {\\n self.suite = suite;\\n\\n if (!suite) {\\n self.suite = orig;\\n return fn();\\n }\\n\\n self.hook(name, function (err) {\\n if (err) {\\n var errSuite = self.suite;\\n self.suite = orig;\\n return fn(err, errSuite);\\n }\\n\\n next(suites.pop());\\n });\\n }\\n\\n next(suites.pop());\\n};\\n\\n/**\\n * Run hooks from the top level down.\\n *\\n * @param {String} name\\n * @param {Function} fn\\n * @api private\\n */\\nRunner.prototype.hookUp = function (name, fn) {\\n var suites = [this.suite].concat(this.parents()).reverse();\\n this.hooks(name, suites, fn);\\n};\\n\\n/**\\n * Run hooks from the bottom up.\\n *\\n * @param {String} name\\n * @param {Function} fn\\n * @api private\\n */\\nRunner.prototype.hookDown = function (name, fn) {\\n var suites = [this.suite].concat(this.parents());\\n this.hooks(name, suites, fn);\\n};\\n\\n/**\\n * Return an array of parent Suites from\\n * closest to furthest.\\n *\\n * @return {Array}\\n * @api private\\n */\\nRunner.prototype.parents = function () {\\n var suite = this.suite;\\n var suites = [];\\n while (suite.parent) {\\n suite = suite.parent;\\n suites.push(suite);\\n }\\n return suites;\\n};\\n\\n/**\\n * Run the current test and callback `fn(err)`.\\n *\\n * @param {Function} fn\\n * @api private\\n */\\nRunner.prototype.runTest = function (fn) {\\n var self = this;\\n var test = this.test;\\n\\n if (!test) {\\n return;\\n }\\n if (this.asyncOnly) {\\n test.asyncOnly = true;\\n }\\n test.on('error', function (err) {\\n self.fail(test, err);\\n });\\n if (this.allowUncaught) {\\n test.allowUncaught = true;\\n return test.run(fn);\\n }\\n try {\\n test.run(fn);\\n } catch (err) {\\n fn(err);\\n }\\n};\\n\\n/**\\n * Run tests in the given `suite` and invoke the callback `fn()` when complete.\\n *\\n * @api private\\n * @param {Suite} suite\\n * @param {Function} fn\\n */\\nRunner.prototype.runTests = function (suite, fn) {\\n var self = this;\\n var tests = suite.tests.slice();\\n var test;\\n\\n function hookErr (_, errSuite, after) {\\n // before/after Each hook for errSuite failed:\\n var orig = self.suite;\\n\\n // for failed 'after each' hook start from errSuite parent,\\n // otherwise start from errSuite itself\\n self.suite = after ? errSuite.parent : errSuite;\\n\\n if (self.suite) {\\n // call hookUp afterEach\\n self.hookUp('afterEach', function (err2, errSuite2) {\\n self.suite = orig;\\n // some hooks may fail even now\\n if (err2) {\\n return hookErr(err2, errSuite2, true);\\n }\\n // report error suite\\n fn(errSuite);\\n });\\n } else {\\n // there is no need calling other 'after each' hooks\\n self.suite = orig;\\n fn(errSuite);\\n }\\n }\\n\\n function next (err, errSuite) {\\n // if we bail after first err\\n if (self.failures && suite._bail) {\\n return fn();\\n }\\n\\n if (self._abort) {\\n return fn();\\n }\\n\\n if (err) {\\n return hookErr(err, errSuite, true);\\n }\\n\\n // next test\\n test = tests.shift();\\n\\n // all done\\n if (!test) {\\n return fn();\\n }\\n\\n // grep\\n var match = self._grep.test(test.fullTitle());\\n if (self._invert) {\\n match = !match;\\n }\\n if (!match) {\\n // Run immediately only if we have defined a grep. When we\\n // define a grep — It can cause maximum callstack error if\\n // the grep is doing a large recursive loop by neglecting\\n // all tests. The run immediately function also comes with\\n // a performance cost. So we don't want to run immediately\\n // if we run the whole test suite, because running the whole\\n // test suite don't do any immediate recursive loops. Thus,\\n // allowing a JS runtime to breathe.\\n if (self._grep !== self._defaultGrep) {\\n Runner.immediately(next);\\n } else {\\n next();\\n }\\n return;\\n }\\n\\n if (test.isPending()) {\\n self.emit('pending', test);\\n self.emit('test end', test);\\n return next();\\n }\\n\\n // execute test and hook(s)\\n self.emit('test', self.test = test);\\n self.hookDown('beforeEach', function (err, errSuite) {\\n if (test.isPending()) {\\n self.emit('pending', test);\\n self.emit('test end', test);\\n return next();\\n }\\n if (err) {\\n return hookErr(err, errSuite, false);\\n }\\n self.currentRunnable = self.test;\\n self.runTest(function (err) {\\n test = self.test;\\n if (err) {\\n var retry = test.currentRetry();\\n if (err instanceof Pending) {\\n test.pending = true;\\n self.emit('pending', test);\\n } else if (retry < test.retries()) {\\n var clonedTest = test.clone();\\n clonedTest.currentRetry(retry + 1);\\n tests.unshift(clonedTest);\\n\\n // Early return + hook trigger so that it doesn't\\n // increment the count wrong\\n return self.hookUp('afterEach', next);\\n } else {\\n self.fail(test, err);\\n }\\n self.emit('test end', test);\\n\\n if (err instanceof Pending) {\\n return next();\\n }\\n\\n return self.hookUp('afterEach', next);\\n }\\n\\n test.state = 'passed';\\n self.emit('pass', test);\\n self.emit('test end', test);\\n self.hookUp('afterEach', next);\\n });\\n });\\n }\\n\\n this.next = next;\\n this.hookErr = hookErr;\\n next();\\n};\\n\\n/**\\n * Run the given `suite` and invoke the callback `fn()` when complete.\\n *\\n * @api private\\n * @param {Suite} suite\\n * @param {Function} fn\\n */\\nRunner.prototype.runSuite = function (suite, fn) {\\n var i = 0;\\n var self = this;\\n var total = this.grepTotal(suite);\\n var afterAllHookCalled = false;\\n\\n debug('run suite %s', suite.fullTitle());\\n\\n if (!total || (self.failures && suite._bail)) {\\n return fn();\\n }\\n\\n this.emit('suite', this.suite = suite);\\n\\n function next (errSuite) {\\n if (errSuite) {\\n // current suite failed on a hook from errSuite\\n if (errSuite === suite) {\\n // if errSuite is current suite\\n // continue to the next sibling suite\\n return done();\\n }\\n // errSuite is among the parents of current suite\\n // stop execution of errSuite and all sub-suites\\n return done(errSuite);\\n }\\n\\n if (self._abort) {\\n return done();\\n }\\n\\n var curr = suite.suites[i++];\\n if (!curr) {\\n return done();\\n }\\n\\n // Avoid grep neglecting large number of tests causing a\\n // huge recursive loop and thus a maximum call stack error.\\n // See comment in `this.runTests()` for more information.\\n if (self._grep !== self._defaultGrep) {\\n Runner.immediately(function () {\\n self.runSuite(curr, next);\\n });\\n } else {\\n self.runSuite(curr, next);\\n }\\n }\\n\\n function done (errSuite) {\\n self.suite = suite;\\n self.nextSuite = next;\\n\\n if (afterAllHookCalled) {\\n fn(errSuite);\\n } else {\\n // mark that the afterAll block has been called once\\n // and so can be skipped if there is an error in it.\\n afterAllHookCalled = true;\\n\\n // remove reference to test\\n delete self.test;\\n\\n self.hook('afterAll', function () {\\n self.emit('suite end', suite);\\n fn(errSuite);\\n });\\n }\\n }\\n\\n this.nextSuite = next;\\n\\n this.hook('beforeAll', function (err) {\\n if (err) {\\n return done();\\n }\\n self.runTests(suite, next);\\n });\\n};\\n\\n/**\\n * Handle uncaught exceptions.\\n *\\n * @param {Error} err\\n * @api private\\n */\\nRunner.prototype.uncaught = function (err) {\\n if (err) {\\n debug('uncaught exception %s', err === (function () {\\n return this;\\n }.call(err)) ? (err.message || err) : err);\\n } else {\\n debug('uncaught undefined exception');\\n err = undefinedError();\\n }\\n err.uncaught = true;\\n\\n var runnable = this.currentRunnable;\\n\\n if (!runnable) {\\n runnable = new Runnable('Uncaught error outside test suite');\\n runnable.parent = this.suite;\\n\\n if (this.started) {\\n this.fail(runnable, err);\\n } else {\\n // Can't recover from this failure\\n this.emit('start');\\n this.fail(runnable, err);\\n this.emit('end');\\n }\\n\\n return;\\n }\\n\\n runnable.clearTimeout();\\n\\n // Ignore errors if complete or pending\\n if (runnable.state || runnable.isPending()) {\\n return;\\n }\\n this.fail(runnable, err);\\n\\n // recover from test\\n if (runnable.type === 'test') {\\n this.emit('test end', runnable);\\n this.hookUp('afterEach', this.next);\\n return;\\n }\\n\\n // recover from hooks\\n if (runnable.type === 'hook') {\\n var errSuite = this.suite;\\n // if hook failure is in afterEach block\\n if (runnable.fullTitle().indexOf('after each') > -1) {\\n return this.hookErr(err, errSuite, true);\\n }\\n // if hook failure is in beforeEach block\\n if (runnable.fullTitle().indexOf('before each') > -1) {\\n return this.hookErr(err, errSuite, false);\\n }\\n // if hook failure is in after or before blocks\\n return this.nextSuite(errSuite);\\n }\\n\\n // bail\\n this.emit('end');\\n};\\n\\n/**\\n * Cleans up the references to all the deferred functions\\n * (before/after/beforeEach/afterEach) and tests of a Suite.\\n * These must be deleted otherwise a memory leak can happen,\\n * as those functions may reference variables from closures,\\n * thus those variables can never be garbage collected as long\\n * as the deferred functions exist.\\n *\\n * @param {Suite} suite\\n */\\nfunction cleanSuiteReferences (suite) {\\n function cleanArrReferences (arr) {\\n for (var i = 0; i < arr.length; i++) {\\n delete arr[i].fn;\\n }\\n }\\n\\n if (isArray(suite._beforeAll)) {\\n cleanArrReferences(suite._beforeAll);\\n }\\n\\n if (isArray(suite._beforeEach)) {\\n cleanArrReferences(suite._beforeEach);\\n }\\n\\n if (isArray(suite._afterAll)) {\\n cleanArrReferences(suite._afterAll);\\n }\\n\\n if (isArray(suite._afterEach)) {\\n cleanArrReferences(suite._afterEach);\\n }\\n\\n for (var i = 0; i < suite.tests.length; i++) {\\n delete suite.tests[i].fn;\\n }\\n}\\n\\n/**\\n * Run the root suite and invoke `fn(failures)`\\n * on completion.\\n *\\n * @param {Function} fn\\n * @return {Runner} for chaining\\n * @api public\\n * @param {Function} fn\\n * @return {Runner} Runner instance.\\n */\\nRunner.prototype.run = function (fn) {\\n var self = this;\\n var rootSuite = this.suite;\\n\\n // If there is an `only` filter\\n if (this.hasOnly) {\\n filterOnly(rootSuite);\\n }\\n\\n fn = fn || function () {};\\n\\n function uncaught (err) {\\n self.uncaught(err);\\n }\\n\\n function start () {\\n self.started = true;\\n self.emit('start');\\n self.runSuite(rootSuite, function () {\\n debug('finished running');\\n self.emit('end');\\n });\\n }\\n\\n debug('start');\\n\\n // references cleanup to avoid memory leaks\\n this.on('suite end', cleanSuiteReferences);\\n\\n // callback\\n this.on('end', function () {\\n debug('end');\\n process.removeListener('uncaughtException', uncaught);\\n fn(self.failures);\\n });\\n\\n // uncaught exception\\n process.on('uncaughtException', uncaught);\\n\\n if (this._delay) {\\n // for reporters, I guess.\\n // might be nice to debounce some dots while we wait.\\n this.emit('waiting', rootSuite);\\n rootSuite.once('run', start);\\n } else {\\n start();\\n }\\n\\n return this;\\n};\\n\\n/**\\n * Cleanly abort execution.\\n *\\n * @api public\\n * @return {Runner} Runner instance.\\n */\\nRunner.prototype.abort = function () {\\n debug('aborting');\\n this._abort = true;\\n\\n return this;\\n};\\n\\n/**\\n * Filter suites based on `isOnly` logic.\\n *\\n * @param {Array} suite\\n * @returns {Boolean}\\n * @api private\\n */\\nfunction filterOnly (suite) {\\n if (suite._onlyTests.length) {\\n // If the suite contains `only` tests, run those and ignore any nested suites.\\n suite.tests = suite._onlyTests;\\n suite.suites = [];\\n } else {\\n // Otherwise, do not run any of the tests in this suite.\\n suite.tests = [];\\n utils.forEach(suite._onlySuites, function (onlySuite) {\\n // If there are other `only` tests/suites nested in the current `only` suite, then filter that `only` suite.\\n // Otherwise, all of the tests on this `only` suite should be run, so don't filter it.\\n if (hasOnly(onlySuite)) {\\n filterOnly(onlySuite);\\n }\\n });\\n // Run the `only` suites, as well as any other suites that have `only` tests/suites as descendants.\\n suite.suites = filter(suite.suites, function (childSuite) {\\n return indexOf(suite._onlySuites, childSuite) !== -1 || filterOnly(childSuite);\\n });\\n }\\n // Keep the suite only if there is something to run\\n return suite.tests.length || suite.suites.length;\\n}\\n\\n/**\\n * Determines whether a suite has an `only` test or suite as a descendant.\\n *\\n * @param {Array} suite\\n * @returns {Boolean}\\n * @api private\\n */\\nfunction hasOnly (suite) {\\n return suite._onlyTests.length || suite._onlySuites.length || some(suite.suites, hasOnly);\\n}\\n\\n/**\\n * Filter leaks with the given globals flagged as `ok`.\\n *\\n * @api private\\n * @param {Array} ok\\n * @param {Array} globals\\n * @return {Array}\\n */\\nfunction filterLeaks (ok, globals) {\\n return filter(globals, function (key) {\\n // Firefox and Chrome exposes iframes as index inside the window object\\n if (/^\\\\d+/.test(key)) {\\n return false;\\n }\\n\\n // in firefox\\n // if runner runs in an iframe, this iframe's window.getInterface method\\n // not init at first it is assigned in some seconds\\n if (global.navigator && (/^getInterface/).test(key)) {\\n return false;\\n }\\n\\n // an iframe could be approached by window[iframeIndex]\\n // in ie6,7,8 and opera, iframeIndex is enumerable, this could cause leak\\n if (global.navigator && (/^\\\\d+/).test(key)) {\\n return false;\\n }\\n\\n // Opera and IE expose global variables for HTML element IDs (issue #243)\\n if (/^mocha-/.test(key)) {\\n return false;\\n }\\n\\n var matched = filter(ok, function (ok) {\\n if (~ok.indexOf('*')) {\\n return key.indexOf(ok.split('*')[0]) === 0;\\n }\\n return key === ok;\\n });\\n return !matched.length && (!global.navigator || key !== 'onerror');\\n });\\n}\\n\\n/**\\n * Array of globals dependent on the environment.\\n *\\n * @return {Array}\\n * @api private\\n */\\nfunction extraGlobals () {\\n if (typeof process === 'object' && typeof process.version === 'string') {\\n var parts = process.version.split('.');\\n var nodeVersion = utils.reduce(parts, function (a, v) {\\n return a << 8 | v;\\n });\\n\\n // 'errno' was renamed to process._errno in v0.9.11.\\n\\n if (nodeVersion < 0x00090B) {\\n return ['errno'];\\n }\\n }\\n\\n return [];\\n}\\n\\n}).call(this,require('_process'),typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{\\\"./pending\\\":16,\\\"./runnable\\\":33,\\\"./utils\\\":38,\\\"_process\\\":82,\\\"debug\\\":2,\\\"events\\\":3}],35:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar EventEmitter = require('events').EventEmitter;\\nvar Hook = require('./hook');\\nvar utils = require('./utils');\\nvar inherits = utils.inherits;\\nvar debug = require('debug')('mocha:suite');\\nvar milliseconds = require('./ms');\\n\\n/**\\n * Expose `Suite`.\\n */\\n\\nexports = module.exports = Suite;\\n\\n/**\\n * Create a new `Suite` with the given `title` and parent `Suite`. When a suite\\n * with the same title is already present, that suite is returned to provide\\n * nicer reporter and more flexible meta-testing.\\n *\\n * @api public\\n * @param {Suite} parent\\n * @param {string} title\\n * @return {Suite}\\n */\\nexports.create = function (parent, title) {\\n var suite = new Suite(title, parent.ctx);\\n suite.parent = parent;\\n title = suite.fullTitle();\\n parent.addSuite(suite);\\n return suite;\\n};\\n\\n/**\\n * Initialize a new `Suite` with the given `title` and `ctx`.\\n *\\n * @api private\\n * @param {string} title\\n * @param {Context} parentContext\\n */\\nfunction Suite (title, parentContext) {\\n if (!utils.isString(title)) {\\n throw new Error('Suite `title` should be a \\\"string\\\" but \\\"' + typeof title + '\\\" was given instead.');\\n }\\n this.title = title;\\n function Context () {}\\n Context.prototype = parentContext;\\n this.ctx = new Context();\\n this.suites = [];\\n this.tests = [];\\n this.pending = false;\\n this._beforeEach = [];\\n this._beforeAll = [];\\n this._afterEach = [];\\n this._afterAll = [];\\n this.root = !title;\\n this._timeout = 2000;\\n this._enableTimeouts = true;\\n this._slow = 75;\\n this._bail = false;\\n this._retries = -1;\\n this._onlyTests = [];\\n this._onlySuites = [];\\n this.delayed = false;\\n}\\n\\n/**\\n * Inherit from `EventEmitter.prototype`.\\n */\\ninherits(Suite, EventEmitter);\\n\\n/**\\n * Return a clone of this `Suite`.\\n *\\n * @api private\\n * @return {Suite}\\n */\\nSuite.prototype.clone = function () {\\n var suite = new Suite(this.title);\\n debug('clone');\\n suite.ctx = this.ctx;\\n suite.timeout(this.timeout());\\n suite.retries(this.retries());\\n suite.enableTimeouts(this.enableTimeouts());\\n suite.slow(this.slow());\\n suite.bail(this.bail());\\n return suite;\\n};\\n\\n/**\\n * Set timeout `ms` or short-hand such as \\\"2s\\\".\\n *\\n * @api private\\n * @param {number|string} ms\\n * @return {Suite|number} for chaining\\n */\\nSuite.prototype.timeout = function (ms) {\\n if (!arguments.length) {\\n return this._timeout;\\n }\\n if (ms.toString() === '0') {\\n this._enableTimeouts = false;\\n }\\n if (typeof ms === 'string') {\\n ms = milliseconds(ms);\\n }\\n debug('timeout %d', ms);\\n this._timeout = parseInt(ms, 10);\\n return this;\\n};\\n\\n/**\\n * Set number of times to retry a failed test.\\n *\\n * @api private\\n * @param {number|string} n\\n * @return {Suite|number} for chaining\\n */\\nSuite.prototype.retries = function (n) {\\n if (!arguments.length) {\\n return this._retries;\\n }\\n debug('retries %d', n);\\n this._retries = parseInt(n, 10) || 0;\\n return this;\\n};\\n\\n/**\\n * Set timeout to `enabled`.\\n *\\n * @api private\\n * @param {boolean} enabled\\n * @return {Suite|boolean} self or enabled\\n */\\nSuite.prototype.enableTimeouts = function (enabled) {\\n if (!arguments.length) {\\n return this._enableTimeouts;\\n }\\n debug('enableTimeouts %s', enabled);\\n this._enableTimeouts = enabled;\\n return this;\\n};\\n\\n/**\\n * Set slow `ms` or short-hand such as \\\"2s\\\".\\n *\\n * @api private\\n * @param {number|string} ms\\n * @return {Suite|number} for chaining\\n */\\nSuite.prototype.slow = function (ms) {\\n if (!arguments.length) {\\n return this._slow;\\n }\\n if (typeof ms === 'string') {\\n ms = milliseconds(ms);\\n }\\n debug('slow %d', ms);\\n this._slow = ms;\\n return this;\\n};\\n\\n/**\\n * Sets whether to bail after first error.\\n *\\n * @api private\\n * @param {boolean} bail\\n * @return {Suite|number} for chaining\\n */\\nSuite.prototype.bail = function (bail) {\\n if (!arguments.length) {\\n return this._bail;\\n }\\n debug('bail %s', bail);\\n this._bail = bail;\\n return this;\\n};\\n\\n/**\\n * Check if this suite or its parent suite is marked as pending.\\n *\\n * @api private\\n */\\nSuite.prototype.isPending = function () {\\n return this.pending || (this.parent && this.parent.isPending());\\n};\\n\\n/**\\n * Run `fn(test[, done])` before running tests.\\n *\\n * @api private\\n * @param {string} title\\n * @param {Function} fn\\n * @return {Suite} for chaining\\n */\\nSuite.prototype.beforeAll = function (title, fn) {\\n if (this.isPending()) {\\n return this;\\n }\\n if (typeof title === 'function') {\\n fn = title;\\n title = fn.name;\\n }\\n title = '\\\"before all\\\" hook' + (title ? ': ' + title : '');\\n\\n var hook = new Hook(title, fn);\\n hook.parent = this;\\n hook.timeout(this.timeout());\\n hook.retries(this.retries());\\n hook.enableTimeouts(this.enableTimeouts());\\n hook.slow(this.slow());\\n hook.ctx = this.ctx;\\n this._beforeAll.push(hook);\\n this.emit('beforeAll', hook);\\n return this;\\n};\\n\\n/**\\n * Run `fn(test[, done])` after running tests.\\n *\\n * @api private\\n * @param {string} title\\n * @param {Function} fn\\n * @return {Suite} for chaining\\n */\\nSuite.prototype.afterAll = function (title, fn) {\\n if (this.isPending()) {\\n return this;\\n }\\n if (typeof title === 'function') {\\n fn = title;\\n title = fn.name;\\n }\\n title = '\\\"after all\\\" hook' + (title ? ': ' + title : '');\\n\\n var hook = new Hook(title, fn);\\n hook.parent = this;\\n hook.timeout(this.timeout());\\n hook.retries(this.retries());\\n hook.enableTimeouts(this.enableTimeouts());\\n hook.slow(this.slow());\\n hook.ctx = this.ctx;\\n this._afterAll.push(hook);\\n this.emit('afterAll', hook);\\n return this;\\n};\\n\\n/**\\n * Run `fn(test[, done])` before each test case.\\n *\\n * @api private\\n * @param {string} title\\n * @param {Function} fn\\n * @return {Suite} for chaining\\n */\\nSuite.prototype.beforeEach = function (title, fn) {\\n if (this.isPending()) {\\n return this;\\n }\\n if (typeof title === 'function') {\\n fn = title;\\n title = fn.name;\\n }\\n title = '\\\"before each\\\" hook' + (title ? ': ' + title : '');\\n\\n var hook = new Hook(title, fn);\\n hook.parent = this;\\n hook.timeout(this.timeout());\\n hook.retries(this.retries());\\n hook.enableTimeouts(this.enableTimeouts());\\n hook.slow(this.slow());\\n hook.ctx = this.ctx;\\n this._beforeEach.push(hook);\\n this.emit('beforeEach', hook);\\n return this;\\n};\\n\\n/**\\n * Run `fn(test[, done])` after each test case.\\n *\\n * @api private\\n * @param {string} title\\n * @param {Function} fn\\n * @return {Suite} for chaining\\n */\\nSuite.prototype.afterEach = function (title, fn) {\\n if (this.isPending()) {\\n return this;\\n }\\n if (typeof title === 'function') {\\n fn = title;\\n title = fn.name;\\n }\\n title = '\\\"after each\\\" hook' + (title ? ': ' + title : '');\\n\\n var hook = new Hook(title, fn);\\n hook.parent = this;\\n hook.timeout(this.timeout());\\n hook.retries(this.retries());\\n hook.enableTimeouts(this.enableTimeouts());\\n hook.slow(this.slow());\\n hook.ctx = this.ctx;\\n this._afterEach.push(hook);\\n this.emit('afterEach', hook);\\n return this;\\n};\\n\\n/**\\n * Add a test `suite`.\\n *\\n * @api private\\n * @param {Suite} suite\\n * @return {Suite} for chaining\\n */\\nSuite.prototype.addSuite = function (suite) {\\n suite.parent = this;\\n suite.timeout(this.timeout());\\n suite.retries(this.retries());\\n suite.enableTimeouts(this.enableTimeouts());\\n suite.slow(this.slow());\\n suite.bail(this.bail());\\n this.suites.push(suite);\\n this.emit('suite', suite);\\n return this;\\n};\\n\\n/**\\n * Add a `test` to this suite.\\n *\\n * @api private\\n * @param {Test} test\\n * @return {Suite} for chaining\\n */\\nSuite.prototype.addTest = function (test) {\\n test.parent = this;\\n test.timeout(this.timeout());\\n test.retries(this.retries());\\n test.enableTimeouts(this.enableTimeouts());\\n test.slow(this.slow());\\n test.ctx = this.ctx;\\n this.tests.push(test);\\n this.emit('test', test);\\n return this;\\n};\\n\\n/**\\n * Return the full title generated by recursively concatenating the parent's\\n * full title.\\n *\\n * @api public\\n * @return {string}\\n */\\nSuite.prototype.fullTitle = function () {\\n if (this.parent) {\\n var full = this.parent.fullTitle();\\n if (full) {\\n return full + ' ' + this.title;\\n }\\n }\\n return this.title;\\n};\\n\\n/**\\n * Return the total number of tests.\\n *\\n * @api public\\n * @return {number}\\n */\\nSuite.prototype.total = function () {\\n return utils.reduce(this.suites, function (sum, suite) {\\n return sum + suite.total();\\n }, 0) + this.tests.length;\\n};\\n\\n/**\\n * Iterates through each suite recursively to find all tests. Applies a\\n * function in the format `fn(test)`.\\n *\\n * @api private\\n * @param {Function} fn\\n * @return {Suite}\\n */\\nSuite.prototype.eachTest = function (fn) {\\n utils.forEach(this.tests, fn);\\n utils.forEach(this.suites, function (suite) {\\n suite.eachTest(fn);\\n });\\n return this;\\n};\\n\\n/**\\n * This will run the root suite if we happen to be running in delayed mode.\\n */\\nSuite.prototype.run = function run () {\\n if (this.root) {\\n this.emit('run');\\n }\\n};\\n\\n},{\\\"./hook\\\":7,\\\"./ms\\\":15,\\\"./utils\\\":38,\\\"debug\\\":2,\\\"events\\\":3}],36:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar Runnable = require('./runnable');\\nvar create = require('lodash.create');\\nvar isString = require('./utils').isString;\\n\\n/**\\n * Expose `Test`.\\n */\\n\\nmodule.exports = Test;\\n\\n/**\\n * Initialize a new `Test` with the given `title` and callback `fn`.\\n *\\n * @api private\\n * @param {String} title\\n * @param {Function} fn\\n */\\nfunction Test (title, fn) {\\n if (!isString(title)) {\\n throw new Error('Test `title` should be a \\\"string\\\" but \\\"' + typeof title + '\\\" was given instead.');\\n }\\n Runnable.call(this, title, fn);\\n this.pending = !fn;\\n this.type = 'test';\\n}\\n\\n/**\\n * Inherit from `Runnable.prototype`.\\n */\\nTest.prototype = create(Runnable.prototype, {\\n constructor: Test\\n});\\n\\nTest.prototype.clone = function () {\\n var test = new Test(this.title, this.fn);\\n test.timeout(this.timeout());\\n test.slow(this.slow());\\n test.enableTimeouts(this.enableTimeouts());\\n test.retries(this.retries());\\n test.currentRetry(this.currentRetry());\\n test.globals(this.globals());\\n test.parent = this.parent;\\n test.file = this.file;\\n test.ctx = this.ctx;\\n return test;\\n};\\n\\n},{\\\"./runnable\\\":33,\\\"./utils\\\":38,\\\"lodash.create\\\":75}],37:[function(require,module,exports){\\n'use strict';\\n\\n/**\\n * Pad a `number` with a ten's place zero.\\n *\\n * @param {number} number\\n * @return {string}\\n */\\nfunction pad(number) {\\n var n = number.toString();\\n return n.length === 1 ? '0' + n : n;\\n}\\n\\n/**\\n * Turn a `date` into an ISO string.\\n *\\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString\\n *\\n * @param {Date} date\\n * @return {string}\\n */\\nfunction toISOString(date) {\\n return date.getUTCFullYear()\\n + '-' + pad(date.getUTCMonth() + 1)\\n + '-' + pad(date.getUTCDate())\\n + 'T' + pad(date.getUTCHours())\\n + ':' + pad(date.getUTCMinutes())\\n + ':' + pad(date.getUTCSeconds())\\n + '.' + String((date.getUTCMilliseconds()/1000).toFixed(3)).slice(2, 5)\\n + 'Z';\\n}\\n\\n/*\\n * Exports.\\n */\\n\\nmodule.exports = toISOString;\\n\\n},{}],38:[function(require,module,exports){\\n(function (process,Buffer){\\n'use strict';\\n\\n/* eslint-env browser */\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar JSON = require('json3');\\nvar basename = require('path').basename;\\nvar debug = require('debug')('mocha:watch');\\nvar exists = require('fs').existsSync || require('path').existsSync;\\nvar glob = require('glob');\\nvar path = require('path');\\nvar join = path.join;\\nvar readdirSync = require('fs').readdirSync;\\nvar statSync = require('fs').statSync;\\nvar watchFile = require('fs').watchFile;\\nvar lstatSync = require('fs').lstatSync;\\nvar toISOString = require('./to-iso-string');\\n\\n/**\\n * Ignored directories.\\n */\\n\\nvar ignore = ['node_modules', '.git'];\\n\\nexports.inherits = require('util').inherits;\\n\\n/**\\n * Escape special characters in the given string of html.\\n *\\n * @api private\\n * @param {string} html\\n * @return {string}\\n */\\nexports.escape = function (html) {\\n return String(html)\\n .replace(/&/g, '&amp;')\\n .replace(/\\\"/g, '&quot;')\\n .replace(/</g, '&lt;')\\n .replace(/>/g, '&gt;');\\n};\\n\\n/**\\n * Array#forEach (<=IE8)\\n *\\n * @api private\\n * @param {Array} arr\\n * @param {Function} fn\\n * @param {Object} scope\\n */\\nexports.forEach = function (arr, fn, scope) {\\n for (var i = 0, l = arr.length; i < l; i++) {\\n fn.call(scope, arr[i], i);\\n }\\n};\\n\\n/**\\n * Test if the given obj is type of string.\\n *\\n * @api private\\n * @param {Object} obj\\n * @return {boolean}\\n */\\nexports.isString = function (obj) {\\n return typeof obj === 'string';\\n};\\n\\n/**\\n * Array#map (<=IE8)\\n *\\n * @api private\\n * @param {Array} arr\\n * @param {Function} fn\\n * @param {Object} scope\\n * @return {Array}\\n */\\nexports.map = function (arr, fn, scope) {\\n var result = [];\\n for (var i = 0, l = arr.length; i < l; i++) {\\n result.push(fn.call(scope, arr[i], i, arr));\\n }\\n return result;\\n};\\n\\n/**\\n * Array#indexOf (<=IE8)\\n *\\n * @api private\\n * @param {Array} arr\\n * @param {Object} obj to find index of\\n * @param {number} start\\n * @return {number}\\n */\\nvar indexOf = exports.indexOf = function (arr, obj, start) {\\n for (var i = start || 0, l = arr.length; i < l; i++) {\\n if (arr[i] === obj) {\\n return i;\\n }\\n }\\n return -1;\\n};\\n\\n/**\\n * Array#reduce (<=IE8)\\n *\\n * @api private\\n * @param {Array} arr\\n * @param {Function} fn\\n * @param {Object} val Initial value.\\n * @return {*}\\n */\\nvar reduce = exports.reduce = function (arr, fn, val) {\\n var rval = val;\\n\\n for (var i = 0, l = arr.length; i < l; i++) {\\n rval = fn(rval, arr[i], i, arr);\\n }\\n\\n return rval;\\n};\\n\\n/**\\n * Array#filter (<=IE8)\\n *\\n * @api private\\n * @param {Array} arr\\n * @param {Function} fn\\n * @return {Array}\\n */\\nexports.filter = function (arr, fn) {\\n var ret = [];\\n\\n for (var i = 0, l = arr.length; i < l; i++) {\\n var val = arr[i];\\n if (fn(val, i, arr)) {\\n ret.push(val);\\n }\\n }\\n\\n return ret;\\n};\\n\\n/**\\n * Array#some (<=IE8)\\n *\\n * @api private\\n * @param {Array} arr\\n * @param {Function} fn\\n * @return {Array}\\n */\\nexports.some = function (arr, fn) {\\n for (var i = 0, l = arr.length; i < l; i++) {\\n if (fn(arr[i])) {\\n return true;\\n }\\n }\\n return false;\\n};\\n\\n/**\\n * Object.keys (<=IE8)\\n *\\n * @api private\\n * @param {Object} obj\\n * @return {Array} keys\\n */\\nexports.keys = typeof Object.keys === 'function' ? Object.keys : function (obj) {\\n var keys = [];\\n var has = Object.prototype.hasOwnProperty; // for `window` on <=IE8\\n\\n for (var key in obj) {\\n if (has.call(obj, key)) {\\n keys.push(key);\\n }\\n }\\n\\n return keys;\\n};\\n\\n/**\\n * Watch the given `files` for changes\\n * and invoke `fn(file)` on modification.\\n *\\n * @api private\\n * @param {Array} files\\n * @param {Function} fn\\n */\\nexports.watch = function (files, fn) {\\n var options = { interval: 100 };\\n files.forEach(function (file) {\\n debug('file %s', file);\\n watchFile(file, options, function (curr, prev) {\\n if (prev.mtime < curr.mtime) {\\n fn(file);\\n }\\n });\\n });\\n};\\n\\n/**\\n * Array.isArray (<=IE8)\\n *\\n * @api private\\n * @param {Object} obj\\n * @return {Boolean}\\n */\\nvar isArray = typeof Array.isArray === 'function' ? Array.isArray : function (obj) {\\n return Object.prototype.toString.call(obj) === '[object Array]';\\n};\\n\\nexports.isArray = isArray;\\n\\n/**\\n * Buffer.prototype.toJSON polyfill.\\n *\\n * @type {Function}\\n */\\nif (typeof Buffer !== 'undefined' && Buffer.prototype) {\\n Buffer.prototype.toJSON = Buffer.prototype.toJSON || function () {\\n return Array.prototype.slice.call(this, 0);\\n };\\n}\\n\\n/**\\n * Ignored files.\\n *\\n * @api private\\n * @param {string} path\\n * @return {boolean}\\n */\\nfunction ignored (path) {\\n return !~ignore.indexOf(path);\\n}\\n\\n/**\\n * Lookup files in the given `dir`.\\n *\\n * @api private\\n * @param {string} dir\\n * @param {string[]} [ext=['.js']]\\n * @param {Array} [ret=[]]\\n * @return {Array}\\n */\\nexports.files = function (dir, ext, ret) {\\n ret = ret || [];\\n ext = ext || ['js'];\\n\\n var re = new RegExp('\\\\\\\\.(' + ext.join('|') + ')$');\\n\\n readdirSync(dir)\\n .filter(ignored)\\n .forEach(function (path) {\\n path = join(dir, path);\\n if (lstatSync(path).isDirectory()) {\\n exports.files(path, ext, ret);\\n } else if (path.match(re)) {\\n ret.push(path);\\n }\\n });\\n\\n return ret;\\n};\\n\\n/**\\n * Compute a slug from the given `str`.\\n *\\n * @api private\\n * @param {string} str\\n * @return {string}\\n */\\nexports.slug = function (str) {\\n return str\\n .toLowerCase()\\n .replace(/ +/g, '-')\\n .replace(/[^-\\\\w]/g, '');\\n};\\n\\n/**\\n * Strip the function definition from `str`, and re-indent for pre whitespace.\\n *\\n * @param {string} str\\n * @return {string}\\n */\\nexports.clean = function (str) {\\n str = str\\n .replace(/\\\\r\\\\n?|[\\\\n\\\\u2028\\\\u2029]/g, '\\\\n').replace(/^\\\\uFEFF/, '')\\n // (traditional)-> space/name parameters body (lambda)-> parameters body multi-statement/single keep body content\\n .replace(/^function(?:\\\\s*|\\\\s+[^(]*)\\\\([^)]*\\\\)\\\\s*\\\\{((?:.|\\\\n)*?)\\\\s*\\\\}$|^\\\\([^)]*\\\\)\\\\s*=>\\\\s*(?:\\\\{((?:.|\\\\n)*?)\\\\s*\\\\}|((?:.|\\\\n)*))$/, '$1$2$3');\\n\\n var spaces = str.match(/^\\\\n?( *)/)[1].length;\\n var tabs = str.match(/^\\\\n?(\\\\t*)/)[1].length;\\n var re = new RegExp('^\\\\n?' + (tabs ? '\\\\t' : ' ') + '{' + (tabs || spaces) + '}', 'gm');\\n\\n str = str.replace(re, '');\\n\\n return exports.trim(str);\\n};\\n\\n/**\\n * Trim the given `str`.\\n *\\n * @api private\\n * @param {string} str\\n * @return {string}\\n */\\nexports.trim = function (str) {\\n return str.replace(/^\\\\s+|\\\\s+$/g, '');\\n};\\n\\n/**\\n * Parse the given `qs`.\\n *\\n * @api private\\n * @param {string} qs\\n * @return {Object}\\n */\\nexports.parseQuery = function (qs) {\\n return reduce(qs.replace('?', '').split('&'), function (obj, pair) {\\n var i = pair.indexOf('=');\\n var key = pair.slice(0, i);\\n var val = pair.slice(++i);\\n\\n // Due to how the URLSearchParams API treats spaces\\n obj[key] = decodeURIComponent(val.replace(/\\\\+/g, '%20'));\\n\\n return obj;\\n }, {});\\n};\\n\\n/**\\n * Highlight the given string of `js`.\\n *\\n * @api private\\n * @param {string} js\\n * @return {string}\\n */\\nfunction highlight (js) {\\n return js\\n .replace(/</g, '&lt;')\\n .replace(/>/g, '&gt;')\\n .replace(/\\\\/\\\\/(.*)/gm, '<span class=\\\"comment\\\">//$1</span>')\\n .replace(/('.*?')/gm, '<span class=\\\"string\\\">$1</span>')\\n .replace(/(\\\\d+\\\\.\\\\d+)/gm, '<span class=\\\"number\\\">$1</span>')\\n .replace(/(\\\\d+)/gm, '<span class=\\\"number\\\">$1</span>')\\n .replace(/\\\\bnew[ \\\\t]+(\\\\w+)/gm, '<span class=\\\"keyword\\\">new</span> <span class=\\\"init\\\">$1</span>')\\n .replace(/\\\\b(function|new|throw|return|var|if|else)\\\\b/gm, '<span class=\\\"keyword\\\">$1</span>');\\n}\\n\\n/**\\n * Highlight the contents of tag `name`.\\n *\\n * @api private\\n * @param {string} name\\n */\\nexports.highlightTags = function (name) {\\n var code = document.getElementById('mocha').getElementsByTagName(name);\\n for (var i = 0, len = code.length; i < len; ++i) {\\n code[i].innerHTML = highlight(code[i].innerHTML);\\n }\\n};\\n\\n/**\\n * If a value could have properties, and has none, this function is called,\\n * which returns a string representation of the empty value.\\n *\\n * Functions w/ no properties return `'[Function]'`\\n * Arrays w/ length === 0 return `'[]'`\\n * Objects w/ no properties return `'{}'`\\n * All else: return result of `value.toString()`\\n *\\n * @api private\\n * @param {*} value The value to inspect.\\n * @param {string} typeHint The type of the value\\n * @returns {string}\\n */\\nfunction emptyRepresentation (value, typeHint) {\\n switch (typeHint) {\\n case 'function':\\n return '[Function]';\\n case 'object':\\n return '{}';\\n case 'array':\\n return '[]';\\n default:\\n return value.toString();\\n }\\n}\\n\\n/**\\n * Takes some variable and asks `Object.prototype.toString()` what it thinks it\\n * is.\\n *\\n * @api private\\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString\\n * @param {*} value The value to test.\\n * @returns {string} Computed type\\n * @example\\n * type({}) // 'object'\\n * type([]) // 'array'\\n * type(1) // 'number'\\n * type(false) // 'boolean'\\n * type(Infinity) // 'number'\\n * type(null) // 'null'\\n * type(new Date()) // 'date'\\n * type(/foo/) // 'regexp'\\n * type('type') // 'string'\\n * type(global) // 'global'\\n * type(new String('foo') // 'object'\\n */\\nvar type = exports.type = function type (value) {\\n if (value === undefined) {\\n return 'undefined';\\n } else if (value === null) {\\n return 'null';\\n } else if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {\\n return 'buffer';\\n }\\n return Object.prototype.toString.call(value)\\n .replace(/^\\\\[.+\\\\s(.+?)]$/, '$1')\\n .toLowerCase();\\n};\\n\\n/**\\n * Stringify `value`. Different behavior depending on type of value:\\n *\\n * - If `value` is undefined or null, return `'[undefined]'` or `'[null]'`, respectively.\\n * - If `value` is not an object, function or array, return result of `value.toString()` wrapped in double-quotes.\\n * - If `value` is an *empty* object, function, or array, return result of function\\n * {@link emptyRepresentation}.\\n * - If `value` has properties, call {@link exports.canonicalize} on it, then return result of\\n * JSON.stringify().\\n *\\n * @api private\\n * @see exports.type\\n * @param {*} value\\n * @return {string}\\n */\\nexports.stringify = function (value) {\\n var typeHint = type(value);\\n\\n if (!~indexOf(['object', 'array', 'function'], typeHint)) {\\n if (typeHint === 'buffer') {\\n var json = value.toJSON();\\n // Based on the toJSON result\\n return jsonStringify(json.data && json.type ? json.data : json, 2)\\n .replace(/,(\\\\n|$)/g, '$1');\\n }\\n\\n // IE7/IE8 has a bizarre String constructor; needs to be coerced\\n // into an array and back to obj.\\n if (typeHint === 'string' && typeof value === 'object') {\\n value = reduce(value.split(''), function (acc, char, idx) {\\n acc[idx] = char;\\n return acc;\\n }, {});\\n typeHint = 'object';\\n } else {\\n return jsonStringify(value);\\n }\\n }\\n\\n for (var prop in value) {\\n if (Object.prototype.hasOwnProperty.call(value, prop)) {\\n return jsonStringify(exports.canonicalize(value, null, typeHint), 2).replace(/,(\\\\n|$)/g, '$1');\\n }\\n }\\n\\n return emptyRepresentation(value, typeHint);\\n};\\n\\n/**\\n * like JSON.stringify but more sense.\\n *\\n * @api private\\n * @param {Object} object\\n * @param {number=} spaces\\n * @param {number=} depth\\n * @returns {*}\\n */\\nfunction jsonStringify (object, spaces, depth) {\\n if (typeof spaces === 'undefined') {\\n // primitive types\\n return _stringify(object);\\n }\\n\\n depth = depth || 1;\\n var space = spaces * depth;\\n var str = isArray(object) ? '[' : '{';\\n var end = isArray(object) ? ']' : '}';\\n var length = typeof object.length === 'number' ? object.length : exports.keys(object).length;\\n // `.repeat()` polyfill\\n function repeat (s, n) {\\n return new Array(n).join(s);\\n }\\n\\n function _stringify (val) {\\n switch (type(val)) {\\n case 'null':\\n case 'undefined':\\n val = '[' + val + ']';\\n break;\\n case 'array':\\n case 'object':\\n val = jsonStringify(val, spaces, depth + 1);\\n break;\\n case 'boolean':\\n case 'regexp':\\n case 'symbol':\\n case 'number':\\n val = val === 0 && (1 / val) === -Infinity // `-0`\\n ? '-0'\\n : val.toString();\\n break;\\n case 'date':\\n var sDate;\\n if (isNaN(val.getTime())) { // Invalid date\\n sDate = val.toString();\\n } else {\\n sDate = val.toISOString ? val.toISOString() : toISOString(val);\\n }\\n val = '[Date: ' + sDate + ']';\\n break;\\n case 'buffer':\\n var json = val.toJSON();\\n // Based on the toJSON result\\n json = json.data && json.type ? json.data : json;\\n val = '[Buffer: ' + jsonStringify(json, 2, depth + 1) + ']';\\n break;\\n default:\\n val = (val === '[Function]' || val === '[Circular]')\\n ? val\\n : JSON.stringify(val); // string\\n }\\n return val;\\n }\\n\\n for (var i in object) {\\n if (!Object.prototype.hasOwnProperty.call(object, i)) {\\n continue; // not my business\\n }\\n --length;\\n str += '\\\\n ' + repeat(' ', space) +\\n (isArray(object) ? '' : '\\\"' + i + '\\\": ') + // key\\n _stringify(object[i]) + // value\\n (length ? ',' : ''); // comma\\n }\\n\\n return str +\\n // [], {}\\n (str.length !== 1 ? '\\\\n' + repeat(' ', --space) + end : end);\\n}\\n\\n/**\\n * Test if a value is a buffer.\\n *\\n * @api private\\n * @param {*} value The value to test.\\n * @return {boolean} True if `value` is a buffer, otherwise false\\n */\\nexports.isBuffer = function (value) {\\n return typeof Buffer !== 'undefined' && Buffer.isBuffer(value);\\n};\\n\\n/**\\n * Return a new Thing that has the keys in sorted order. Recursive.\\n *\\n * If the Thing...\\n * - has already been seen, return string `'[Circular]'`\\n * - is `undefined`, return string `'[undefined]'`\\n * - is `null`, return value `null`\\n * - is some other primitive, return the value\\n * - is not a primitive or an `Array`, `Object`, or `Function`, return the value of the Thing's `toString()` method\\n * - is a non-empty `Array`, `Object`, or `Function`, return the result of calling this function again.\\n * - is an empty `Array`, `Object`, or `Function`, return the result of calling `emptyRepresentation()`\\n *\\n * @api private\\n * @see {@link exports.stringify}\\n * @param {*} value Thing to inspect. May or may not have properties.\\n * @param {Array} [stack=[]] Stack of seen values\\n * @param {string} [typeHint] Type hint\\n * @return {(Object|Array|Function|string|undefined)}\\n */\\nexports.canonicalize = function canonicalize (value, stack, typeHint) {\\n var canonicalizedObj;\\n /* eslint-disable no-unused-vars */\\n var prop;\\n /* eslint-enable no-unused-vars */\\n typeHint = typeHint || type(value);\\n function withStack (value, fn) {\\n stack.push(value);\\n fn();\\n stack.pop();\\n }\\n\\n stack = stack || [];\\n\\n if (indexOf(stack, value) !== -1) {\\n return '[Circular]';\\n }\\n\\n switch (typeHint) {\\n case 'undefined':\\n case 'buffer':\\n case 'null':\\n canonicalizedObj = value;\\n break;\\n case 'array':\\n withStack(value, function () {\\n canonicalizedObj = exports.map(value, function (item) {\\n return exports.canonicalize(item, stack);\\n });\\n });\\n break;\\n case 'function':\\n /* eslint-disable guard-for-in */\\n for (prop in value) {\\n canonicalizedObj = {};\\n break;\\n }\\n /* eslint-enable guard-for-in */\\n if (!canonicalizedObj) {\\n canonicalizedObj = emptyRepresentation(value, typeHint);\\n break;\\n }\\n /* falls through */\\n case 'object':\\n canonicalizedObj = canonicalizedObj || {};\\n withStack(value, function () {\\n exports.forEach(exports.keys(value).sort(), function (key) {\\n canonicalizedObj[key] = exports.canonicalize(value[key], stack);\\n });\\n });\\n break;\\n case 'date':\\n case 'number':\\n case 'regexp':\\n case 'boolean':\\n case 'symbol':\\n canonicalizedObj = value;\\n break;\\n default:\\n canonicalizedObj = value + '';\\n }\\n\\n return canonicalizedObj;\\n};\\n\\n/**\\n * Lookup file names at the given `path`.\\n *\\n * @api public\\n * @param {string} path Base path to start searching from.\\n * @param {string[]} extensions File extensions to look for.\\n * @param {boolean} recursive Whether or not to recurse into subdirectories.\\n * @return {string[]} An array of paths.\\n */\\nexports.lookupFiles = function lookupFiles (path, extensions, recursive) {\\n var files = [];\\n var re = new RegExp('\\\\\\\\.(' + extensions.join('|') + ')$');\\n\\n if (!exists(path)) {\\n if (exists(path + '.js')) {\\n path += '.js';\\n } else {\\n files = glob.sync(path);\\n if (!files.length) {\\n throw new Error(\\\"cannot resolve path (or pattern) '\\\" + path + \\\"'\\\");\\n }\\n return files;\\n }\\n }\\n\\n try {\\n var stat = statSync(path);\\n if (stat.isFile()) {\\n return path;\\n }\\n } catch (err) {\\n // ignore error\\n return;\\n }\\n\\n readdirSync(path).forEach(function (file) {\\n file = join(path, file);\\n try {\\n var stat = statSync(file);\\n if (stat.isDirectory()) {\\n if (recursive) {\\n files = files.concat(lookupFiles(file, extensions, recursive));\\n }\\n return;\\n }\\n } catch (err) {\\n // ignore error\\n return;\\n }\\n if (!stat.isFile() || !re.test(file) || basename(file)[0] === '.') {\\n return;\\n }\\n files.push(file);\\n });\\n\\n return files;\\n};\\n\\n/**\\n * Generate an undefined error with a message warning the user.\\n *\\n * @return {Error}\\n */\\n\\nexports.undefinedError = function () {\\n return new Error('Caught undefined error, did you throw without specifying what?');\\n};\\n\\n/**\\n * Generate an undefined error if `err` is not defined.\\n *\\n * @param {Error} err\\n * @return {Error}\\n */\\n\\nexports.getError = function (err) {\\n return err || exports.undefinedError();\\n};\\n\\n/**\\n * @summary\\n * This Filter based on `mocha-clean` module.(see: `github.com/rstacruz/mocha-clean`)\\n * @description\\n * When invoking this function you get a filter function that get the Error.stack as an input,\\n * and return a prettify output.\\n * (i.e: strip Mocha and internal node functions from stack trace).\\n * @returns {Function}\\n */\\nexports.stackTraceFilter = function () {\\n // TODO: Replace with `process.browser`\\n var is = typeof document === 'undefined' ? { node: true } : { browser: true };\\n var slash = path.sep;\\n var cwd;\\n if (is.node) {\\n cwd = process.cwd() + slash;\\n } else {\\n cwd = (typeof location === 'undefined'\\n ? window.location\\n : location).href.replace(/\\\\/[^/]*$/, '/');\\n slash = '/';\\n }\\n\\n function isMochaInternal (line) {\\n return (~line.indexOf('node_modules' + slash + 'mocha' + slash)) ||\\n (~line.indexOf('node_modules' + slash + 'mocha.js')) ||\\n (~line.indexOf('bower_components' + slash + 'mocha.js')) ||\\n (~line.indexOf(slash + 'mocha.js'));\\n }\\n\\n function isNodeInternal (line) {\\n return (~line.indexOf('(timers.js:')) ||\\n (~line.indexOf('(events.js:')) ||\\n (~line.indexOf('(node.js:')) ||\\n (~line.indexOf('(module.js:')) ||\\n (~line.indexOf('GeneratorFunctionPrototype.next (native)')) ||\\n false;\\n }\\n\\n return function (stack) {\\n stack = stack.split('\\\\n');\\n\\n stack = reduce(stack, function (list, line) {\\n if (isMochaInternal(line)) {\\n return list;\\n }\\n\\n if (is.node && isNodeInternal(line)) {\\n return list;\\n }\\n\\n // Clean up cwd(absolute)\\n if (/\\\\(?.+:\\\\d+:\\\\d+\\\\)?$/.test(line)) {\\n line = line.replace(cwd, '');\\n }\\n\\n list.push(line);\\n return list;\\n }, []);\\n\\n return stack.join('\\\\n');\\n };\\n};\\n\\n/**\\n * Crude, but effective.\\n * @api\\n * @param {*} value\\n * @returns {boolean} Whether or not `value` is a Promise\\n */\\nexports.isPromise = function isPromise (value) {\\n return typeof value === 'object' && typeof value.then === 'function';\\n};\\n\\n/**\\n * It's a noop.\\n * @api\\n */\\nexports.noop = function () {};\\n\\n}).call(this,require('_process'),require(\\\"buffer\\\").Buffer)\\n},{\\\"./to-iso-string\\\":37,\\\"_process\\\":82,\\\"buffer\\\":44,\\\"debug\\\":2,\\\"fs\\\":42,\\\"glob\\\":42,\\\"json3\\\":69,\\\"path\\\":42,\\\"util\\\":99}],39:[function(require,module,exports){\\n'use strict'\\n\\nexports.byteLength = byteLength\\nexports.toByteArray = toByteArray\\nexports.fromByteArray = fromByteArray\\n\\nvar lookup = []\\nvar revLookup = []\\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\\n\\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\\nfor (var i = 0, len = code.length; i < len; ++i) {\\n lookup[i] = code[i]\\n revLookup[code.charCodeAt(i)] = i\\n}\\n\\nrevLookup['-'.charCodeAt(0)] = 62\\nrevLookup['_'.charCodeAt(0)] = 63\\n\\nfunction placeHoldersCount (b64) {\\n var len = b64.length\\n if (len % 4 > 0) {\\n throw new Error('Invalid string. Length must be a multiple of 4')\\n }\\n\\n // the number of equal signs (place holders)\\n // if there are two placeholders, than the two characters before it\\n // represent one byte\\n // if there is only one, then the three characters before it represent 2 bytes\\n // this is just a cheap hack to not do indexOf twice\\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\\n}\\n\\nfunction byteLength (b64) {\\n // base64 is 4/3 + up to two characters of the original data\\n return b64.length * 3 / 4 - placeHoldersCount(b64)\\n}\\n\\nfunction toByteArray (b64) {\\n var i, j, l, tmp, placeHolders, arr\\n var len = b64.length\\n placeHolders = placeHoldersCount(b64)\\n\\n arr = new Arr(len * 3 / 4 - placeHolders)\\n\\n // if there are placeholders, only get up to the last complete 4 chars\\n l = placeHolders > 0 ? len - 4 : len\\n\\n var L = 0\\n\\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\\n arr[L++] = (tmp >> 16) & 0xFF\\n arr[L++] = (tmp >> 8) & 0xFF\\n arr[L++] = tmp & 0xFF\\n }\\n\\n if (placeHolders === 2) {\\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\\n arr[L++] = tmp & 0xFF\\n } else if (placeHolders === 1) {\\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\\n arr[L++] = (tmp >> 8) & 0xFF\\n arr[L++] = tmp & 0xFF\\n }\\n\\n return arr\\n}\\n\\nfunction tripletToBase64 (num) {\\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\\n}\\n\\nfunction encodeChunk (uint8, start, end) {\\n var tmp\\n var output = []\\n for (var i = start; i < end; i += 3) {\\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\\n output.push(tripletToBase64(tmp))\\n }\\n return output.join('')\\n}\\n\\nfunction fromByteArray (uint8) {\\n var tmp\\n var len = uint8.length\\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\\n var output = ''\\n var parts = []\\n var maxChunkLength = 16383 // must be multiple of 3\\n\\n // go through the array every three bytes, we'll deal with trailing stuff later\\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\\n }\\n\\n // pad the end with zeros, but make sure to not forget the extra bytes\\n if (extraBytes === 1) {\\n tmp = uint8[len - 1]\\n output += lookup[tmp >> 2]\\n output += lookup[(tmp << 4) & 0x3F]\\n output += '=='\\n } else if (extraBytes === 2) {\\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\\n output += lookup[tmp >> 10]\\n output += lookup[(tmp >> 4) & 0x3F]\\n output += lookup[(tmp << 2) & 0x3F]\\n output += '='\\n }\\n\\n parts.push(output)\\n\\n return parts.join('')\\n}\\n\\n},{}],40:[function(require,module,exports){\\n\\n},{}],41:[function(require,module,exports){\\n(function (process){\\nvar WritableStream = require('stream').Writable\\nvar inherits = require('util').inherits\\n\\nmodule.exports = BrowserStdout\\n\\n\\ninherits(BrowserStdout, WritableStream)\\n\\nfunction BrowserStdout(opts) {\\n if (!(this instanceof BrowserStdout)) return new BrowserStdout(opts)\\n\\n opts = opts || {}\\n WritableStream.call(this, opts)\\n this.label = (opts.label !== undefined) ? opts.label : 'stdout'\\n}\\n\\nBrowserStdout.prototype._write = function(chunks, encoding, cb) {\\n var output = chunks.toString ? chunks.toString() : chunks\\n if (this.label === false) {\\n console.log(output)\\n } else {\\n console.log(this.label+':', output)\\n }\\n process.nextTick(cb)\\n}\\n\\n}).call(this,require('_process'))\\n},{\\\"_process\\\":82,\\\"stream\\\":94,\\\"util\\\":99}],42:[function(require,module,exports){\\narguments[4][40][0].apply(exports,arguments)\\n},{\\\"dup\\\":40}],43:[function(require,module,exports){\\n(function (global){\\n'use strict';\\n\\nvar buffer = require('buffer');\\nvar Buffer = buffer.Buffer;\\nvar SlowBuffer = buffer.SlowBuffer;\\nvar MAX_LEN = buffer.kMaxLength || 2147483647;\\nexports.alloc = function alloc(size, fill, encoding) {\\n if (typeof Buffer.alloc === 'function') {\\n return Buffer.alloc(size, fill, encoding);\\n }\\n if (typeof encoding === 'number') {\\n throw new TypeError('encoding must not be number');\\n }\\n if (typeof size !== 'number') {\\n throw new TypeError('size must be a number');\\n }\\n if (size > MAX_LEN) {\\n throw new RangeError('size is too large');\\n }\\n var enc = encoding;\\n var _fill = fill;\\n if (_fill === undefined) {\\n enc = undefined;\\n _fill = 0;\\n }\\n var buf = new Buffer(size);\\n if (typeof _fill === 'string') {\\n var fillBuf = new Buffer(_fill, enc);\\n var flen = fillBuf.length;\\n var i = -1;\\n while (++i < size) {\\n buf[i] = fillBuf[i % flen];\\n }\\n } else {\\n buf.fill(_fill);\\n }\\n return buf;\\n}\\nexports.allocUnsafe = function allocUnsafe(size) {\\n if (typeof Buffer.allocUnsafe === 'function') {\\n return Buffer.allocUnsafe(size);\\n }\\n if (typeof size !== 'number') {\\n throw new TypeError('size must be a number');\\n }\\n if (size > MAX_LEN) {\\n throw new RangeError('size is too large');\\n }\\n return new Buffer(size);\\n}\\nexports.from = function from(value, encodingOrOffset, length) {\\n if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {\\n return Buffer.from(value, encodingOrOffset, length);\\n }\\n if (typeof value === 'number') {\\n throw new TypeError('\\\"value\\\" argument must not be a number');\\n }\\n if (typeof value === 'string') {\\n return new Buffer(value, encodingOrOffset);\\n }\\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\\n var offset = encodingOrOffset;\\n if (arguments.length === 1) {\\n return new Buffer(value);\\n }\\n if (typeof offset === 'undefined') {\\n offset = 0;\\n }\\n var len = length;\\n if (typeof len === 'undefined') {\\n len = value.byteLength - offset;\\n }\\n if (offset >= value.byteLength) {\\n throw new RangeError('\\\\'offset\\\\' is out of bounds');\\n }\\n if (len > value.byteLength - offset) {\\n throw new RangeError('\\\\'length\\\\' is out of bounds');\\n }\\n return new Buffer(value.slice(offset, offset + len));\\n }\\n if (Buffer.isBuffer(value)) {\\n var out = new Buffer(value.length);\\n value.copy(out, 0, 0, value.length);\\n return out;\\n }\\n if (value) {\\n if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {\\n return new Buffer(value);\\n }\\n if (value.type === 'Buffer' && Array.isArray(value.data)) {\\n return new Buffer(value.data);\\n }\\n }\\n\\n throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');\\n}\\nexports.allocUnsafeSlow = function allocUnsafeSlow(size) {\\n if (typeof Buffer.allocUnsafeSlow === 'function') {\\n return Buffer.allocUnsafeSlow(size);\\n }\\n if (typeof size !== 'number') {\\n throw new TypeError('size must be a number');\\n }\\n if (size >= MAX_LEN) {\\n throw new RangeError('size is too large');\\n }\\n return new SlowBuffer(size);\\n}\\n\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{\\\"buffer\\\":44}],44:[function(require,module,exports){\\n(function (global){\\n/*!\\n * The buffer module from node.js, for the browser.\\n *\\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\\n * @license MIT\\n */\\n/* eslint-disable no-proto */\\n\\n'use strict'\\n\\nvar base64 = require('base64-js')\\nvar ieee754 = require('ieee754')\\nvar isArray = require('isarray')\\n\\nexports.Buffer = Buffer\\nexports.SlowBuffer = SlowBuffer\\nexports.INSPECT_MAX_BYTES = 50\\n\\n/**\\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\\n * === true Use Uint8Array implementation (fastest)\\n * === false Use Object implementation (most compatible, even IE6)\\n *\\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\\n * Opera 11.6+, iOS 4.2+.\\n *\\n * Due to various browser bugs, sometimes the Object implementation will be used even\\n * when the browser supports typed arrays.\\n *\\n * Note:\\n *\\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\\n *\\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\\n *\\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\\n * incorrect length in some situations.\\n\\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\\n * get the Object implementation, which is slower but behaves correctly.\\n */\\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\\n ? global.TYPED_ARRAY_SUPPORT\\n : typedArraySupport()\\n\\n/*\\n * Export kMaxLength after typed array support is determined.\\n */\\nexports.kMaxLength = kMaxLength()\\n\\nfunction typedArraySupport () {\\n try {\\n var arr = new Uint8Array(1)\\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\\n return arr.foo() === 42 && // typed array instances can be augmented\\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\\n } catch (e) {\\n return false\\n }\\n}\\n\\nfunction kMaxLength () {\\n return Buffer.TYPED_ARRAY_SUPPORT\\n ? 0x7fffffff\\n : 0x3fffffff\\n}\\n\\nfunction createBuffer (that, length) {\\n if (kMaxLength() < length) {\\n throw new RangeError('Invalid typed array length')\\n }\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n // Return an augmented `Uint8Array` instance, for best performance\\n that = new Uint8Array(length)\\n that.__proto__ = Buffer.prototype\\n } else {\\n // Fallback: Return an object instance of the Buffer class\\n if (that === null) {\\n that = new Buffer(length)\\n }\\n that.length = length\\n }\\n\\n return that\\n}\\n\\n/**\\n * The Buffer constructor returns instances of `Uint8Array` that have their\\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\\n * returns a single octet.\\n *\\n * The `Uint8Array` prototype remains unmodified.\\n */\\n\\nfunction Buffer (arg, encodingOrOffset, length) {\\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\\n return new Buffer(arg, encodingOrOffset, length)\\n }\\n\\n // Common case.\\n if (typeof arg === 'number') {\\n if (typeof encodingOrOffset === 'string') {\\n throw new Error(\\n 'If encoding is specified then the first argument must be a string'\\n )\\n }\\n return allocUnsafe(this, arg)\\n }\\n return from(this, arg, encodingOrOffset, length)\\n}\\n\\nBuffer.poolSize = 8192 // not used by this implementation\\n\\n// TODO: Legacy, not needed anymore. Remove in next major version.\\nBuffer._augment = function (arr) {\\n arr.__proto__ = Buffer.prototype\\n return arr\\n}\\n\\nfunction from (that, value, encodingOrOffset, length) {\\n if (typeof value === 'number') {\\n throw new TypeError('\\\"value\\\" argument must not be a number')\\n }\\n\\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\\n return fromArrayBuffer(that, value, encodingOrOffset, length)\\n }\\n\\n if (typeof value === 'string') {\\n return fromString(that, value, encodingOrOffset)\\n }\\n\\n return fromObject(that, value)\\n}\\n\\n/**\\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\\n * if value is a number.\\n * Buffer.from(str[, encoding])\\n * Buffer.from(array)\\n * Buffer.from(buffer)\\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\\n **/\\nBuffer.from = function (value, encodingOrOffset, length) {\\n return from(null, value, encodingOrOffset, length)\\n}\\n\\nif (Buffer.TYPED_ARRAY_SUPPORT) {\\n Buffer.prototype.__proto__ = Uint8Array.prototype\\n Buffer.__proto__ = Uint8Array\\n if (typeof Symbol !== 'undefined' && Symbol.species &&\\n Buffer[Symbol.species] === Buffer) {\\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\\n Object.defineProperty(Buffer, Symbol.species, {\\n value: null,\\n configurable: true\\n })\\n }\\n}\\n\\nfunction assertSize (size) {\\n if (typeof size !== 'number') {\\n throw new TypeError('\\\"size\\\" argument must be a number')\\n } else if (size < 0) {\\n throw new RangeError('\\\"size\\\" argument must not be negative')\\n }\\n}\\n\\nfunction alloc (that, size, fill, encoding) {\\n assertSize(size)\\n if (size <= 0) {\\n return createBuffer(that, size)\\n }\\n if (fill !== undefined) {\\n // Only pay attention to encoding if it's a string. This\\n // prevents accidentally sending in a number that would\\n // be interpretted as a start offset.\\n return typeof encoding === 'string'\\n ? createBuffer(that, size).fill(fill, encoding)\\n : createBuffer(that, size).fill(fill)\\n }\\n return createBuffer(that, size)\\n}\\n\\n/**\\n * Creates a new filled Buffer instance.\\n * alloc(size[, fill[, encoding]])\\n **/\\nBuffer.alloc = function (size, fill, encoding) {\\n return alloc(null, size, fill, encoding)\\n}\\n\\nfunction allocUnsafe (that, size) {\\n assertSize(size)\\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\\n for (var i = 0; i < size; ++i) {\\n that[i] = 0\\n }\\n }\\n return that\\n}\\n\\n/**\\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\\n * */\\nBuffer.allocUnsafe = function (size) {\\n return allocUnsafe(null, size)\\n}\\n/**\\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\\n */\\nBuffer.allocUnsafeSlow = function (size) {\\n return allocUnsafe(null, size)\\n}\\n\\nfunction fromString (that, string, encoding) {\\n if (typeof encoding !== 'string' || encoding === '') {\\n encoding = 'utf8'\\n }\\n\\n if (!Buffer.isEncoding(encoding)) {\\n throw new TypeError('\\\"encoding\\\" must be a valid string encoding')\\n }\\n\\n var length = byteLength(string, encoding) | 0\\n that = createBuffer(that, length)\\n\\n var actual = that.write(string, encoding)\\n\\n if (actual !== length) {\\n // Writing a hex string, for example, that contains invalid characters will\\n // cause everything after the first invalid character to be ignored. (e.g.\\n // 'abxxcd' will be treated as 'ab')\\n that = that.slice(0, actual)\\n }\\n\\n return that\\n}\\n\\nfunction fromArrayLike (that, array) {\\n var length = array.length < 0 ? 0 : checked(array.length) | 0\\n that = createBuffer(that, length)\\n for (var i = 0; i < length; i += 1) {\\n that[i] = array[i] & 255\\n }\\n return that\\n}\\n\\nfunction fromArrayBuffer (that, array, byteOffset, length) {\\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\\n\\n if (byteOffset < 0 || array.byteLength < byteOffset) {\\n throw new RangeError('\\\\'offset\\\\' is out of bounds')\\n }\\n\\n if (array.byteLength < byteOffset + (length || 0)) {\\n throw new RangeError('\\\\'length\\\\' is out of bounds')\\n }\\n\\n if (byteOffset === undefined && length === undefined) {\\n array = new Uint8Array(array)\\n } else if (length === undefined) {\\n array = new Uint8Array(array, byteOffset)\\n } else {\\n array = new Uint8Array(array, byteOffset, length)\\n }\\n\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n // Return an augmented `Uint8Array` instance, for best performance\\n that = array\\n that.__proto__ = Buffer.prototype\\n } else {\\n // Fallback: Return an object instance of the Buffer class\\n that = fromArrayLike(that, array)\\n }\\n return that\\n}\\n\\nfunction fromObject (that, obj) {\\n if (Buffer.isBuffer(obj)) {\\n var len = checked(obj.length) | 0\\n that = createBuffer(that, len)\\n\\n if (that.length === 0) {\\n return that\\n }\\n\\n obj.copy(that, 0, 0, len)\\n return that\\n }\\n\\n if (obj) {\\n if ((typeof ArrayBuffer !== 'undefined' &&\\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\\n return createBuffer(that, 0)\\n }\\n return fromArrayLike(that, obj)\\n }\\n\\n if (obj.type === 'Buffer' && isArray(obj.data)) {\\n return fromArrayLike(that, obj.data)\\n }\\n }\\n\\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\\n}\\n\\nfunction checked (length) {\\n // Note: cannot use `length < kMaxLength()` here because that fails when\\n // length is NaN (which is otherwise coerced to zero.)\\n if (length >= kMaxLength()) {\\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\\n }\\n return length | 0\\n}\\n\\nfunction SlowBuffer (length) {\\n if (+length != length) { // eslint-disable-line eqeqeq\\n length = 0\\n }\\n return Buffer.alloc(+length)\\n}\\n\\nBuffer.isBuffer = function isBuffer (b) {\\n return !!(b != null && b._isBuffer)\\n}\\n\\nBuffer.compare = function compare (a, b) {\\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\\n throw new TypeError('Arguments must be Buffers')\\n }\\n\\n if (a === b) return 0\\n\\n var x = a.length\\n var y = b.length\\n\\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\\n if (a[i] !== b[i]) {\\n x = a[i]\\n y = b[i]\\n break\\n }\\n }\\n\\n if (x < y) return -1\\n if (y < x) return 1\\n return 0\\n}\\n\\nBuffer.isEncoding = function isEncoding (encoding) {\\n switch (String(encoding).toLowerCase()) {\\n case 'hex':\\n case 'utf8':\\n case 'utf-8':\\n case 'ascii':\\n case 'latin1':\\n case 'binary':\\n case 'base64':\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return true\\n default:\\n return false\\n }\\n}\\n\\nBuffer.concat = function concat (list, length) {\\n if (!isArray(list)) {\\n throw new TypeError('\\\"list\\\" argument must be an Array of Buffers')\\n }\\n\\n if (list.length === 0) {\\n return Buffer.alloc(0)\\n }\\n\\n var i\\n if (length === undefined) {\\n length = 0\\n for (i = 0; i < list.length; ++i) {\\n length += list[i].length\\n }\\n }\\n\\n var buffer = Buffer.allocUnsafe(length)\\n var pos = 0\\n for (i = 0; i < list.length; ++i) {\\n var buf = list[i]\\n if (!Buffer.isBuffer(buf)) {\\n throw new TypeError('\\\"list\\\" argument must be an Array of Buffers')\\n }\\n buf.copy(buffer, pos)\\n pos += buf.length\\n }\\n return buffer\\n}\\n\\nfunction byteLength (string, encoding) {\\n if (Buffer.isBuffer(string)) {\\n return string.length\\n }\\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\\n return string.byteLength\\n }\\n if (typeof string !== 'string') {\\n string = '' + string\\n }\\n\\n var len = string.length\\n if (len === 0) return 0\\n\\n // Use a for loop to avoid recursion\\n var loweredCase = false\\n for (;;) {\\n switch (encoding) {\\n case 'ascii':\\n case 'latin1':\\n case 'binary':\\n return len\\n case 'utf8':\\n case 'utf-8':\\n case undefined:\\n return utf8ToBytes(string).length\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return len * 2\\n case 'hex':\\n return len >>> 1\\n case 'base64':\\n return base64ToBytes(string).length\\n default:\\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\\n encoding = ('' + encoding).toLowerCase()\\n loweredCase = true\\n }\\n }\\n}\\nBuffer.byteLength = byteLength\\n\\nfunction slowToString (encoding, start, end) {\\n var loweredCase = false\\n\\n // No need to verify that \\\"this.length <= MAX_UINT32\\\" since it's a read-only\\n // property of a typed array.\\n\\n // This behaves neither like String nor Uint8Array in that we set start/end\\n // to their upper/lower bounds if the value passed is out of range.\\n // undefined is handled specially as per ECMA-262 6th Edition,\\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\\n if (start === undefined || start < 0) {\\n start = 0\\n }\\n // Return early if start > this.length. Done here to prevent potential uint32\\n // coercion fail below.\\n if (start > this.length) {\\n return ''\\n }\\n\\n if (end === undefined || end > this.length) {\\n end = this.length\\n }\\n\\n if (end <= 0) {\\n return ''\\n }\\n\\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\\n end >>>= 0\\n start >>>= 0\\n\\n if (end <= start) {\\n return ''\\n }\\n\\n if (!encoding) encoding = 'utf8'\\n\\n while (true) {\\n switch (encoding) {\\n case 'hex':\\n return hexSlice(this, start, end)\\n\\n case 'utf8':\\n case 'utf-8':\\n return utf8Slice(this, start, end)\\n\\n case 'ascii':\\n return asciiSlice(this, start, end)\\n\\n case 'latin1':\\n case 'binary':\\n return latin1Slice(this, start, end)\\n\\n case 'base64':\\n return base64Slice(this, start, end)\\n\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return utf16leSlice(this, start, end)\\n\\n default:\\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\\n encoding = (encoding + '').toLowerCase()\\n loweredCase = true\\n }\\n }\\n}\\n\\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\\n// Buffer instances.\\nBuffer.prototype._isBuffer = true\\n\\nfunction swap (b, n, m) {\\n var i = b[n]\\n b[n] = b[m]\\n b[m] = i\\n}\\n\\nBuffer.prototype.swap16 = function swap16 () {\\n var len = this.length\\n if (len % 2 !== 0) {\\n throw new RangeError('Buffer size must be a multiple of 16-bits')\\n }\\n for (var i = 0; i < len; i += 2) {\\n swap(this, i, i + 1)\\n }\\n return this\\n}\\n\\nBuffer.prototype.swap32 = function swap32 () {\\n var len = this.length\\n if (len % 4 !== 0) {\\n throw new RangeError('Buffer size must be a multiple of 32-bits')\\n }\\n for (var i = 0; i < len; i += 4) {\\n swap(this, i, i + 3)\\n swap(this, i + 1, i + 2)\\n }\\n return this\\n}\\n\\nBuffer.prototype.swap64 = function swap64 () {\\n var len = this.length\\n if (len % 8 !== 0) {\\n throw new RangeError('Buffer size must be a multiple of 64-bits')\\n }\\n for (var i = 0; i < len; i += 8) {\\n swap(this, i, i + 7)\\n swap(this, i + 1, i + 6)\\n swap(this, i + 2, i + 5)\\n swap(this, i + 3, i + 4)\\n }\\n return this\\n}\\n\\nBuffer.prototype.toString = function toString () {\\n var length = this.length | 0\\n if (length === 0) return ''\\n if (arguments.length === 0) return utf8Slice(this, 0, length)\\n return slowToString.apply(this, arguments)\\n}\\n\\nBuffer.prototype.equals = function equals (b) {\\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\\n if (this === b) return true\\n return Buffer.compare(this, b) === 0\\n}\\n\\nBuffer.prototype.inspect = function inspect () {\\n var str = ''\\n var max = exports.INSPECT_MAX_BYTES\\n if (this.length > 0) {\\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\\n if (this.length > max) str += ' ... '\\n }\\n return '<Buffer ' + str + '>'\\n}\\n\\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\\n if (!Buffer.isBuffer(target)) {\\n throw new TypeError('Argument must be a Buffer')\\n }\\n\\n if (start === undefined) {\\n start = 0\\n }\\n if (end === undefined) {\\n end = target ? target.length : 0\\n }\\n if (thisStart === undefined) {\\n thisStart = 0\\n }\\n if (thisEnd === undefined) {\\n thisEnd = this.length\\n }\\n\\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\\n throw new RangeError('out of range index')\\n }\\n\\n if (thisStart >= thisEnd && start >= end) {\\n return 0\\n }\\n if (thisStart >= thisEnd) {\\n return -1\\n }\\n if (start >= end) {\\n return 1\\n }\\n\\n start >>>= 0\\n end >>>= 0\\n thisStart >>>= 0\\n thisEnd >>>= 0\\n\\n if (this === target) return 0\\n\\n var x = thisEnd - thisStart\\n var y = end - start\\n var len = Math.min(x, y)\\n\\n var thisCopy = this.slice(thisStart, thisEnd)\\n var targetCopy = target.slice(start, end)\\n\\n for (var i = 0; i < len; ++i) {\\n if (thisCopy[i] !== targetCopy[i]) {\\n x = thisCopy[i]\\n y = targetCopy[i]\\n break\\n }\\n }\\n\\n if (x < y) return -1\\n if (y < x) return 1\\n return 0\\n}\\n\\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\\n//\\n// Arguments:\\n// - buffer - a Buffer to search\\n// - val - a string, Buffer, or number\\n// - byteOffset - an index into `buffer`; will be clamped to an int32\\n// - encoding - an optional encoding, relevant is val is a string\\n// - dir - true for indexOf, false for lastIndexOf\\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\\n // Empty buffer means no match\\n if (buffer.length === 0) return -1\\n\\n // Normalize byteOffset\\n if (typeof byteOffset === 'string') {\\n encoding = byteOffset\\n byteOffset = 0\\n } else if (byteOffset > 0x7fffffff) {\\n byteOffset = 0x7fffffff\\n } else if (byteOffset < -0x80000000) {\\n byteOffset = -0x80000000\\n }\\n byteOffset = +byteOffset // Coerce to Number.\\n if (isNaN(byteOffset)) {\\n // byteOffset: it it's undefined, null, NaN, \\\"foo\\\", etc, search whole buffer\\n byteOffset = dir ? 0 : (buffer.length - 1)\\n }\\n\\n // Normalize byteOffset: negative offsets start from the end of the buffer\\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\\n if (byteOffset >= buffer.length) {\\n if (dir) return -1\\n else byteOffset = buffer.length - 1\\n } else if (byteOffset < 0) {\\n if (dir) byteOffset = 0\\n else return -1\\n }\\n\\n // Normalize val\\n if (typeof val === 'string') {\\n val = Buffer.from(val, encoding)\\n }\\n\\n // Finally, search either indexOf (if dir is true) or lastIndexOf\\n if (Buffer.isBuffer(val)) {\\n // Special case: looking for empty string/buffer always fails\\n if (val.length === 0) {\\n return -1\\n }\\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\\n } else if (typeof val === 'number') {\\n val = val & 0xFF // Search for a byte value [0-255]\\n if (Buffer.TYPED_ARRAY_SUPPORT &&\\n typeof Uint8Array.prototype.indexOf === 'function') {\\n if (dir) {\\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\\n } else {\\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\\n }\\n }\\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\\n }\\n\\n throw new TypeError('val must be string, number or Buffer')\\n}\\n\\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\\n var indexSize = 1\\n var arrLength = arr.length\\n var valLength = val.length\\n\\n if (encoding !== undefined) {\\n encoding = String(encoding).toLowerCase()\\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\\n encoding === 'utf16le' || encoding === 'utf-16le') {\\n if (arr.length < 2 || val.length < 2) {\\n return -1\\n }\\n indexSize = 2\\n arrLength /= 2\\n valLength /= 2\\n byteOffset /= 2\\n }\\n }\\n\\n function read (buf, i) {\\n if (indexSize === 1) {\\n return buf[i]\\n } else {\\n return buf.readUInt16BE(i * indexSize)\\n }\\n }\\n\\n var i\\n if (dir) {\\n var foundIndex = -1\\n for (i = byteOffset; i < arrLength; i++) {\\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\\n if (foundIndex === -1) foundIndex = i\\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\\n } else {\\n if (foundIndex !== -1) i -= i - foundIndex\\n foundIndex = -1\\n }\\n }\\n } else {\\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\\n for (i = byteOffset; i >= 0; i--) {\\n var found = true\\n for (var j = 0; j < valLength; j++) {\\n if (read(arr, i + j) !== read(val, j)) {\\n found = false\\n break\\n }\\n }\\n if (found) return i\\n }\\n }\\n\\n return -1\\n}\\n\\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\\n return this.indexOf(val, byteOffset, encoding) !== -1\\n}\\n\\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\\n}\\n\\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\\n}\\n\\nfunction hexWrite (buf, string, offset, length) {\\n offset = Number(offset) || 0\\n var remaining = buf.length - offset\\n if (!length) {\\n length = remaining\\n } else {\\n length = Number(length)\\n if (length > remaining) {\\n length = remaining\\n }\\n }\\n\\n // must be an even number of digits\\n var strLen = string.length\\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\\n\\n if (length > strLen / 2) {\\n length = strLen / 2\\n }\\n for (var i = 0; i < length; ++i) {\\n var parsed = parseInt(string.substr(i * 2, 2), 16)\\n if (isNaN(parsed)) return i\\n buf[offset + i] = parsed\\n }\\n return i\\n}\\n\\nfunction utf8Write (buf, string, offset, length) {\\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\\n}\\n\\nfunction asciiWrite (buf, string, offset, length) {\\n return blitBuffer(asciiToBytes(string), buf, offset, length)\\n}\\n\\nfunction latin1Write (buf, string, offset, length) {\\n return asciiWrite(buf, string, offset, length)\\n}\\n\\nfunction base64Write (buf, string, offset, length) {\\n return blitBuffer(base64ToBytes(string), buf, offset, length)\\n}\\n\\nfunction ucs2Write (buf, string, offset, length) {\\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\\n}\\n\\nBuffer.prototype.write = function write (string, offset, length, encoding) {\\n // Buffer#write(string)\\n if (offset === undefined) {\\n encoding = 'utf8'\\n length = this.length\\n offset = 0\\n // Buffer#write(string, encoding)\\n } else if (length === undefined && typeof offset === 'string') {\\n encoding = offset\\n length = this.length\\n offset = 0\\n // Buffer#write(string, offset[, length][, encoding])\\n } else if (isFinite(offset)) {\\n offset = offset | 0\\n if (isFinite(length)) {\\n length = length | 0\\n if (encoding === undefined) encoding = 'utf8'\\n } else {\\n encoding = length\\n length = undefined\\n }\\n // legacy write(string, encoding, offset, length) - remove in v0.13\\n } else {\\n throw new Error(\\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\\n )\\n }\\n\\n var remaining = this.length - offset\\n if (length === undefined || length > remaining) length = remaining\\n\\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\\n throw new RangeError('Attempt to write outside buffer bounds')\\n }\\n\\n if (!encoding) encoding = 'utf8'\\n\\n var loweredCase = false\\n for (;;) {\\n switch (encoding) {\\n case 'hex':\\n return hexWrite(this, string, offset, length)\\n\\n case 'utf8':\\n case 'utf-8':\\n return utf8Write(this, string, offset, length)\\n\\n case 'ascii':\\n return asciiWrite(this, string, offset, length)\\n\\n case 'latin1':\\n case 'binary':\\n return latin1Write(this, string, offset, length)\\n\\n case 'base64':\\n // Warning: maxLength not taken into account in base64Write\\n return base64Write(this, string, offset, length)\\n\\n case 'ucs2':\\n case 'ucs-2':\\n case 'utf16le':\\n case 'utf-16le':\\n return ucs2Write(this, string, offset, length)\\n\\n default:\\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\\n encoding = ('' + encoding).toLowerCase()\\n loweredCase = true\\n }\\n }\\n}\\n\\nBuffer.prototype.toJSON = function toJSON () {\\n return {\\n type: 'Buffer',\\n data: Array.prototype.slice.call(this._arr || this, 0)\\n }\\n}\\n\\nfunction base64Slice (buf, start, end) {\\n if (start === 0 && end === buf.length) {\\n return base64.fromByteArray(buf)\\n } else {\\n return base64.fromByteArray(buf.slice(start, end))\\n }\\n}\\n\\nfunction utf8Slice (buf, start, end) {\\n end = Math.min(buf.length, end)\\n var res = []\\n\\n var i = start\\n while (i < end) {\\n var firstByte = buf[i]\\n var codePoint = null\\n var bytesPerSequence = (firstByte > 0xEF) ? 4\\n : (firstByte > 0xDF) ? 3\\n : (firstByte > 0xBF) ? 2\\n : 1\\n\\n if (i + bytesPerSequence <= end) {\\n var secondByte, thirdByte, fourthByte, tempCodePoint\\n\\n switch (bytesPerSequence) {\\n case 1:\\n if (firstByte < 0x80) {\\n codePoint = firstByte\\n }\\n break\\n case 2:\\n secondByte = buf[i + 1]\\n if ((secondByte & 0xC0) === 0x80) {\\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\\n if (tempCodePoint > 0x7F) {\\n codePoint = tempCodePoint\\n }\\n }\\n break\\n case 3:\\n secondByte = buf[i + 1]\\n thirdByte = buf[i + 2]\\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\\n codePoint = tempCodePoint\\n }\\n }\\n break\\n case 4:\\n secondByte = buf[i + 1]\\n thirdByte = buf[i + 2]\\n fourthByte = buf[i + 3]\\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\\n codePoint = tempCodePoint\\n }\\n }\\n }\\n }\\n\\n if (codePoint === null) {\\n // we did not generate a valid codePoint so insert a\\n // replacement char (U+FFFD) and advance only 1 byte\\n codePoint = 0xFFFD\\n bytesPerSequence = 1\\n } else if (codePoint > 0xFFFF) {\\n // encode to utf16 (surrogate pair dance)\\n codePoint -= 0x10000\\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\\n codePoint = 0xDC00 | codePoint & 0x3FF\\n }\\n\\n res.push(codePoint)\\n i += bytesPerSequence\\n }\\n\\n return decodeCodePointsArray(res)\\n}\\n\\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\\n// the lowest limit is Chrome, with 0x10000 args.\\n// We go 1 magnitude less, for safety\\nvar MAX_ARGUMENTS_LENGTH = 0x1000\\n\\nfunction decodeCodePointsArray (codePoints) {\\n var len = codePoints.length\\n if (len <= MAX_ARGUMENTS_LENGTH) {\\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\\n }\\n\\n // Decode in chunks to avoid \\\"call stack size exceeded\\\".\\n var res = ''\\n var i = 0\\n while (i < len) {\\n res += String.fromCharCode.apply(\\n String,\\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\\n )\\n }\\n return res\\n}\\n\\nfunction asciiSlice (buf, start, end) {\\n var ret = ''\\n end = Math.min(buf.length, end)\\n\\n for (var i = start; i < end; ++i) {\\n ret += String.fromCharCode(buf[i] & 0x7F)\\n }\\n return ret\\n}\\n\\nfunction latin1Slice (buf, start, end) {\\n var ret = ''\\n end = Math.min(buf.length, end)\\n\\n for (var i = start; i < end; ++i) {\\n ret += String.fromCharCode(buf[i])\\n }\\n return ret\\n}\\n\\nfunction hexSlice (buf, start, end) {\\n var len = buf.length\\n\\n if (!start || start < 0) start = 0\\n if (!end || end < 0 || end > len) end = len\\n\\n var out = ''\\n for (var i = start; i < end; ++i) {\\n out += toHex(buf[i])\\n }\\n return out\\n}\\n\\nfunction utf16leSlice (buf, start, end) {\\n var bytes = buf.slice(start, end)\\n var res = ''\\n for (var i = 0; i < bytes.length; i += 2) {\\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\\n }\\n return res\\n}\\n\\nBuffer.prototype.slice = function slice (start, end) {\\n var len = this.length\\n start = ~~start\\n end = end === undefined ? len : ~~end\\n\\n if (start < 0) {\\n start += len\\n if (start < 0) start = 0\\n } else if (start > len) {\\n start = len\\n }\\n\\n if (end < 0) {\\n end += len\\n if (end < 0) end = 0\\n } else if (end > len) {\\n end = len\\n }\\n\\n if (end < start) end = start\\n\\n var newBuf\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n newBuf = this.subarray(start, end)\\n newBuf.__proto__ = Buffer.prototype\\n } else {\\n var sliceLen = end - start\\n newBuf = new Buffer(sliceLen, undefined)\\n for (var i = 0; i < sliceLen; ++i) {\\n newBuf[i] = this[i + start]\\n }\\n }\\n\\n return newBuf\\n}\\n\\n/*\\n * Need to make sure that buffer isn't trying to write out of bounds.\\n */\\nfunction checkOffset (offset, ext, length) {\\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\\n}\\n\\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\\n offset = offset | 0\\n byteLength = byteLength | 0\\n if (!noAssert) checkOffset(offset, byteLength, this.length)\\n\\n var val = this[offset]\\n var mul = 1\\n var i = 0\\n while (++i < byteLength && (mul *= 0x100)) {\\n val += this[offset + i] * mul\\n }\\n\\n return val\\n}\\n\\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\\n offset = offset | 0\\n byteLength = byteLength | 0\\n if (!noAssert) {\\n checkOffset(offset, byteLength, this.length)\\n }\\n\\n var val = this[offset + --byteLength]\\n var mul = 1\\n while (byteLength > 0 && (mul *= 0x100)) {\\n val += this[offset + --byteLength] * mul\\n }\\n\\n return val\\n}\\n\\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 1, this.length)\\n return this[offset]\\n}\\n\\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n return this[offset] | (this[offset + 1] << 8)\\n}\\n\\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n return (this[offset] << 8) | this[offset + 1]\\n}\\n\\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return ((this[offset]) |\\n (this[offset + 1] << 8) |\\n (this[offset + 2] << 16)) +\\n (this[offset + 3] * 0x1000000)\\n}\\n\\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return (this[offset] * 0x1000000) +\\n ((this[offset + 1] << 16) |\\n (this[offset + 2] << 8) |\\n this[offset + 3])\\n}\\n\\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\\n offset = offset | 0\\n byteLength = byteLength | 0\\n if (!noAssert) checkOffset(offset, byteLength, this.length)\\n\\n var val = this[offset]\\n var mul = 1\\n var i = 0\\n while (++i < byteLength && (mul *= 0x100)) {\\n val += this[offset + i] * mul\\n }\\n mul *= 0x80\\n\\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\\n\\n return val\\n}\\n\\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\\n offset = offset | 0\\n byteLength = byteLength | 0\\n if (!noAssert) checkOffset(offset, byteLength, this.length)\\n\\n var i = byteLength\\n var mul = 1\\n var val = this[offset + --i]\\n while (i > 0 && (mul *= 0x100)) {\\n val += this[offset + --i] * mul\\n }\\n mul *= 0x80\\n\\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\\n\\n return val\\n}\\n\\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 1, this.length)\\n if (!(this[offset] & 0x80)) return (this[offset])\\n return ((0xff - this[offset] + 1) * -1)\\n}\\n\\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n var val = this[offset] | (this[offset + 1] << 8)\\n return (val & 0x8000) ? val | 0xFFFF0000 : val\\n}\\n\\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 2, this.length)\\n var val = this[offset + 1] | (this[offset] << 8)\\n return (val & 0x8000) ? val | 0xFFFF0000 : val\\n}\\n\\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return (this[offset]) |\\n (this[offset + 1] << 8) |\\n (this[offset + 2] << 16) |\\n (this[offset + 3] << 24)\\n}\\n\\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n\\n return (this[offset] << 24) |\\n (this[offset + 1] << 16) |\\n (this[offset + 2] << 8) |\\n (this[offset + 3])\\n}\\n\\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n return ieee754.read(this, offset, true, 23, 4)\\n}\\n\\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 4, this.length)\\n return ieee754.read(this, offset, false, 23, 4)\\n}\\n\\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 8, this.length)\\n return ieee754.read(this, offset, true, 52, 8)\\n}\\n\\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\\n if (!noAssert) checkOffset(offset, 8, this.length)\\n return ieee754.read(this, offset, false, 52, 8)\\n}\\n\\nfunction checkInt (buf, value, offset, ext, max, min) {\\n if (!Buffer.isBuffer(buf)) throw new TypeError('\\\"buffer\\\" argument must be a Buffer instance')\\n if (value > max || value < min) throw new RangeError('\\\"value\\\" argument is out of bounds')\\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\\n}\\n\\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset | 0\\n byteLength = byteLength | 0\\n if (!noAssert) {\\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\\n checkInt(this, value, offset, byteLength, maxBytes, 0)\\n }\\n\\n var mul = 1\\n var i = 0\\n this[offset] = value & 0xFF\\n while (++i < byteLength && (mul *= 0x100)) {\\n this[offset + i] = (value / mul) & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset | 0\\n byteLength = byteLength | 0\\n if (!noAssert) {\\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\\n checkInt(this, value, offset, byteLength, maxBytes, 0)\\n }\\n\\n var i = byteLength - 1\\n var mul = 1\\n this[offset + i] = value & 0xFF\\n while (--i >= 0 && (mul *= 0x100)) {\\n this[offset + i] = (value / mul) & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\\n this[offset] = (value & 0xff)\\n return offset + 1\\n}\\n\\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\\n if (value < 0) value = 0xffff + value + 1\\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\\n (littleEndian ? i : 1 - i) * 8\\n }\\n}\\n\\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value & 0xff)\\n this[offset + 1] = (value >>> 8)\\n } else {\\n objectWriteUInt16(this, value, offset, true)\\n }\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value >>> 8)\\n this[offset + 1] = (value & 0xff)\\n } else {\\n objectWriteUInt16(this, value, offset, false)\\n }\\n return offset + 2\\n}\\n\\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\\n if (value < 0) value = 0xffffffff + value + 1\\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\\n }\\n}\\n\\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset + 3] = (value >>> 24)\\n this[offset + 2] = (value >>> 16)\\n this[offset + 1] = (value >>> 8)\\n this[offset] = (value & 0xff)\\n } else {\\n objectWriteUInt32(this, value, offset, true)\\n }\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value >>> 24)\\n this[offset + 1] = (value >>> 16)\\n this[offset + 2] = (value >>> 8)\\n this[offset + 3] = (value & 0xff)\\n } else {\\n objectWriteUInt32(this, value, offset, false)\\n }\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) {\\n var limit = Math.pow(2, 8 * byteLength - 1)\\n\\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\\n }\\n\\n var i = 0\\n var mul = 1\\n var sub = 0\\n this[offset] = value & 0xFF\\n while (++i < byteLength && (mul *= 0x100)) {\\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\\n sub = 1\\n }\\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) {\\n var limit = Math.pow(2, 8 * byteLength - 1)\\n\\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\\n }\\n\\n var i = byteLength - 1\\n var mul = 1\\n var sub = 0\\n this[offset + i] = value & 0xFF\\n while (--i >= 0 && (mul *= 0x100)) {\\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\\n sub = 1\\n }\\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\\n }\\n\\n return offset + byteLength\\n}\\n\\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\\n if (value < 0) value = 0xff + value + 1\\n this[offset] = (value & 0xff)\\n return offset + 1\\n}\\n\\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value & 0xff)\\n this[offset + 1] = (value >>> 8)\\n } else {\\n objectWriteUInt16(this, value, offset, true)\\n }\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value >>> 8)\\n this[offset + 1] = (value & 0xff)\\n } else {\\n objectWriteUInt16(this, value, offset, false)\\n }\\n return offset + 2\\n}\\n\\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value & 0xff)\\n this[offset + 1] = (value >>> 8)\\n this[offset + 2] = (value >>> 16)\\n this[offset + 3] = (value >>> 24)\\n } else {\\n objectWriteUInt32(this, value, offset, true)\\n }\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\\n value = +value\\n offset = offset | 0\\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\\n if (value < 0) value = 0xffffffff + value + 1\\n if (Buffer.TYPED_ARRAY_SUPPORT) {\\n this[offset] = (value >>> 24)\\n this[offset + 1] = (value >>> 16)\\n this[offset + 2] = (value >>> 8)\\n this[offset + 3] = (value & 0xff)\\n } else {\\n objectWriteUInt32(this, value, offset, false)\\n }\\n return offset + 4\\n}\\n\\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\\n if (offset < 0) throw new RangeError('Index out of range')\\n}\\n\\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\\n if (!noAssert) {\\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\\n }\\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\\n return offset + 4\\n}\\n\\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\\n return writeFloat(this, value, offset, true, noAssert)\\n}\\n\\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\\n return writeFloat(this, value, offset, false, noAssert)\\n}\\n\\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\\n if (!noAssert) {\\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\\n }\\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\\n return offset + 8\\n}\\n\\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\\n return writeDouble(this, value, offset, true, noAssert)\\n}\\n\\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\\n return writeDouble(this, value, offset, false, noAssert)\\n}\\n\\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\\n if (!start) start = 0\\n if (!end && end !== 0) end = this.length\\n if (targetStart >= target.length) targetStart = target.length\\n if (!targetStart) targetStart = 0\\n if (end > 0 && end < start) end = start\\n\\n // Copy 0 bytes; we're done\\n if (end === start) return 0\\n if (target.length === 0 || this.length === 0) return 0\\n\\n // Fatal error conditions\\n if (targetStart < 0) {\\n throw new RangeError('targetStart out of bounds')\\n }\\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\\n\\n // Are we oob?\\n if (end > this.length) end = this.length\\n if (target.length - targetStart < end - start) {\\n end = target.length - targetStart + start\\n }\\n\\n var len = end - start\\n var i\\n\\n if (this === target && start < targetStart && targetStart < end) {\\n // descending copy from end\\n for (i = len - 1; i >= 0; --i) {\\n target[i + targetStart] = this[i + start]\\n }\\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\\n // ascending copy from start\\n for (i = 0; i < len; ++i) {\\n target[i + targetStart] = this[i + start]\\n }\\n } else {\\n Uint8Array.prototype.set.call(\\n target,\\n this.subarray(start, start + len),\\n targetStart\\n )\\n }\\n\\n return len\\n}\\n\\n// Usage:\\n// buffer.fill(number[, offset[, end]])\\n// buffer.fill(buffer[, offset[, end]])\\n// buffer.fill(string[, offset[, end]][, encoding])\\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\\n // Handle string cases:\\n if (typeof val === 'string') {\\n if (typeof start === 'string') {\\n encoding = start\\n start = 0\\n end = this.length\\n } else if (typeof end === 'string') {\\n encoding = end\\n end = this.length\\n }\\n if (val.length === 1) {\\n var code = val.charCodeAt(0)\\n if (code < 256) {\\n val = code\\n }\\n }\\n if (encoding !== undefined && typeof encoding !== 'string') {\\n throw new TypeError('encoding must be a string')\\n }\\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\\n throw new TypeError('Unknown encoding: ' + encoding)\\n }\\n } else if (typeof val === 'number') {\\n val = val & 255\\n }\\n\\n // Invalid ranges are not set to a default, so can range check early.\\n if (start < 0 || this.length < start || this.length < end) {\\n throw new RangeError('Out of range index')\\n }\\n\\n if (end <= start) {\\n return this\\n }\\n\\n start = start >>> 0\\n end = end === undefined ? this.length : end >>> 0\\n\\n if (!val) val = 0\\n\\n var i\\n if (typeof val === 'number') {\\n for (i = start; i < end; ++i) {\\n this[i] = val\\n }\\n } else {\\n var bytes = Buffer.isBuffer(val)\\n ? val\\n : utf8ToBytes(new Buffer(val, encoding).toString())\\n var len = bytes.length\\n for (i = 0; i < end - start; ++i) {\\n this[i + start] = bytes[i % len]\\n }\\n }\\n\\n return this\\n}\\n\\n// HELPER FUNCTIONS\\n// ================\\n\\nvar INVALID_BASE64_RE = /[^+\\\\/0-9A-Za-z-_]/g\\n\\nfunction base64clean (str) {\\n // Node strips out invalid characters like \\\\n and \\\\t from the string, base64-js does not\\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\\n // Node converts strings with length < 2 to ''\\n if (str.length < 2) return ''\\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\\n while (str.length % 4 !== 0) {\\n str = str + '='\\n }\\n return str\\n}\\n\\nfunction stringtrim (str) {\\n if (str.trim) return str.trim()\\n return str.replace(/^\\\\s+|\\\\s+$/g, '')\\n}\\n\\nfunction toHex (n) {\\n if (n < 16) return '0' + n.toString(16)\\n return n.toString(16)\\n}\\n\\nfunction utf8ToBytes (string, units) {\\n units = units || Infinity\\n var codePoint\\n var length = string.length\\n var leadSurrogate = null\\n var bytes = []\\n\\n for (var i = 0; i < length; ++i) {\\n codePoint = string.charCodeAt(i)\\n\\n // is surrogate component\\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\\n // last char was a lead\\n if (!leadSurrogate) {\\n // no lead yet\\n if (codePoint > 0xDBFF) {\\n // unexpected trail\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n continue\\n } else if (i + 1 === length) {\\n // unpaired lead\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n continue\\n }\\n\\n // valid lead\\n leadSurrogate = codePoint\\n\\n continue\\n }\\n\\n // 2 leads in a row\\n if (codePoint < 0xDC00) {\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n leadSurrogate = codePoint\\n continue\\n }\\n\\n // valid surrogate pair\\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\\n } else if (leadSurrogate) {\\n // valid bmp char, but last char was a lead\\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\\n }\\n\\n leadSurrogate = null\\n\\n // encode utf8\\n if (codePoint < 0x80) {\\n if ((units -= 1) < 0) break\\n bytes.push(codePoint)\\n } else if (codePoint < 0x800) {\\n if ((units -= 2) < 0) break\\n bytes.push(\\n codePoint >> 0x6 | 0xC0,\\n codePoint & 0x3F | 0x80\\n )\\n } else if (codePoint < 0x10000) {\\n if ((units -= 3) < 0) break\\n bytes.push(\\n codePoint >> 0xC | 0xE0,\\n codePoint >> 0x6 & 0x3F | 0x80,\\n codePoint & 0x3F | 0x80\\n )\\n } else if (codePoint < 0x110000) {\\n if ((units -= 4) < 0) break\\n bytes.push(\\n codePoint >> 0x12 | 0xF0,\\n codePoint >> 0xC & 0x3F | 0x80,\\n codePoint >> 0x6 & 0x3F | 0x80,\\n codePoint & 0x3F | 0x80\\n )\\n } else {\\n throw new Error('Invalid code point')\\n }\\n }\\n\\n return bytes\\n}\\n\\nfunction asciiToBytes (str) {\\n var byteArray = []\\n for (var i = 0; i < str.length; ++i) {\\n // Node's code seems to be doing this and not & 0x7F..\\n byteArray.push(str.charCodeAt(i) & 0xFF)\\n }\\n return byteArray\\n}\\n\\nfunction utf16leToBytes (str, units) {\\n var c, hi, lo\\n var byteArray = []\\n for (var i = 0; i < str.length; ++i) {\\n if ((units -= 2) < 0) break\\n\\n c = str.charCodeAt(i)\\n hi = c >> 8\\n lo = c % 256\\n byteArray.push(lo)\\n byteArray.push(hi)\\n }\\n\\n return byteArray\\n}\\n\\nfunction base64ToBytes (str) {\\n return base64.toByteArray(base64clean(str))\\n}\\n\\nfunction blitBuffer (src, dst, offset, length) {\\n for (var i = 0; i < length; ++i) {\\n if ((i + offset >= dst.length) || (i >= src.length)) break\\n dst[i + offset] = src[i]\\n }\\n return i\\n}\\n\\nfunction isnan (val) {\\n return val !== val // eslint-disable-line no-self-compare\\n}\\n\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{\\\"base64-js\\\":39,\\\"ieee754\\\":65,\\\"isarray\\\":68}],45:[function(require,module,exports){\\n(function (Buffer){\\n// Copyright Joyent, Inc. and other Node contributors.\\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a\\n// copy of this software and associated documentation files (the\\n// \\\"Software\\\"), to deal in the Software without restriction, including\\n// without limitation the rights to use, copy, modify, merge, publish,\\n// distribute, sublicense, and/or sell copies of the Software, and to permit\\n// persons to whom the Software is furnished to do so, subject to the\\n// following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included\\n// in all copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\n// NOTE: These type checking functions intentionally don't use `instanceof`\\n// because it is fragile and can be easily faked with `Object.create()`.\\n\\nfunction isArray(arg) {\\n if (Array.isArray) {\\n return Array.isArray(arg);\\n }\\n return objectToString(arg) === '[object Array]';\\n}\\nexports.isArray = isArray;\\n\\nfunction isBoolean(arg) {\\n return typeof arg === 'boolean';\\n}\\nexports.isBoolean = isBoolean;\\n\\nfunction isNull(arg) {\\n return arg === null;\\n}\\nexports.isNull = isNull;\\n\\nfunction isNullOrUndefined(arg) {\\n return arg == null;\\n}\\nexports.isNullOrUndefined = isNullOrUndefined;\\n\\nfunction isNumber(arg) {\\n return typeof arg === 'number';\\n}\\nexports.isNumber = isNumber;\\n\\nfunction isString(arg) {\\n return typeof arg === 'string';\\n}\\nexports.isString = isString;\\n\\nfunction isSymbol(arg) {\\n return typeof arg === 'symbol';\\n}\\nexports.isSymbol = isSymbol;\\n\\nfunction isUndefined(arg) {\\n return arg === void 0;\\n}\\nexports.isUndefined = isUndefined;\\n\\nfunction isRegExp(re) {\\n return objectToString(re) === '[object RegExp]';\\n}\\nexports.isRegExp = isRegExp;\\n\\nfunction isObject(arg) {\\n return typeof arg === 'object' && arg !== null;\\n}\\nexports.isObject = isObject;\\n\\nfunction isDate(d) {\\n return objectToString(d) === '[object Date]';\\n}\\nexports.isDate = isDate;\\n\\nfunction isError(e) {\\n return (objectToString(e) === '[object Error]' || e instanceof Error);\\n}\\nexports.isError = isError;\\n\\nfunction isFunction(arg) {\\n return typeof arg === 'function';\\n}\\nexports.isFunction = isFunction;\\n\\nfunction isPrimitive(arg) {\\n return arg === null ||\\n typeof arg === 'boolean' ||\\n typeof arg === 'number' ||\\n typeof arg === 'string' ||\\n typeof arg === 'symbol' || // ES6 symbol\\n typeof arg === 'undefined';\\n}\\nexports.isPrimitive = isPrimitive;\\n\\nexports.isBuffer = Buffer.isBuffer;\\n\\nfunction objectToString(o) {\\n return Object.prototype.toString.call(o);\\n}\\n\\n}).call(this,{\\\"isBuffer\\\":require(\\\"../../is-buffer/index.js\\\")})\\n},{\\\"../../is-buffer/index.js\\\":67}],46:[function(require,module,exports){\\n/*istanbul ignore start*/\\\"use strict\\\";\\n\\nexports.__esModule = true;\\nexports. /*istanbul ignore end*/convertChangesToDMP = convertChangesToDMP;\\n// See: http://code.google.com/p/google-diff-match-patch/wiki/API\\nfunction convertChangesToDMP(changes) {\\n var ret = [],\\n change = /*istanbul ignore start*/void 0 /*istanbul ignore end*/,\\n operation = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;\\n for (var i = 0; i < changes.length; i++) {\\n change = changes[i];\\n if (change.added) {\\n operation = 1;\\n } else if (change.removed) {\\n operation = -1;\\n } else {\\n operation = 0;\\n }\\n\\n ret.push([operation, change.value]);\\n }\\n return ret;\\n}\\n\\n\\n},{}],47:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports. /*istanbul ignore end*/convertChangesToXML = convertChangesToXML;\\nfunction convertChangesToXML(changes) {\\n var ret = [];\\n for (var i = 0; i < changes.length; i++) {\\n var change = changes[i];\\n if (change.added) {\\n ret.push('<ins>');\\n } else if (change.removed) {\\n ret.push('<del>');\\n }\\n\\n ret.push(escapeHTML(change.value));\\n\\n if (change.added) {\\n ret.push('</ins>');\\n } else if (change.removed) {\\n ret.push('</del>');\\n }\\n }\\n return ret.join('');\\n}\\n\\nfunction escapeHTML(s) {\\n var n = s;\\n n = n.replace(/&/g, '&amp;');\\n n = n.replace(/</g, '&lt;');\\n n = n.replace(/>/g, '&gt;');\\n n = n.replace(/\\\"/g, '&quot;');\\n\\n return n;\\n}\\n\\n\\n},{}],48:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports.arrayDiff = undefined;\\nexports. /*istanbul ignore end*/diffArrays = diffArrays;\\n\\nvar /*istanbul ignore start*/_base = require('./base') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nvar _base2 = _interopRequireDefault(_base);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\\n\\n/*istanbul ignore end*/var arrayDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/arrayDiff = new /*istanbul ignore start*/_base2['default']() /*istanbul ignore end*/;\\narrayDiff.tokenize = arrayDiff.join = function (value) {\\n return value.slice();\\n};\\n\\nfunction diffArrays(oldArr, newArr, callback) {\\n return arrayDiff.diff(oldArr, newArr, callback);\\n}\\n\\n\\n},{\\\"./base\\\":49}],49:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports['default'] = /*istanbul ignore end*/Diff;\\nfunction Diff() {}\\n\\nDiff.prototype = { /*istanbul ignore start*/\\n /*istanbul ignore end*/diff: function diff(oldString, newString) {\\n /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];\\n\\n var callback = options.callback;\\n if (typeof options === 'function') {\\n callback = options;\\n options = {};\\n }\\n this.options = options;\\n\\n var self = this;\\n\\n function done(value) {\\n if (callback) {\\n setTimeout(function () {\\n callback(undefined, value);\\n }, 0);\\n return true;\\n } else {\\n return value;\\n }\\n }\\n\\n // Allow subclasses to massage the input prior to running\\n oldString = this.castInput(oldString);\\n newString = this.castInput(newString);\\n\\n oldString = this.removeEmpty(this.tokenize(oldString));\\n newString = this.removeEmpty(this.tokenize(newString));\\n\\n var newLen = newString.length,\\n oldLen = oldString.length;\\n var editLength = 1;\\n var maxEditLength = newLen + oldLen;\\n var bestPath = [{ newPos: -1, components: [] }];\\n\\n // Seed editLength = 0, i.e. the content starts with the same values\\n var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);\\n if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\\n // Identity per the equality and tokenizer\\n return done([{ value: this.join(newString), count: newString.length }]);\\n }\\n\\n // Main worker method. checks all permutations of a given edit length for acceptance.\\n function execEditLength() {\\n for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\\n var basePath = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;\\n var addPath = bestPath[diagonalPath - 1],\\n removePath = bestPath[diagonalPath + 1],\\n _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\\n if (addPath) {\\n // No one else is going to attempt to use this value, clear it\\n bestPath[diagonalPath - 1] = undefined;\\n }\\n\\n var canAdd = addPath && addPath.newPos + 1 < newLen,\\n canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;\\n if (!canAdd && !canRemove) {\\n // If this path is a terminal then prune\\n bestPath[diagonalPath] = undefined;\\n continue;\\n }\\n\\n // Select the diagonal that we want to branch from. We select the prior\\n // path whose position in the new string is the farthest from the origin\\n // and does not pass the bounds of the diff graph\\n if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\\n basePath = clonePath(removePath);\\n self.pushComponent(basePath.components, undefined, true);\\n } else {\\n basePath = addPath; // No need to clone, we've pulled it from the list\\n basePath.newPos++;\\n self.pushComponent(basePath.components, true, undefined);\\n }\\n\\n _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath);\\n\\n // If we have hit the end of both strings, then we are done\\n if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {\\n return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));\\n } else {\\n // Otherwise track this path as a potential candidate and continue.\\n bestPath[diagonalPath] = basePath;\\n }\\n }\\n\\n editLength++;\\n }\\n\\n // Performs the length of edit iteration. Is a bit fugly as this has to support the\\n // sync and async mode which is never fun. Loops over execEditLength until a value\\n // is produced.\\n if (callback) {\\n (function exec() {\\n setTimeout(function () {\\n // This should not happen, but we want to be safe.\\n /* istanbul ignore next */\\n if (editLength > maxEditLength) {\\n return callback();\\n }\\n\\n if (!execEditLength()) {\\n exec();\\n }\\n }, 0);\\n })();\\n } else {\\n while (editLength <= maxEditLength) {\\n var ret = execEditLength();\\n if (ret) {\\n return ret;\\n }\\n }\\n }\\n },\\n /*istanbul ignore start*/ /*istanbul ignore end*/pushComponent: function pushComponent(components, added, removed) {\\n var last = components[components.length - 1];\\n if (last && last.added === added && last.removed === removed) {\\n // We need to clone here as the component clone operation is just\\n // as shallow array clone\\n components[components.length - 1] = { count: last.count + 1, added: added, removed: removed };\\n } else {\\n components.push({ count: 1, added: added, removed: removed });\\n }\\n },\\n /*istanbul ignore start*/ /*istanbul ignore end*/extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {\\n var newLen = newString.length,\\n oldLen = oldString.length,\\n newPos = basePath.newPos,\\n oldPos = newPos - diagonalPath,\\n commonCount = 0;\\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {\\n newPos++;\\n oldPos++;\\n commonCount++;\\n }\\n\\n if (commonCount) {\\n basePath.components.push({ count: commonCount });\\n }\\n\\n basePath.newPos = newPos;\\n return oldPos;\\n },\\n /*istanbul ignore start*/ /*istanbul ignore end*/equals: function equals(left, right) {\\n return left === right;\\n },\\n /*istanbul ignore start*/ /*istanbul ignore end*/removeEmpty: function removeEmpty(array) {\\n var ret = [];\\n for (var i = 0; i < array.length; i++) {\\n if (array[i]) {\\n ret.push(array[i]);\\n }\\n }\\n return ret;\\n },\\n /*istanbul ignore start*/ /*istanbul ignore end*/castInput: function castInput(value) {\\n return value;\\n },\\n /*istanbul ignore start*/ /*istanbul ignore end*/tokenize: function tokenize(value) {\\n return value.split('');\\n },\\n /*istanbul ignore start*/ /*istanbul ignore end*/join: function join(chars) {\\n return chars.join('');\\n }\\n};\\n\\nfunction buildValues(diff, components, newString, oldString, useLongestToken) {\\n var componentPos = 0,\\n componentLen = components.length,\\n newPos = 0,\\n oldPos = 0;\\n\\n for (; componentPos < componentLen; componentPos++) {\\n var component = components[componentPos];\\n if (!component.removed) {\\n if (!component.added && useLongestToken) {\\n var value = newString.slice(newPos, newPos + component.count);\\n value = value.map(function (value, i) {\\n var oldValue = oldString[oldPos + i];\\n return oldValue.length > value.length ? oldValue : value;\\n });\\n\\n component.value = diff.join(value);\\n } else {\\n component.value = diff.join(newString.slice(newPos, newPos + component.count));\\n }\\n newPos += component.count;\\n\\n // Common case\\n if (!component.added) {\\n oldPos += component.count;\\n }\\n } else {\\n component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\\n oldPos += component.count;\\n\\n // Reverse add and remove so removes are output first to match common convention\\n // The diffing algorithm is tied to add then remove output and this is the simplest\\n // route to get the desired output with minimal overhead.\\n if (componentPos && components[componentPos - 1].added) {\\n var tmp = components[componentPos - 1];\\n components[componentPos - 1] = components[componentPos];\\n components[componentPos] = tmp;\\n }\\n }\\n }\\n\\n // Special case handle for when one terminal is ignored. For this case we merge the\\n // terminal into the prior string and drop the change.\\n var lastComponent = components[componentLen - 1];\\n if (componentLen > 1 && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {\\n components[componentLen - 2].value += lastComponent.value;\\n components.pop();\\n }\\n\\n return components;\\n}\\n\\nfunction clonePath(path) {\\n return { newPos: path.newPos, components: path.components.slice(0) };\\n}\\n\\n\\n},{}],50:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports.characterDiff = undefined;\\nexports. /*istanbul ignore end*/diffChars = diffChars;\\n\\nvar /*istanbul ignore start*/_base = require('./base') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nvar _base2 = _interopRequireDefault(_base);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\\n\\n/*istanbul ignore end*/var characterDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/characterDiff = new /*istanbul ignore start*/_base2['default']() /*istanbul ignore end*/;\\nfunction diffChars(oldStr, newStr, callback) {\\n return characterDiff.diff(oldStr, newStr, callback);\\n}\\n\\n\\n},{\\\"./base\\\":49}],51:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports.cssDiff = undefined;\\nexports. /*istanbul ignore end*/diffCss = diffCss;\\n\\nvar /*istanbul ignore start*/_base = require('./base') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nvar _base2 = _interopRequireDefault(_base);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\\n\\n/*istanbul ignore end*/var cssDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/cssDiff = new /*istanbul ignore start*/_base2['default']() /*istanbul ignore end*/;\\ncssDiff.tokenize = function (value) {\\n return value.split(/([{}:;,]|\\\\s+)/);\\n};\\n\\nfunction diffCss(oldStr, newStr, callback) {\\n return cssDiff.diff(oldStr, newStr, callback);\\n}\\n\\n\\n},{\\\"./base\\\":49}],52:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports.jsonDiff = undefined;\\n\\nvar _typeof = typeof Symbol === \\\"function\\\" && typeof Symbol.iterator === \\\"symbol\\\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \\\"function\\\" && obj.constructor === Symbol ? \\\"symbol\\\" : typeof obj; };\\n\\nexports. /*istanbul ignore end*/diffJson = diffJson;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = canonicalize;\\n\\nvar /*istanbul ignore start*/_base = require('./base') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nvar _base2 = _interopRequireDefault(_base);\\n\\n/*istanbul ignore end*/\\nvar /*istanbul ignore start*/_line = require('./line') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\\n\\n/*istanbul ignore end*/\\n\\nvar objectPrototypeToString = Object.prototype.toString;\\n\\nvar jsonDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/jsonDiff = new /*istanbul ignore start*/_base2['default']() /*istanbul ignore end*/;\\n// Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\\n// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\\njsonDiff.useLongestToken = true;\\n\\njsonDiff.tokenize = /*istanbul ignore start*/_line.lineDiff. /*istanbul ignore end*/tokenize;\\njsonDiff.castInput = function (value) {\\n /*istanbul ignore start*/var /*istanbul ignore end*/undefinedReplacement = this.options.undefinedReplacement;\\n\\n\\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value), function (k, v) {\\n if (typeof v === 'undefined') {\\n return undefinedReplacement;\\n }\\n\\n return v;\\n }, ' ');\\n};\\njsonDiff.equals = function (left, right) {\\n return (/*istanbul ignore start*/_base2['default']. /*istanbul ignore end*/prototype.equals(left.replace(/,([\\\\r\\\\n])/g, '$1'), right.replace(/,([\\\\r\\\\n])/g, '$1'))\\n );\\n};\\n\\nfunction diffJson(oldObj, newObj, options) {\\n return jsonDiff.diff(oldObj, newObj, options);\\n}\\n\\n// This function handles the presence of circular references by bailing out when encountering an\\n// object that is already on the \\\"stack\\\" of items being processed.\\nfunction canonicalize(obj, stack, replacementStack) {\\n stack = stack || [];\\n replacementStack = replacementStack || [];\\n\\n var i = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;\\n\\n for (i = 0; i < stack.length; i += 1) {\\n if (stack[i] === obj) {\\n return replacementStack[i];\\n }\\n }\\n\\n var canonicalizedObj = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;\\n\\n if ('[object Array]' === objectPrototypeToString.call(obj)) {\\n stack.push(obj);\\n canonicalizedObj = new Array(obj.length);\\n replacementStack.push(canonicalizedObj);\\n for (i = 0; i < obj.length; i += 1) {\\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack);\\n }\\n stack.pop();\\n replacementStack.pop();\\n return canonicalizedObj;\\n }\\n\\n if (obj && obj.toJSON) {\\n obj = obj.toJSON();\\n }\\n\\n if ( /*istanbul ignore start*/(typeof /*istanbul ignore end*/obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj !== null) {\\n stack.push(obj);\\n canonicalizedObj = {};\\n replacementStack.push(canonicalizedObj);\\n var sortedKeys = [],\\n key = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;\\n for (key in obj) {\\n /* istanbul ignore else */\\n if (obj.hasOwnProperty(key)) {\\n sortedKeys.push(key);\\n }\\n }\\n sortedKeys.sort();\\n for (i = 0; i < sortedKeys.length; i += 1) {\\n key = sortedKeys[i];\\n canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack);\\n }\\n stack.pop();\\n replacementStack.pop();\\n } else {\\n canonicalizedObj = obj;\\n }\\n return canonicalizedObj;\\n}\\n\\n\\n},{\\\"./base\\\":49,\\\"./line\\\":53}],53:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports.lineDiff = undefined;\\nexports. /*istanbul ignore end*/diffLines = diffLines;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = diffTrimmedLines;\\n\\nvar /*istanbul ignore start*/_base = require('./base') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nvar _base2 = _interopRequireDefault(_base);\\n\\n/*istanbul ignore end*/\\nvar /*istanbul ignore start*/_params = require('../util/params') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\\n\\n/*istanbul ignore end*/var lineDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/lineDiff = new /*istanbul ignore start*/_base2['default']() /*istanbul ignore end*/;\\nlineDiff.tokenize = function (value) {\\n var retLines = [],\\n linesAndNewlines = value.split(/(\\\\n|\\\\r\\\\n)/);\\n\\n // Ignore the final empty token that occurs if the string ends with a new line\\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\\n linesAndNewlines.pop();\\n }\\n\\n // Merge the content and line separators into single tokens\\n for (var i = 0; i < linesAndNewlines.length; i++) {\\n var line = linesAndNewlines[i];\\n\\n if (i % 2 && !this.options.newlineIsToken) {\\n retLines[retLines.length - 1] += line;\\n } else {\\n if (this.options.ignoreWhitespace) {\\n line = line.trim();\\n }\\n retLines.push(line);\\n }\\n }\\n\\n return retLines;\\n};\\n\\nfunction diffLines(oldStr, newStr, callback) {\\n return lineDiff.diff(oldStr, newStr, callback);\\n}\\nfunction diffTrimmedLines(oldStr, newStr, callback) {\\n var options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(callback, { ignoreWhitespace: true });\\n return lineDiff.diff(oldStr, newStr, options);\\n}\\n\\n\\n},{\\\"../util/params\\\":61,\\\"./base\\\":49}],54:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports.sentenceDiff = undefined;\\nexports. /*istanbul ignore end*/diffSentences = diffSentences;\\n\\nvar /*istanbul ignore start*/_base = require('./base') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nvar _base2 = _interopRequireDefault(_base);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\\n\\n/*istanbul ignore end*/var sentenceDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/sentenceDiff = new /*istanbul ignore start*/_base2['default']() /*istanbul ignore end*/;\\nsentenceDiff.tokenize = function (value) {\\n return value.split(/(\\\\S.+?[.!?])(?=\\\\s+|$)/);\\n};\\n\\nfunction diffSentences(oldStr, newStr, callback) {\\n return sentenceDiff.diff(oldStr, newStr, callback);\\n}\\n\\n\\n},{\\\"./base\\\":49}],55:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports.wordDiff = undefined;\\nexports. /*istanbul ignore end*/diffWords = diffWords;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = diffWordsWithSpace;\\n\\nvar /*istanbul ignore start*/_base = require('./base') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nvar _base2 = _interopRequireDefault(_base);\\n\\n/*istanbul ignore end*/\\nvar /*istanbul ignore start*/_params = require('../util/params') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\\n\\n/*istanbul ignore end*/\\n\\n// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode\\n//\\n// Ranges and exceptions:\\n// Latin-1 Supplement, 0080–00FF\\n// - U+00D7 × Multiplication sign\\n// - U+00F7 ÷ Division sign\\n// Latin Extended-A, 0100–017F\\n// Latin Extended-B, 0180–024F\\n// IPA Extensions, 0250–02AF\\n// Spacing Modifier Letters, 02B0–02FF\\n// - U+02C7 ˇ &#711; Caron\\n// - U+02D8 ˘ &#728; Breve\\n// - U+02D9 ˙ &#729; Dot Above\\n// - U+02DA ˚ &#730; Ring Above\\n// - U+02DB ˛ &#731; Ogonek\\n// - U+02DC ˜ &#732; Small Tilde\\n// - U+02DD ˝ &#733; Double Acute Accent\\n// Latin Extended Additional, 1E00–1EFF\\nvar extendedWordChars = /^[A-Za-z\\\\xC0-\\\\u02C6\\\\u02C8-\\\\u02D7\\\\u02DE-\\\\u02FF\\\\u1E00-\\\\u1EFF]+$/;\\n\\nvar reWhitespace = /\\\\S/;\\n\\nvar wordDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/wordDiff = new /*istanbul ignore start*/_base2['default']() /*istanbul ignore end*/;\\nwordDiff.equals = function (left, right) {\\n return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);\\n};\\nwordDiff.tokenize = function (value) {\\n var tokens = value.split(/(\\\\s+|\\\\b)/);\\n\\n // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.\\n for (var i = 0; i < tokens.length - 1; i++) {\\n // If we have an empty string in the next field and we have only word chars before and after, merge\\n if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {\\n tokens[i] += tokens[i + 2];\\n tokens.splice(i + 1, 2);\\n i--;\\n }\\n }\\n\\n return tokens;\\n};\\n\\nfunction diffWords(oldStr, newStr, callback) {\\n var options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(callback, { ignoreWhitespace: true });\\n return wordDiff.diff(oldStr, newStr, options);\\n}\\nfunction diffWordsWithSpace(oldStr, newStr, callback) {\\n return wordDiff.diff(oldStr, newStr, callback);\\n}\\n\\n\\n},{\\\"../util/params\\\":61,\\\"./base\\\":49}],56:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports.canonicalize = exports.convertChangesToXML = exports.convertChangesToDMP = exports.parsePatch = exports.applyPatches = exports.applyPatch = exports.createPatch = exports.createTwoFilesPatch = exports.structuredPatch = exports.diffArrays = exports.diffJson = exports.diffCss = exports.diffSentences = exports.diffTrimmedLines = exports.diffLines = exports.diffWordsWithSpace = exports.diffWords = exports.diffChars = exports.Diff = undefined;\\n/*istanbul ignore end*/\\nvar /*istanbul ignore start*/_base = require('./diff/base') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nvar _base2 = _interopRequireDefault(_base);\\n\\n/*istanbul ignore end*/\\nvar /*istanbul ignore start*/_character = require('./diff/character') /*istanbul ignore end*/;\\n\\nvar /*istanbul ignore start*/_word = require('./diff/word') /*istanbul ignore end*/;\\n\\nvar /*istanbul ignore start*/_line = require('./diff/line') /*istanbul ignore end*/;\\n\\nvar /*istanbul ignore start*/_sentence = require('./diff/sentence') /*istanbul ignore end*/;\\n\\nvar /*istanbul ignore start*/_css = require('./diff/css') /*istanbul ignore end*/;\\n\\nvar /*istanbul ignore start*/_json = require('./diff/json') /*istanbul ignore end*/;\\n\\nvar /*istanbul ignore start*/_array = require('./diff/array') /*istanbul ignore end*/;\\n\\nvar /*istanbul ignore start*/_apply = require('./patch/apply') /*istanbul ignore end*/;\\n\\nvar /*istanbul ignore start*/_parse = require('./patch/parse') /*istanbul ignore end*/;\\n\\nvar /*istanbul ignore start*/_create = require('./patch/create') /*istanbul ignore end*/;\\n\\nvar /*istanbul ignore start*/_dmp = require('./convert/dmp') /*istanbul ignore end*/;\\n\\nvar /*istanbul ignore start*/_xml = require('./convert/xml') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\\n\\nexports. /*istanbul ignore end*/Diff = _base2['default'];\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/diffChars = _character.diffChars;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/diffWords = _word.diffWords;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = _word.diffWordsWithSpace;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/diffLines = _line.diffLines;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = _line.diffTrimmedLines;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/diffSentences = _sentence.diffSentences;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/diffCss = _css.diffCss;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/diffJson = _json.diffJson;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/diffArrays = _array.diffArrays;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/structuredPatch = _create.structuredPatch;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = _create.createTwoFilesPatch;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = _create.createPatch;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatch = _apply.applyPatch;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = _apply.applyPatches;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/parsePatch = _parse.parsePatch;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToDMP = _dmp.convertChangesToDMP;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToXML = _xml.convertChangesToXML;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = _json.canonicalize; /* See LICENSE file for terms of use */\\n\\n/*\\n * Text diff implementation.\\n *\\n * This library supports the following APIS:\\n * JsDiff.diffChars: Character by character diff\\n * JsDiff.diffWords: Word (as defined by \\\\b regex) diff which ignores whitespace\\n * JsDiff.diffLines: Line based diff\\n *\\n * JsDiff.diffCss: Diff targeted at CSS content\\n *\\n * These methods are based on the implementation proposed in\\n * \\\"An O(ND) Difference Algorithm and its Variations\\\" (Myers, 1986).\\n * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927\\n */\\n\\n\\n},{\\\"./convert/dmp\\\":46,\\\"./convert/xml\\\":47,\\\"./diff/array\\\":48,\\\"./diff/base\\\":49,\\\"./diff/character\\\":50,\\\"./diff/css\\\":51,\\\"./diff/json\\\":52,\\\"./diff/line\\\":53,\\\"./diff/sentence\\\":54,\\\"./diff/word\\\":55,\\\"./patch/apply\\\":57,\\\"./patch/create\\\":58,\\\"./patch/parse\\\":59}],57:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports. /*istanbul ignore end*/applyPatch = applyPatch;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = applyPatches;\\n\\nvar /*istanbul ignore start*/_parse = require('./parse') /*istanbul ignore end*/;\\n\\nvar /*istanbul ignore start*/_distanceIterator = require('../util/distance-iterator') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nvar _distanceIterator2 = _interopRequireDefault(_distanceIterator);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\\n\\n/*istanbul ignore end*/function applyPatch(source, uniDiff) {\\n /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];\\n\\n if (typeof uniDiff === 'string') {\\n uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff);\\n }\\n\\n if (Array.isArray(uniDiff)) {\\n if (uniDiff.length > 1) {\\n throw new Error('applyPatch only works with a single input.');\\n }\\n\\n uniDiff = uniDiff[0];\\n }\\n\\n // Apply the diff to the input\\n var lines = source.split(/\\\\r\\\\n|[\\\\n\\\\v\\\\f\\\\r\\\\x85]/),\\n delimiters = source.match(/\\\\r\\\\n|[\\\\n\\\\v\\\\f\\\\r\\\\x85]/g) || [],\\n hunks = uniDiff.hunks,\\n compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) /*istanbul ignore start*/{\\n return (/*istanbul ignore end*/line === patchContent\\n );\\n },\\n errorCount = 0,\\n fuzzFactor = options.fuzzFactor || 0,\\n minLine = 0,\\n offset = 0,\\n removeEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/,\\n addEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;\\n\\n /**\\n * Checks if the hunk exactly fits on the provided location\\n */\\n function hunkFits(hunk, toPos) {\\n for (var j = 0; j < hunk.lines.length; j++) {\\n var line = hunk.lines[j],\\n operation = line[0],\\n content = line.substr(1);\\n\\n if (operation === ' ' || operation === '-') {\\n // Context sanity check\\n if (!compareLine(toPos + 1, lines[toPos], operation, content)) {\\n errorCount++;\\n\\n if (errorCount > fuzzFactor) {\\n return false;\\n }\\n }\\n toPos++;\\n }\\n }\\n\\n return true;\\n }\\n\\n // Search best fit offsets for each hunk based on the previous ones\\n for (var i = 0; i < hunks.length; i++) {\\n var hunk = hunks[i],\\n maxLine = lines.length - hunk.oldLines,\\n localOffset = 0,\\n toPos = offset + hunk.oldStart - 1;\\n\\n var iterator = /*istanbul ignore start*/(0, _distanceIterator2['default']) /*istanbul ignore end*/(toPos, minLine, maxLine);\\n\\n for (; localOffset !== undefined; localOffset = iterator()) {\\n if (hunkFits(hunk, toPos + localOffset)) {\\n hunk.offset = offset += localOffset;\\n break;\\n }\\n }\\n\\n if (localOffset === undefined) {\\n return false;\\n }\\n\\n // Set lower text limit to end of the current hunk, so next ones don't try\\n // to fit over already patched text\\n minLine = hunk.offset + hunk.oldStart + hunk.oldLines;\\n }\\n\\n // Apply patch hunks\\n for (var _i = 0; _i < hunks.length; _i++) {\\n var _hunk = hunks[_i],\\n _toPos = _hunk.offset + _hunk.newStart - 1;\\n if (_hunk.newLines == 0) {\\n _toPos++;\\n }\\n\\n for (var j = 0; j < _hunk.lines.length; j++) {\\n var line = _hunk.lines[j],\\n operation = line[0],\\n content = line.substr(1),\\n delimiter = _hunk.linedelimiters[j];\\n\\n if (operation === ' ') {\\n _toPos++;\\n } else if (operation === '-') {\\n lines.splice(_toPos, 1);\\n delimiters.splice(_toPos, 1);\\n /* istanbul ignore else */\\n } else if (operation === '+') {\\n lines.splice(_toPos, 0, content);\\n delimiters.splice(_toPos, 0, delimiter);\\n _toPos++;\\n } else if (operation === '\\\\\\\\') {\\n var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;\\n if (previousOperation === '+') {\\n removeEOFNL = true;\\n } else if (previousOperation === '-') {\\n addEOFNL = true;\\n }\\n }\\n }\\n }\\n\\n // Handle EOFNL insertion/removal\\n if (removeEOFNL) {\\n while (!lines[lines.length - 1]) {\\n lines.pop();\\n delimiters.pop();\\n }\\n } else if (addEOFNL) {\\n lines.push('');\\n delimiters.push('\\\\n');\\n }\\n for (var _k = 0; _k < lines.length - 1; _k++) {\\n lines[_k] = lines[_k] + delimiters[_k];\\n }\\n return lines.join('');\\n}\\n\\n// Wrapper that supports multiple file patches via callbacks.\\nfunction applyPatches(uniDiff, options) {\\n if (typeof uniDiff === 'string') {\\n uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff);\\n }\\n\\n var currentIndex = 0;\\n function processIndex() {\\n var index = uniDiff[currentIndex++];\\n if (!index) {\\n return options.complete();\\n }\\n\\n options.loadFile(index, function (err, data) {\\n if (err) {\\n return options.complete(err);\\n }\\n\\n var updatedContent = applyPatch(data, index, options);\\n options.patched(index, updatedContent, function (err) {\\n if (err) {\\n return options.complete(err);\\n }\\n\\n processIndex();\\n });\\n });\\n }\\n processIndex();\\n}\\n\\n\\n},{\\\"../util/distance-iterator\\\":60,\\\"./parse\\\":59}],58:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports. /*istanbul ignore end*/structuredPatch = structuredPatch;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = createTwoFilesPatch;\\n/*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = createPatch;\\n\\nvar /*istanbul ignore start*/_line = require('../diff/line') /*istanbul ignore end*/;\\n\\n/*istanbul ignore start*/\\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\\n\\n/*istanbul ignore end*/function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\\n if (!options) {\\n options = {};\\n }\\n if (typeof options.context === 'undefined') {\\n options.context = 4;\\n }\\n\\n var diff = /*istanbul ignore start*/(0, _line.diffLines) /*istanbul ignore end*/(oldStr, newStr, options);\\n diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier\\n\\n function contextLines(lines) {\\n return lines.map(function (entry) {\\n return ' ' + entry;\\n });\\n }\\n\\n var hunks = [];\\n var oldRangeStart = 0,\\n newRangeStart = 0,\\n curRange = [],\\n oldLine = 1,\\n newLine = 1;\\n /*istanbul ignore start*/\\n var _loop = function _loop( /*istanbul ignore end*/i) {\\n var current = diff[i],\\n lines = current.lines || current.value.replace(/\\\\n$/, '').split('\\\\n');\\n current.lines = lines;\\n\\n if (current.added || current.removed) {\\n /*istanbul ignore start*/\\n var _curRange;\\n\\n /*istanbul ignore end*/\\n // If we have previous context, start with that\\n if (!oldRangeStart) {\\n var prev = diff[i - 1];\\n oldRangeStart = oldLine;\\n newRangeStart = newLine;\\n\\n if (prev) {\\n curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\\n oldRangeStart -= curRange.length;\\n newRangeStart -= curRange.length;\\n }\\n }\\n\\n // Output our changes\\n /*istanbul ignore start*/(_curRange = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/lines.map(function (entry) {\\n return (current.added ? '+' : '-') + entry;\\n })));\\n\\n // Track the updated file position\\n if (current.added) {\\n newLine += lines.length;\\n } else {\\n oldLine += lines.length;\\n }\\n } else {\\n // Identical context lines. Track line changes\\n if (oldRangeStart) {\\n // Close out any changes that have been output (or join overlapping)\\n if (lines.length <= options.context * 2 && i < diff.length - 2) {\\n /*istanbul ignore start*/\\n var _curRange2;\\n\\n /*istanbul ignore end*/\\n // Overlapping\\n /*istanbul ignore start*/(_curRange2 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange2 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines)));\\n } else {\\n /*istanbul ignore start*/\\n var _curRange3;\\n\\n /*istanbul ignore end*/\\n // end the range and output\\n var contextSize = Math.min(lines.length, options.context);\\n /*istanbul ignore start*/(_curRange3 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange3 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines.slice(0, contextSize))));\\n\\n var hunk = {\\n oldStart: oldRangeStart,\\n oldLines: oldLine - oldRangeStart + contextSize,\\n newStart: newRangeStart,\\n newLines: newLine - newRangeStart + contextSize,\\n lines: curRange\\n };\\n if (i >= diff.length - 2 && lines.length <= options.context) {\\n // EOF is inside this hunk\\n var oldEOFNewline = /\\\\n$/.test(oldStr);\\n var newEOFNewline = /\\\\n$/.test(newStr);\\n if (lines.length == 0 && !oldEOFNewline) {\\n // special case: old has no eol and no trailing context; no-nl can end up before adds\\n curRange.splice(hunk.oldLines, 0, '\\\\\\\\ No newline at end of file');\\n } else if (!oldEOFNewline || !newEOFNewline) {\\n curRange.push('\\\\\\\\ No newline at end of file');\\n }\\n }\\n hunks.push(hunk);\\n\\n oldRangeStart = 0;\\n newRangeStart = 0;\\n curRange = [];\\n }\\n }\\n oldLine += lines.length;\\n newLine += lines.length;\\n }\\n };\\n\\n for (var i = 0; i < diff.length; i++) {\\n /*istanbul ignore start*/\\n _loop( /*istanbul ignore end*/i);\\n }\\n\\n return {\\n oldFileName: oldFileName, newFileName: newFileName,\\n oldHeader: oldHeader, newHeader: newHeader,\\n hunks: hunks\\n };\\n}\\n\\nfunction createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\\n var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);\\n\\n var ret = [];\\n if (oldFileName == newFileName) {\\n ret.push('Index: ' + oldFileName);\\n }\\n ret.push('===================================================================');\\n ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\\\t' + diff.oldHeader));\\n ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\\\t' + diff.newHeader));\\n\\n for (var i = 0; i < diff.hunks.length; i++) {\\n var hunk = diff.hunks[i];\\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\\n ret.push.apply(ret, hunk.lines);\\n }\\n\\n return ret.join('\\\\n') + '\\\\n';\\n}\\n\\nfunction createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\\n}\\n\\n\\n},{\\\"../diff/line\\\":53}],59:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports. /*istanbul ignore end*/parsePatch = parsePatch;\\nfunction parsePatch(uniDiff) {\\n /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\\n\\n var diffstr = uniDiff.split(/\\\\r\\\\n|[\\\\n\\\\v\\\\f\\\\r\\\\x85]/),\\n delimiters = uniDiff.match(/\\\\r\\\\n|[\\\\n\\\\v\\\\f\\\\r\\\\x85]/g) || [],\\n list = [],\\n i = 0;\\n\\n function parseIndex() {\\n var index = {};\\n list.push(index);\\n\\n // Parse diff metadata\\n while (i < diffstr.length) {\\n var line = diffstr[i];\\n\\n // File header found, end parsing diff metadata\\n if (/^(\\\\-\\\\-\\\\-|\\\\+\\\\+\\\\+|@@)\\\\s/.test(line)) {\\n break;\\n }\\n\\n // Diff index\\n var header = /^(?:Index:|diff(?: -r \\\\w+)+)\\\\s+(.+?)\\\\s*$/.exec(line);\\n if (header) {\\n index.index = header[1];\\n }\\n\\n i++;\\n }\\n\\n // Parse file headers if they are defined. Unified diff requires them, but\\n // there's no technical issues to have an isolated hunk without file header\\n parseFileHeader(index);\\n parseFileHeader(index);\\n\\n // Parse hunks\\n index.hunks = [];\\n\\n while (i < diffstr.length) {\\n var _line = diffstr[i];\\n\\n if (/^(Index:|diff|\\\\-\\\\-\\\\-|\\\\+\\\\+\\\\+)\\\\s/.test(_line)) {\\n break;\\n } else if (/^@@/.test(_line)) {\\n index.hunks.push(parseHunk());\\n } else if (_line && options.strict) {\\n // Ignore unexpected content unless in strict mode\\n throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\\n } else {\\n i++;\\n }\\n }\\n }\\n\\n // Parses the --- and +++ headers, if none are found, no lines\\n // are consumed.\\n function parseFileHeader(index) {\\n var headerPattern = /^(---|\\\\+\\\\+\\\\+)\\\\s+([\\\\S ]*)(?:\\\\t(.*?)\\\\s*)?$/;\\n var fileHeader = headerPattern.exec(diffstr[i]);\\n if (fileHeader) {\\n var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\\n index[keyPrefix + 'FileName'] = fileHeader[2];\\n index[keyPrefix + 'Header'] = fileHeader[3];\\n\\n i++;\\n }\\n }\\n\\n // Parses a hunk\\n // This assumes that we are at the start of a hunk.\\n function parseHunk() {\\n var chunkHeaderIndex = i,\\n chunkHeaderLine = diffstr[i++],\\n chunkHeader = chunkHeaderLine.split(/@@ -(\\\\d+)(?:,(\\\\d+))? \\\\+(\\\\d+)(?:,(\\\\d+))? @@/);\\n\\n var hunk = {\\n oldStart: +chunkHeader[1],\\n oldLines: +chunkHeader[2] || 1,\\n newStart: +chunkHeader[3],\\n newLines: +chunkHeader[4] || 1,\\n lines: [],\\n linedelimiters: []\\n };\\n\\n var addCount = 0,\\n removeCount = 0;\\n for (; i < diffstr.length; i++) {\\n // Lines starting with '---' could be mistaken for the \\\"remove line\\\" operation\\n // But they could be the header for the next file. Therefore prune such cases out.\\n if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {\\n break;\\n }\\n var operation = diffstr[i][0];\\n\\n if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\\\\\') {\\n hunk.lines.push(diffstr[i]);\\n hunk.linedelimiters.push(delimiters[i] || '\\\\n');\\n\\n if (operation === '+') {\\n addCount++;\\n } else if (operation === '-') {\\n removeCount++;\\n } else if (operation === ' ') {\\n addCount++;\\n removeCount++;\\n }\\n } else {\\n break;\\n }\\n }\\n\\n // Handle the empty block count case\\n if (!addCount && hunk.newLines === 1) {\\n hunk.newLines = 0;\\n }\\n if (!removeCount && hunk.oldLines === 1) {\\n hunk.oldLines = 0;\\n }\\n\\n // Perform optional sanity checking\\n if (options.strict) {\\n if (addCount !== hunk.newLines) {\\n throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\\n }\\n if (removeCount !== hunk.oldLines) {\\n throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\\n }\\n }\\n\\n return hunk;\\n }\\n\\n while (i < diffstr.length) {\\n parseIndex();\\n }\\n\\n return list;\\n}\\n\\n\\n},{}],60:[function(require,module,exports){\\n/*istanbul ignore start*/\\\"use strict\\\";\\n\\nexports.__esModule = true;\\n\\nexports[\\\"default\\\"] = /*istanbul ignore end*/function (start, minLine, maxLine) {\\n var wantForward = true,\\n backwardExhausted = false,\\n forwardExhausted = false,\\n localOffset = 1;\\n\\n return function iterator() {\\n if (wantForward && !forwardExhausted) {\\n if (backwardExhausted) {\\n localOffset++;\\n } else {\\n wantForward = false;\\n }\\n\\n // Check if trying to fit beyond text length, and if not, check it fits\\n // after offset location (or desired location on first iteration)\\n if (start + localOffset <= maxLine) {\\n return localOffset;\\n }\\n\\n forwardExhausted = true;\\n }\\n\\n if (!backwardExhausted) {\\n if (!forwardExhausted) {\\n wantForward = true;\\n }\\n\\n // Check if trying to fit before text beginning, and if not, check it fits\\n // before offset location\\n if (minLine <= start - localOffset) {\\n return -localOffset++;\\n }\\n\\n backwardExhausted = true;\\n return iterator();\\n }\\n\\n // We tried to fit hunk before text beginning and beyond text lenght, then\\n // hunk can't fit on the text. Return undefined\\n };\\n};\\n\\n\\n},{}],61:[function(require,module,exports){\\n/*istanbul ignore start*/'use strict';\\n\\nexports.__esModule = true;\\nexports. /*istanbul ignore end*/generateOptions = generateOptions;\\nfunction generateOptions(options, defaults) {\\n if (typeof options === 'function') {\\n defaults.callback = options;\\n } else if (options) {\\n for (var name in options) {\\n /* istanbul ignore else */\\n if (options.hasOwnProperty(name)) {\\n defaults[name] = options[name];\\n }\\n }\\n }\\n return defaults;\\n}\\n\\n\\n},{}],62:[function(require,module,exports){\\n'use strict';\\n\\nvar matchOperatorsRe = /[|\\\\\\\\{}()[\\\\]^$+*?.]/g;\\n\\nmodule.exports = function (str) {\\n\\tif (typeof str !== 'string') {\\n\\t\\tthrow new TypeError('Expected a string');\\n\\t}\\n\\n\\treturn str.replace(matchOperatorsRe, '\\\\\\\\$&');\\n};\\n\\n},{}],63:[function(require,module,exports){\\n// Copyright Joyent, Inc. and other Node contributors.\\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a\\n// copy of this software and associated documentation files (the\\n// \\\"Software\\\"), to deal in the Software without restriction, including\\n// without limitation the rights to use, copy, modify, merge, publish,\\n// distribute, sublicense, and/or sell copies of the Software, and to permit\\n// persons to whom the Software is furnished to do so, subject to the\\n// following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included\\n// in all copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\nfunction EventEmitter() {\\n this._events = this._events || {};\\n this._maxListeners = this._maxListeners || undefined;\\n}\\nmodule.exports = EventEmitter;\\n\\n// Backwards-compat with node 0.10.x\\nEventEmitter.EventEmitter = EventEmitter;\\n\\nEventEmitter.prototype._events = undefined;\\nEventEmitter.prototype._maxListeners = undefined;\\n\\n// By default EventEmitters will print a warning if more than 10 listeners are\\n// added to it. This is a useful default which helps finding memory leaks.\\nEventEmitter.defaultMaxListeners = 10;\\n\\n// Obviously not all Emitters should be limited to 10. This function allows\\n// that to be increased. Set to zero for unlimited.\\nEventEmitter.prototype.setMaxListeners = function(n) {\\n if (!isNumber(n) || n < 0 || isNaN(n))\\n throw TypeError('n must be a positive number');\\n this._maxListeners = n;\\n return this;\\n};\\n\\nEventEmitter.prototype.emit = function(type) {\\n var er, handler, len, args, i, listeners;\\n\\n if (!this._events)\\n this._events = {};\\n\\n // If there is no 'error' event listener then throw.\\n if (type === 'error') {\\n if (!this._events.error ||\\n (isObject(this._events.error) && !this._events.error.length)) {\\n er = arguments[1];\\n if (er instanceof Error) {\\n throw er; // Unhandled 'error' event\\n } else {\\n // At least give some kind of context to the user\\n var err = new Error('Uncaught, unspecified \\\"error\\\" event. (' + er + ')');\\n err.context = er;\\n throw err;\\n }\\n }\\n }\\n\\n handler = this._events[type];\\n\\n if (isUndefined(handler))\\n return false;\\n\\n if (isFunction(handler)) {\\n switch (arguments.length) {\\n // fast cases\\n case 1:\\n handler.call(this);\\n break;\\n case 2:\\n handler.call(this, arguments[1]);\\n break;\\n case 3:\\n handler.call(this, arguments[1], arguments[2]);\\n break;\\n // slower\\n default:\\n args = Array.prototype.slice.call(arguments, 1);\\n handler.apply(this, args);\\n }\\n } else if (isObject(handler)) {\\n args = Array.prototype.slice.call(arguments, 1);\\n listeners = handler.slice();\\n len = listeners.length;\\n for (i = 0; i < len; i++)\\n listeners[i].apply(this, args);\\n }\\n\\n return true;\\n};\\n\\nEventEmitter.prototype.addListener = function(type, listener) {\\n var m;\\n\\n if (!isFunction(listener))\\n throw TypeError('listener must be a function');\\n\\n if (!this._events)\\n this._events = {};\\n\\n // To avoid recursion in the case that type === \\\"newListener\\\"! Before\\n // adding it to the listeners, first emit \\\"newListener\\\".\\n if (this._events.newListener)\\n this.emit('newListener', type,\\n isFunction(listener.listener) ?\\n listener.listener : listener);\\n\\n if (!this._events[type])\\n // Optimize the case of one listener. Don't need the extra array object.\\n this._events[type] = listener;\\n else if (isObject(this._events[type]))\\n // If we've already got an array, just append.\\n this._events[type].push(listener);\\n else\\n // Adding the second element, need to change to array.\\n this._events[type] = [this._events[type], listener];\\n\\n // Check for listener leak\\n if (isObject(this._events[type]) && !this._events[type].warned) {\\n if (!isUndefined(this._maxListeners)) {\\n m = this._maxListeners;\\n } else {\\n m = EventEmitter.defaultMaxListeners;\\n }\\n\\n if (m && m > 0 && this._events[type].length > m) {\\n this._events[type].warned = true;\\n console.error('(node) warning: possible EventEmitter memory ' +\\n 'leak detected. %d listeners added. ' +\\n 'Use emitter.setMaxListeners() to increase limit.',\\n this._events[type].length);\\n if (typeof console.trace === 'function') {\\n // not supported in IE 10\\n console.trace();\\n }\\n }\\n }\\n\\n return this;\\n};\\n\\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\\n\\nEventEmitter.prototype.once = function(type, listener) {\\n if (!isFunction(listener))\\n throw TypeError('listener must be a function');\\n\\n var fired = false;\\n\\n function g() {\\n this.removeListener(type, g);\\n\\n if (!fired) {\\n fired = true;\\n listener.apply(this, arguments);\\n }\\n }\\n\\n g.listener = listener;\\n this.on(type, g);\\n\\n return this;\\n};\\n\\n// emits a 'removeListener' event iff the listener was removed\\nEventEmitter.prototype.removeListener = function(type, listener) {\\n var list, position, length, i;\\n\\n if (!isFunction(listener))\\n throw TypeError('listener must be a function');\\n\\n if (!this._events || !this._events[type])\\n return this;\\n\\n list = this._events[type];\\n length = list.length;\\n position = -1;\\n\\n if (list === listener ||\\n (isFunction(list.listener) && list.listener === listener)) {\\n delete this._events[type];\\n if (this._events.removeListener)\\n this.emit('removeListener', type, listener);\\n\\n } else if (isObject(list)) {\\n for (i = length; i-- > 0;) {\\n if (list[i] === listener ||\\n (list[i].listener && list[i].listener === listener)) {\\n position = i;\\n break;\\n }\\n }\\n\\n if (position < 0)\\n return this;\\n\\n if (list.length === 1) {\\n list.length = 0;\\n delete this._events[type];\\n } else {\\n list.splice(position, 1);\\n }\\n\\n if (this._events.removeListener)\\n this.emit('removeListener', type, listener);\\n }\\n\\n return this;\\n};\\n\\nEventEmitter.prototype.removeAllListeners = function(type) {\\n var key, listeners;\\n\\n if (!this._events)\\n return this;\\n\\n // not listening for removeListener, no need to emit\\n if (!this._events.removeListener) {\\n if (arguments.length === 0)\\n this._events = {};\\n else if (this._events[type])\\n delete this._events[type];\\n return this;\\n }\\n\\n // emit removeListener for all listeners on all events\\n if (arguments.length === 0) {\\n for (key in this._events) {\\n if (key === 'removeListener') continue;\\n this.removeAllListeners(key);\\n }\\n this.removeAllListeners('removeListener');\\n this._events = {};\\n return this;\\n }\\n\\n listeners = this._events[type];\\n\\n if (isFunction(listeners)) {\\n this.removeListener(type, listeners);\\n } else if (listeners) {\\n // LIFO order\\n while (listeners.length)\\n this.removeListener(type, listeners[listeners.length - 1]);\\n }\\n delete this._events[type];\\n\\n return this;\\n};\\n\\nEventEmitter.prototype.listeners = function(type) {\\n var ret;\\n if (!this._events || !this._events[type])\\n ret = [];\\n else if (isFunction(this._events[type]))\\n ret = [this._events[type]];\\n else\\n ret = this._events[type].slice();\\n return ret;\\n};\\n\\nEventEmitter.prototype.listenerCount = function(type) {\\n if (this._events) {\\n var evlistener = this._events[type];\\n\\n if (isFunction(evlistener))\\n return 1;\\n else if (evlistener)\\n return evlistener.length;\\n }\\n return 0;\\n};\\n\\nEventEmitter.listenerCount = function(emitter, type) {\\n return emitter.listenerCount(type);\\n};\\n\\nfunction isFunction(arg) {\\n return typeof arg === 'function';\\n}\\n\\nfunction isNumber(arg) {\\n return typeof arg === 'number';\\n}\\n\\nfunction isObject(arg) {\\n return typeof arg === 'object' && arg !== null;\\n}\\n\\nfunction isUndefined(arg) {\\n return arg === void 0;\\n}\\n\\n},{}],64:[function(require,module,exports){\\n(function (process){\\n// Growl - Copyright TJ Holowaychuk <tj@vision-media.ca> (MIT Licensed)\\n\\n/**\\n * Module dependencies.\\n */\\n\\nvar exec = require('child_process').exec\\n , fs = require('fs')\\n , path = require('path')\\n , exists = fs.existsSync || path.existsSync\\n , os = require('os')\\n , quote = JSON.stringify\\n , cmd;\\n\\nfunction which(name) {\\n var paths = process.env.PATH.split(':');\\n var loc;\\n\\n for (var i = 0, len = paths.length; i < len; ++i) {\\n loc = path.join(paths[i], name);\\n if (exists(loc)) return loc;\\n }\\n}\\n\\nswitch(os.type()) {\\n case 'Darwin':\\n if (which('terminal-notifier')) {\\n cmd = {\\n type: \\\"Darwin-NotificationCenter\\\"\\n , pkg: \\\"terminal-notifier\\\"\\n , msg: '-message'\\n , title: '-title'\\n , subtitle: '-subtitle'\\n , icon: '-appIcon'\\n , sound: '-sound'\\n , url: '-open'\\n , priority: {\\n cmd: '-execute'\\n , range: []\\n }\\n };\\n } else {\\n cmd = {\\n type: \\\"Darwin-Growl\\\"\\n , pkg: \\\"growlnotify\\\"\\n , msg: '-m'\\n , sticky: '--sticky'\\n , priority: {\\n cmd: '--priority'\\n , range: [\\n -2\\n , -1\\n , 0\\n , 1\\n , 2\\n , \\\"Very Low\\\"\\n , \\\"Moderate\\\"\\n , \\\"Normal\\\"\\n , \\\"High\\\"\\n , \\\"Emergency\\\"\\n ]\\n }\\n };\\n }\\n break;\\n case 'Linux':\\n if (which('growl')) {\\n cmd = {\\n type: \\\"Linux-Growl\\\"\\n , pkg: \\\"growl\\\"\\n , msg: '-m'\\n , title: '-title'\\n , subtitle: '-subtitle'\\n , host: {\\n cmd: '-H'\\n , hostname: '192.168.33.1'\\n }\\n };\\n } else {\\n cmd = {\\n type: \\\"Linux\\\"\\n , pkg: \\\"notify-send\\\"\\n , msg: ''\\n , sticky: '-t 0'\\n , icon: '-i'\\n , priority: {\\n cmd: '-u'\\n , range: [\\n \\\"low\\\"\\n , \\\"normal\\\"\\n , \\\"critical\\\"\\n ]\\n }\\n };\\n }\\n break;\\n case 'Windows_NT':\\n cmd = {\\n type: \\\"Windows\\\"\\n , pkg: \\\"growlnotify\\\"\\n , msg: ''\\n , sticky: '/s:true'\\n , title: '/t:'\\n , icon: '/i:'\\n , url: '/cu:'\\n , priority: {\\n cmd: '/p:'\\n , range: [\\n -2\\n , -1\\n , 0\\n , 1\\n , 2\\n ]\\n }\\n };\\n break;\\n}\\n\\n/**\\n * Expose `growl`.\\n */\\n\\nexports = module.exports = growl;\\n\\n/**\\n * Node-growl version.\\n */\\n\\nexports.version = '1.4.1'\\n\\n/**\\n * Send growl notification _msg_ with _options_.\\n *\\n * Options:\\n *\\n * - title Notification title\\n * - sticky Make the notification stick (defaults to false)\\n * - priority Specify an int or named key (default is 0)\\n * - name Application name (defaults to growlnotify)\\n * - sound Sound efect ( in OSx defined in preferences -> sound -> effects) * works only in OSX > 10.8x\\n * - image\\n * - path to an icon sets --iconpath\\n * - path to an image sets --image\\n * - capitalized word sets --appIcon\\n * - filename uses extname as --icon\\n * - otherwise treated as --icon\\n *\\n * Examples:\\n *\\n * growl('New email')\\n * growl('5 new emails', { title: 'Thunderbird' })\\n * growl('5 new emails', { title: 'Thunderbird', sound: 'Purr' })\\n * growl('Email sent', function(){\\n * // ... notification sent\\n * })\\n *\\n * @param {string} msg\\n * @param {object} options\\n * @param {function} fn\\n * @api public\\n */\\n\\nfunction growl(msg, options, fn) {\\n var image\\n , args\\n , options = options || {}\\n , fn = fn || function(){};\\n\\n if (options.exec) {\\n cmd = {\\n type: \\\"Custom\\\"\\n , pkg: options.exec\\n , range: []\\n };\\n }\\n\\n // noop\\n if (!cmd) return fn(new Error('growl not supported on this platform'));\\n args = [cmd.pkg];\\n\\n // image\\n if (image = options.image) {\\n switch(cmd.type) {\\n case 'Darwin-Growl':\\n var flag, ext = path.extname(image).substr(1)\\n flag = flag || ext == 'icns' && 'iconpath'\\n flag = flag || /^[A-Z]/.test(image) && 'appIcon'\\n flag = flag || /^png|gif|jpe?g$/.test(ext) && 'image'\\n flag = flag || ext && (image = ext) && 'icon'\\n flag = flag || 'icon'\\n args.push('--' + flag, quote(image))\\n break;\\n case 'Darwin-NotificationCenter':\\n args.push(cmd.icon, quote(image));\\n break;\\n case 'Linux':\\n args.push(cmd.icon, quote(image));\\n // libnotify defaults to sticky, set a hint for transient notifications\\n if (!options.sticky) args.push('--hint=int:transient:1');\\n break;\\n case 'Windows':\\n args.push(cmd.icon + quote(image));\\n break;\\n }\\n }\\n\\n // sticky\\n if (options.sticky) args.push(cmd.sticky);\\n\\n // priority\\n if (options.priority) {\\n var priority = options.priority + '';\\n var checkindexOf = cmd.priority.range.indexOf(priority);\\n if (~cmd.priority.range.indexOf(priority)) {\\n args.push(cmd.priority, options.priority);\\n }\\n }\\n\\n //sound\\n if(options.sound && cmd.type === 'Darwin-NotificationCenter'){\\n args.push(cmd.sound, options.sound)\\n }\\n\\n // name\\n if (options.name && cmd.type === \\\"Darwin-Growl\\\") {\\n args.push('--name', options.name);\\n }\\n\\n switch(cmd.type) {\\n case 'Darwin-Growl':\\n args.push(cmd.msg);\\n args.push(quote(msg).replace(/\\\\\\\\n/g, '\\\\n'));\\n if (options.title) args.push(quote(options.title));\\n break;\\n case 'Darwin-NotificationCenter':\\n args.push(cmd.msg);\\n var stringifiedMsg = quote(msg);\\n var escapedMsg = stringifiedMsg.replace(/\\\\\\\\n/g, '\\\\n');\\n args.push(escapedMsg);\\n if (options.title) {\\n args.push(cmd.title);\\n args.push(quote(options.title));\\n }\\n if (options.subtitle) {\\n args.push(cmd.subtitle);\\n args.push(quote(options.subtitle));\\n }\\n if (options.url) {\\n args.push(cmd.url);\\n args.push(quote(options.url));\\n }\\n break;\\n case 'Linux-Growl':\\n args.push(cmd.msg);\\n args.push(quote(msg).replace(/\\\\\\\\n/g, '\\\\n'));\\n if (options.title) args.push(quote(options.title));\\n if (cmd.host) {\\n args.push(cmd.host.cmd, cmd.host.hostname)\\n }\\n break;\\n case 'Linux':\\n if (options.title) {\\n args.push(quote(options.title));\\n args.push(cmd.msg);\\n args.push(quote(msg).replace(/\\\\\\\\n/g, '\\\\n'));\\n } else {\\n args.push(quote(msg).replace(/\\\\\\\\n/g, '\\\\n'));\\n }\\n break;\\n case 'Windows':\\n args.push(quote(msg).replace(/\\\\\\\\n/g, '\\\\n'));\\n if (options.title) args.push(cmd.title + quote(options.title));\\n if (options.url) args.push(cmd.url + quote(options.url));\\n break;\\n case 'Custom':\\n args[0] = (function(origCommand) {\\n var message = options.title\\n ? options.title + ': ' + msg\\n : msg;\\n var command = origCommand.replace(/(^|[^%])%s/g, '$1' + quote(message));\\n if (command === origCommand) args.push(quote(message));\\n return command;\\n })(args[0]);\\n break;\\n }\\n\\n // execute\\n exec(args.join(' '), fn);\\n};\\n\\n}).call(this,require('_process'))\\n},{\\\"_process\\\":82,\\\"child_process\\\":42,\\\"fs\\\":42,\\\"os\\\":80,\\\"path\\\":42}],65:[function(require,module,exports){\\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\\n var e, m\\n var eLen = nBytes * 8 - mLen - 1\\n var eMax = (1 << eLen) - 1\\n var eBias = eMax >> 1\\n var nBits = -7\\n var i = isLE ? (nBytes - 1) : 0\\n var d = isLE ? -1 : 1\\n var s = buffer[offset + i]\\n\\n i += d\\n\\n e = s & ((1 << (-nBits)) - 1)\\n s >>= (-nBits)\\n nBits += eLen\\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\\n\\n m = e & ((1 << (-nBits)) - 1)\\n e >>= (-nBits)\\n nBits += mLen\\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\\n\\n if (e === 0) {\\n e = 1 - eBias\\n } else if (e === eMax) {\\n return m ? NaN : ((s ? -1 : 1) * Infinity)\\n } else {\\n m = m + Math.pow(2, mLen)\\n e = e - eBias\\n }\\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\\n}\\n\\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\\n var e, m, c\\n var eLen = nBytes * 8 - mLen - 1\\n var eMax = (1 << eLen) - 1\\n var eBias = eMax >> 1\\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\\n var i = isLE ? 0 : (nBytes - 1)\\n var d = isLE ? 1 : -1\\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\\n\\n value = Math.abs(value)\\n\\n if (isNaN(value) || value === Infinity) {\\n m = isNaN(value) ? 1 : 0\\n e = eMax\\n } else {\\n e = Math.floor(Math.log(value) / Math.LN2)\\n if (value * (c = Math.pow(2, -e)) < 1) {\\n e--\\n c *= 2\\n }\\n if (e + eBias >= 1) {\\n value += rt / c\\n } else {\\n value += rt * Math.pow(2, 1 - eBias)\\n }\\n if (value * c >= 2) {\\n e++\\n c /= 2\\n }\\n\\n if (e + eBias >= eMax) {\\n m = 0\\n e = eMax\\n } else if (e + eBias >= 1) {\\n m = (value * c - 1) * Math.pow(2, mLen)\\n e = e + eBias\\n } else {\\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\\n e = 0\\n }\\n }\\n\\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\\n\\n e = (e << mLen) | m\\n eLen += mLen\\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\\n\\n buffer[offset + i - d] |= s * 128\\n}\\n\\n},{}],66:[function(require,module,exports){\\nif (typeof Object.create === 'function') {\\n // implementation from standard node.js 'util' module\\n module.exports = function inherits(ctor, superCtor) {\\n ctor.super_ = superCtor\\n ctor.prototype = Object.create(superCtor.prototype, {\\n constructor: {\\n value: ctor,\\n enumerable: false,\\n writable: true,\\n configurable: true\\n }\\n });\\n };\\n} else {\\n // old school shim for old browsers\\n module.exports = function inherits(ctor, superCtor) {\\n ctor.super_ = superCtor\\n var TempCtor = function () {}\\n TempCtor.prototype = superCtor.prototype\\n ctor.prototype = new TempCtor()\\n ctor.prototype.constructor = ctor\\n }\\n}\\n\\n},{}],67:[function(require,module,exports){\\n/*!\\n * Determine if an object is a Buffer\\n *\\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\\n * @license MIT\\n */\\n\\n// The _isBuffer check is for Safari 5-7 support, because it's missing\\n// Object.prototype.constructor. Remove this eventually\\nmodule.exports = function (obj) {\\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\\n}\\n\\nfunction isBuffer (obj) {\\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\\n}\\n\\n// For Node v0.10 support. Remove this eventually.\\nfunction isSlowBuffer (obj) {\\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\\n}\\n\\n},{}],68:[function(require,module,exports){\\nvar toString = {}.toString;\\n\\nmodule.exports = Array.isArray || function (arr) {\\n return toString.call(arr) == '[object Array]';\\n};\\n\\n},{}],69:[function(require,module,exports){\\n(function (global){\\n/*! JSON v3.3.2 | http://bestiejs.github.io/json3 | Copyright 2012-2014, Kit Cambridge | http://kit.mit-license.org */\\n;(function () {\\n // Detect the `define` function exposed by asynchronous module loaders. The\\n // strict `define` check is necessary for compatibility with `r.js`.\\n var isLoader = false;\\n\\n // A set of types used to distinguish objects from primitives.\\n var objectTypes = {\\n \\\"function\\\": true,\\n \\\"object\\\": true\\n };\\n\\n // Detect the `exports` object exposed by CommonJS implementations.\\n var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;\\n\\n // Use the `global` object exposed by Node (including Browserify via\\n // `insert-module-globals`), Narwhal, and Ringo as the default context,\\n // and the `window` object in browsers. Rhino exports a `global` function\\n // instead.\\n var root = objectTypes[typeof window] && window || this,\\n freeGlobal = freeExports && objectTypes[typeof module] && module && !module.nodeType && typeof global == \\\"object\\\" && global;\\n\\n if (freeGlobal && (freeGlobal[\\\"global\\\"] === freeGlobal || freeGlobal[\\\"window\\\"] === freeGlobal || freeGlobal[\\\"self\\\"] === freeGlobal)) {\\n root = freeGlobal;\\n }\\n\\n // Public: Initializes JSON 3 using the given `context` object, attaching the\\n // `stringify` and `parse` functions to the specified `exports` object.\\n function runInContext(context, exports) {\\n context || (context = root[\\\"Object\\\"]());\\n exports || (exports = root[\\\"Object\\\"]());\\n\\n // Native constructor aliases.\\n var Number = context[\\\"Number\\\"] || root[\\\"Number\\\"],\\n String = context[\\\"String\\\"] || root[\\\"String\\\"],\\n Object = context[\\\"Object\\\"] || root[\\\"Object\\\"],\\n Date = context[\\\"Date\\\"] || root[\\\"Date\\\"],\\n SyntaxError = context[\\\"SyntaxError\\\"] || root[\\\"SyntaxError\\\"],\\n TypeError = context[\\\"TypeError\\\"] || root[\\\"TypeError\\\"],\\n Math = context[\\\"Math\\\"] || root[\\\"Math\\\"],\\n nativeJSON = context[\\\"JSON\\\"] || root[\\\"JSON\\\"];\\n\\n // Delegate to the native `stringify` and `parse` implementations.\\n if (typeof nativeJSON == \\\"object\\\" && nativeJSON) {\\n exports.stringify = nativeJSON.stringify;\\n exports.parse = nativeJSON.parse;\\n }\\n\\n // Convenience aliases.\\n var objectProto = Object.prototype,\\n getClass = objectProto.toString,\\n isProperty, forEach, undef;\\n\\n // Test the `Date#getUTC*` methods. Based on work by @Yaffle.\\n var isExtended = new Date(-3509827334573292);\\n try {\\n // The `getUTCFullYear`, `Month`, and `Date` methods return nonsensical\\n // results for certain dates in Opera >= 10.53.\\n isExtended = isExtended.getUTCFullYear() == -109252 && isExtended.getUTCMonth() === 0 && isExtended.getUTCDate() === 1 &&\\n // Safari < 2.0.2 stores the internal millisecond time value correctly,\\n // but clips the values returned by the date methods to the range of\\n // signed 32-bit integers ([-2 ** 31, 2 ** 31 - 1]).\\n isExtended.getUTCHours() == 10 && isExtended.getUTCMinutes() == 37 && isExtended.getUTCSeconds() == 6 && isExtended.getUTCMilliseconds() == 708;\\n } catch (exception) {}\\n\\n // Internal: Determines whether the native `JSON.stringify` and `parse`\\n // implementations are spec-compliant. Based on work by Ken Snyder.\\n function has(name) {\\n if (has[name] !== undef) {\\n // Return cached feature test result.\\n return has[name];\\n }\\n var isSupported;\\n if (name == \\\"bug-string-char-index\\\") {\\n // IE <= 7 doesn't support accessing string characters using square\\n // bracket notation. IE 8 only supports this for primitives.\\n isSupported = \\\"a\\\"[0] != \\\"a\\\";\\n } else if (name == \\\"json\\\") {\\n // Indicates whether both `JSON.stringify` and `JSON.parse` are\\n // supported.\\n isSupported = has(\\\"json-stringify\\\") && has(\\\"json-parse\\\");\\n } else {\\n var value, serialized = '{\\\"a\\\":[1,true,false,null,\\\"\\\\\\\\u0000\\\\\\\\b\\\\\\\\n\\\\\\\\f\\\\\\\\r\\\\\\\\t\\\"]}';\\n // Test `JSON.stringify`.\\n if (name == \\\"json-stringify\\\") {\\n var stringify = exports.stringify, stringifySupported = typeof stringify == \\\"function\\\" && isExtended;\\n if (stringifySupported) {\\n // A test function object with a custom `toJSON` method.\\n (value = function () {\\n return 1;\\n }).toJSON = value;\\n try {\\n stringifySupported =\\n // Firefox 3.1b1 and b2 serialize string, number, and boolean\\n // primitives as object literals.\\n stringify(0) === \\\"0\\\" &&\\n // FF 3.1b1, b2, and JSON 2 serialize wrapped primitives as object\\n // literals.\\n stringify(new Number()) === \\\"0\\\" &&\\n stringify(new String()) == '\\\"\\\"' &&\\n // FF 3.1b1, 2 throw an error if the value is `null`, `undefined`, or\\n // does not define a canonical JSON representation (this applies to\\n // objects with `toJSON` properties as well, *unless* they are nested\\n // within an object or array).\\n stringify(getClass) === undef &&\\n // IE 8 serializes `undefined` as `\\\"undefined\\\"`. Safari <= 5.1.7 and\\n // FF 3.1b3 pass this test.\\n stringify(undef) === undef &&\\n // Safari <= 5.1.7 and FF 3.1b3 throw `Error`s and `TypeError`s,\\n // respectively, if the value is omitted entirely.\\n stringify() === undef &&\\n // FF 3.1b1, 2 throw an error if the given value is not a number,\\n // string, array, object, Boolean, or `null` literal. This applies to\\n // objects with custom `toJSON` methods as well, unless they are nested\\n // inside object or array literals. YUI 3.0.0b1 ignores custom `toJSON`\\n // methods entirely.\\n stringify(value) === \\\"1\\\" &&\\n stringify([value]) == \\\"[1]\\\" &&\\n // Prototype <= 1.6.1 serializes `[undefined]` as `\\\"[]\\\"` instead of\\n // `\\\"[null]\\\"`.\\n stringify([undef]) == \\\"[null]\\\" &&\\n // YUI 3.0.0b1 fails to serialize `null` literals.\\n stringify(null) == \\\"null\\\" &&\\n // FF 3.1b1, 2 halts serialization if an array contains a function:\\n // `[1, true, getClass, 1]` serializes as \\\"[1,true,],\\\". FF 3.1b3\\n // elides non-JSON values from objects and arrays, unless they\\n // define custom `toJSON` methods.\\n stringify([undef, getClass, null]) == \\\"[null,null,null]\\\" &&\\n // Simple serialization test. FF 3.1b1 uses Unicode escape sequences\\n // where character escape codes are expected (e.g., `\\\\b` => `\\\\u0008`).\\n stringify({ \\\"a\\\": [value, true, false, null, \\\"\\\\x00\\\\b\\\\n\\\\f\\\\r\\\\t\\\"] }) == serialized &&\\n // FF 3.1b1 and b2 ignore the `filter` and `width` arguments.\\n stringify(null, value) === \\\"1\\\" &&\\n stringify([1, 2], null, 1) == \\\"[\\\\n 1,\\\\n 2\\\\n]\\\" &&\\n // JSON 2, Prototype <= 1.7, and older WebKit builds incorrectly\\n // serialize extended years.\\n stringify(new Date(-8.64e15)) == '\\\"-271821-04-20T00:00:00.000Z\\\"' &&\\n // The milliseconds are optional in ES 5, but required in 5.1.\\n stringify(new Date(8.64e15)) == '\\\"+275760-09-13T00:00:00.000Z\\\"' &&\\n // Firefox <= 11.0 incorrectly serializes years prior to 0 as negative\\n // four-digit years instead of six-digit years. Credits: @Yaffle.\\n stringify(new Date(-621987552e5)) == '\\\"-000001-01-01T00:00:00.000Z\\\"' &&\\n // Safari <= 5.1.5 and Opera >= 10.53 incorrectly serialize millisecond\\n // values less than 1000. Credits: @Yaffle.\\n stringify(new Date(-1)) == '\\\"1969-12-31T23:59:59.999Z\\\"';\\n } catch (exception) {\\n stringifySupported = false;\\n }\\n }\\n isSupported = stringifySupported;\\n }\\n // Test `JSON.parse`.\\n if (name == \\\"json-parse\\\") {\\n var parse = exports.parse;\\n if (typeof parse == \\\"function\\\") {\\n try {\\n // FF 3.1b1, b2 will throw an exception if a bare literal is provided.\\n // Conforming implementations should also coerce the initial argument to\\n // a string prior to parsing.\\n if (parse(\\\"0\\\") === 0 && !parse(false)) {\\n // Simple parsing test.\\n value = parse(serialized);\\n var parseSupported = value[\\\"a\\\"].length == 5 && value[\\\"a\\\"][0] === 1;\\n if (parseSupported) {\\n try {\\n // Safari <= 5.1.2 and FF 3.1b1 allow unescaped tabs in strings.\\n parseSupported = !parse('\\\"\\\\t\\\"');\\n } catch (exception) {}\\n if (parseSupported) {\\n try {\\n // FF 4.0 and 4.0.1 allow leading `+` signs and leading\\n // decimal points. FF 4.0, 4.0.1, and IE 9-10 also allow\\n // certain octal literals.\\n parseSupported = parse(\\\"01\\\") !== 1;\\n } catch (exception) {}\\n }\\n if (parseSupported) {\\n try {\\n // FF 4.0, 4.0.1, and Rhino 1.7R3-R4 allow trailing decimal\\n // points. These environments, along with FF 3.1b1 and 2,\\n // also allow trailing commas in JSON objects and arrays.\\n parseSupported = parse(\\\"1.\\\") !== 1;\\n } catch (exception) {}\\n }\\n }\\n }\\n } catch (exception) {\\n parseSupported = false;\\n }\\n }\\n isSupported = parseSupported;\\n }\\n }\\n return has[name] = !!isSupported;\\n }\\n\\n if (!has(\\\"json\\\")) {\\n // Common `[[Class]]` name aliases.\\n var functionClass = \\\"[object Function]\\\",\\n dateClass = \\\"[object Date]\\\",\\n numberClass = \\\"[object Number]\\\",\\n stringClass = \\\"[object String]\\\",\\n arrayClass = \\\"[object Array]\\\",\\n booleanClass = \\\"[object Boolean]\\\";\\n\\n // Detect incomplete support for accessing string characters by index.\\n var charIndexBuggy = has(\\\"bug-string-char-index\\\");\\n\\n // Define additional utility methods if the `Date` methods are buggy.\\n if (!isExtended) {\\n var floor = Math.floor;\\n // A mapping between the months of the year and the number of days between\\n // January 1st and the first of the respective month.\\n var Months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\\n // Internal: Calculates the number of days between the Unix epoch and the\\n // first day of the given month.\\n var getDay = function (year, month) {\\n return Months[month] + 365 * (year - 1970) + floor((year - 1969 + (month = +(month > 1))) / 4) - floor((year - 1901 + month) / 100) + floor((year - 1601 + month) / 400);\\n };\\n }\\n\\n // Internal: Determines if a property is a direct property of the given\\n // object. Delegates to the native `Object#hasOwnProperty` method.\\n if (!(isProperty = objectProto.hasOwnProperty)) {\\n isProperty = function (property) {\\n var members = {}, constructor;\\n if ((members.__proto__ = null, members.__proto__ = {\\n // The *proto* property cannot be set multiple times in recent\\n // versions of Firefox and SeaMonkey.\\n \\\"toString\\\": 1\\n }, members).toString != getClass) {\\n // Safari <= 2.0.3 doesn't implement `Object#hasOwnProperty`, but\\n // supports the mutable *proto* property.\\n isProperty = function (property) {\\n // Capture and break the object's prototype chain (see section 8.6.2\\n // of the ES 5.1 spec). The parenthesized expression prevents an\\n // unsafe transformation by the Closure Compiler.\\n var original = this.__proto__, result = property in (this.__proto__ = null, this);\\n // Restore the original prototype chain.\\n this.__proto__ = original;\\n return result;\\n };\\n } else {\\n // Capture a reference to the top-level `Object` constructor.\\n constructor = members.constructor;\\n // Use the `constructor` property to simulate `Object#hasOwnProperty` in\\n // other environments.\\n isProperty = function (property) {\\n var parent = (this.constructor || constructor).prototype;\\n return property in this && !(property in parent && this[property] === parent[property]);\\n };\\n }\\n members = null;\\n return isProperty.call(this, property);\\n };\\n }\\n\\n // Internal: Normalizes the `for...in` iteration algorithm across\\n // environments. Each enumerated key is yielded to a `callback` function.\\n forEach = function (object, callback) {\\n var size = 0, Properties, members, property;\\n\\n // Tests for bugs in the current environment's `for...in` algorithm. The\\n // `valueOf` property inherits the non-enumerable flag from\\n // `Object.prototype` in older versions of IE, Netscape, and Mozilla.\\n (Properties = function () {\\n this.valueOf = 0;\\n }).prototype.valueOf = 0;\\n\\n // Iterate over a new instance of the `Properties` class.\\n members = new Properties();\\n for (property in members) {\\n // Ignore all properties inherited from `Object.prototype`.\\n if (isProperty.call(members, property)) {\\n size++;\\n }\\n }\\n Properties = members = null;\\n\\n // Normalize the iteration algorithm.\\n if (!size) {\\n // A list of non-enumerable properties inherited from `Object.prototype`.\\n members = [\\\"valueOf\\\", \\\"toString\\\", \\\"toLocaleString\\\", \\\"propertyIsEnumerable\\\", \\\"isPrototypeOf\\\", \\\"hasOwnProperty\\\", \\\"constructor\\\"];\\n // IE <= 8, Mozilla 1.0, and Netscape 6.2 ignore shadowed non-enumerable\\n // properties.\\n forEach = function (object, callback) {\\n var isFunction = getClass.call(object) == functionClass, property, length;\\n var hasProperty = !isFunction && typeof object.constructor != \\\"function\\\" && objectTypes[typeof object.hasOwnProperty] && object.hasOwnProperty || isProperty;\\n for (property in object) {\\n // Gecko <= 1.0 enumerates the `prototype` property of functions under\\n // certain conditions; IE does not.\\n if (!(isFunction && property == \\\"prototype\\\") && hasProperty.call(object, property)) {\\n callback(property);\\n }\\n }\\n // Manually invoke the callback for each non-enumerable property.\\n for (length = members.length; property = members[--length]; hasProperty.call(object, property) && callback(property));\\n };\\n } else if (size == 2) {\\n // Safari <= 2.0.4 enumerates shadowed properties twice.\\n forEach = function (object, callback) {\\n // Create a set of iterated properties.\\n var members = {}, isFunction = getClass.call(object) == functionClass, property;\\n for (property in object) {\\n // Store each property name to prevent double enumeration. The\\n // `prototype` property of functions is not enumerated due to cross-\\n // environment inconsistencies.\\n if (!(isFunction && property == \\\"prototype\\\") && !isProperty.call(members, property) && (members[property] = 1) && isProperty.call(object, property)) {\\n callback(property);\\n }\\n }\\n };\\n } else {\\n // No bugs detected; use the standard `for...in` algorithm.\\n forEach = function (object, callback) {\\n var isFunction = getClass.call(object) == functionClass, property, isConstructor;\\n for (property in object) {\\n if (!(isFunction && property == \\\"prototype\\\") && isProperty.call(object, property) && !(isConstructor = property === \\\"constructor\\\")) {\\n callback(property);\\n }\\n }\\n // Manually invoke the callback for the `constructor` property due to\\n // cross-environment inconsistencies.\\n if (isConstructor || isProperty.call(object, (property = \\\"constructor\\\"))) {\\n callback(property);\\n }\\n };\\n }\\n return forEach(object, callback);\\n };\\n\\n // Public: Serializes a JavaScript `value` as a JSON string. The optional\\n // `filter` argument may specify either a function that alters how object and\\n // array members are serialized, or an array of strings and numbers that\\n // indicates which properties should be serialized. The optional `width`\\n // argument may be either a string or number that specifies the indentation\\n // level of the output.\\n if (!has(\\\"json-stringify\\\")) {\\n // Internal: A map of control characters and their escaped equivalents.\\n var Escapes = {\\n 92: \\\"\\\\\\\\\\\\\\\\\\\",\\n 34: '\\\\\\\\\\\"',\\n 8: \\\"\\\\\\\\b\\\",\\n 12: \\\"\\\\\\\\f\\\",\\n 10: \\\"\\\\\\\\n\\\",\\n 13: \\\"\\\\\\\\r\\\",\\n 9: \\\"\\\\\\\\t\\\"\\n };\\n\\n // Internal: Converts `value` into a zero-padded string such that its\\n // length is at least equal to `width`. The `width` must be <= 6.\\n var leadingZeroes = \\\"000000\\\";\\n var toPaddedString = function (width, value) {\\n // The `|| 0` expression is necessary to work around a bug in\\n // Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== \\\"0\\\"`.\\n return (leadingZeroes + (value || 0)).slice(-width);\\n };\\n\\n // Internal: Double-quotes a string `value`, replacing all ASCII control\\n // characters (characters with code unit values between 0 and 31) with\\n // their escaped equivalents. This is an implementation of the\\n // `Quote(value)` operation defined in ES 5.1 section 15.12.3.\\n var unicodePrefix = \\\"\\\\\\\\u00\\\";\\n var quote = function (value) {\\n var result = '\\\"', index = 0, length = value.length, useCharIndex = !charIndexBuggy || length > 10;\\n var symbols = useCharIndex && (charIndexBuggy ? value.split(\\\"\\\") : value);\\n for (; index < length; index++) {\\n var charCode = value.charCodeAt(index);\\n // If the character is a control character, append its Unicode or\\n // shorthand escape sequence; otherwise, append the character as-is.\\n switch (charCode) {\\n case 8: case 9: case 10: case 12: case 13: case 34: case 92:\\n result += Escapes[charCode];\\n break;\\n default:\\n if (charCode < 32) {\\n result += unicodePrefix + toPaddedString(2, charCode.toString(16));\\n break;\\n }\\n result += useCharIndex ? symbols[index] : value.charAt(index);\\n }\\n }\\n return result + '\\\"';\\n };\\n\\n // Internal: Recursively serializes an object. Implements the\\n // `Str(key, holder)`, `JO(value)`, and `JA(value)` operations.\\n var serialize = function (property, object, callback, properties, whitespace, indentation, stack) {\\n var value, className, year, month, date, time, hours, minutes, seconds, milliseconds, results, element, index, length, prefix, result;\\n try {\\n // Necessary for host object support.\\n value = object[property];\\n } catch (exception) {}\\n if (typeof value == \\\"object\\\" && value) {\\n className = getClass.call(value);\\n if (className == dateClass && !isProperty.call(value, \\\"toJSON\\\")) {\\n if (value > -1 / 0 && value < 1 / 0) {\\n // Dates are serialized according to the `Date#toJSON` method\\n // specified in ES 5.1 section 15.9.5.44. See section 15.9.1.15\\n // for the ISO 8601 date time string format.\\n if (getDay) {\\n // Manually compute the year, month, date, hours, minutes,\\n // seconds, and milliseconds if the `getUTC*` methods are\\n // buggy. Adapted from @Yaffle's `date-shim` project.\\n date = floor(value / 864e5);\\n for (year = floor(date / 365.2425) + 1970 - 1; getDay(year + 1, 0) <= date; year++);\\n for (month = floor((date - getDay(year, 0)) / 30.42); getDay(year, month + 1) <= date; month++);\\n date = 1 + date - getDay(year, month);\\n // The `time` value specifies the time within the day (see ES\\n // 5.1 section 15.9.1.2). The formula `(A % B + B) % B` is used\\n // to compute `A modulo B`, as the `%` operator does not\\n // correspond to the `modulo` operation for negative numbers.\\n time = (value % 864e5 + 864e5) % 864e5;\\n // The hours, minutes, seconds, and milliseconds are obtained by\\n // decomposing the time within the day. See section 15.9.1.10.\\n hours = floor(time / 36e5) % 24;\\n minutes = floor(time / 6e4) % 60;\\n seconds = floor(time / 1e3) % 60;\\n milliseconds = time % 1e3;\\n } else {\\n year = value.getUTCFullYear();\\n month = value.getUTCMonth();\\n date = value.getUTCDate();\\n hours = value.getUTCHours();\\n minutes = value.getUTCMinutes();\\n seconds = value.getUTCSeconds();\\n milliseconds = value.getUTCMilliseconds();\\n }\\n // Serialize extended years correctly.\\n value = (year <= 0 || year >= 1e4 ? (year < 0 ? \\\"-\\\" : \\\"+\\\") + toPaddedString(6, year < 0 ? -year : year) : toPaddedString(4, year)) +\\n \\\"-\\\" + toPaddedString(2, month + 1) + \\\"-\\\" + toPaddedString(2, date) +\\n // Months, dates, hours, minutes, and seconds should have two\\n // digits; milliseconds should have three.\\n \\\"T\\\" + toPaddedString(2, hours) + \\\":\\\" + toPaddedString(2, minutes) + \\\":\\\" + toPaddedString(2, seconds) +\\n // Milliseconds are optional in ES 5.0, but required in 5.1.\\n \\\".\\\" + toPaddedString(3, milliseconds) + \\\"Z\\\";\\n } else {\\n value = null;\\n }\\n } else if (typeof value.toJSON == \\\"function\\\" && ((className != numberClass && className != stringClass && className != arrayClass) || isProperty.call(value, \\\"toJSON\\\"))) {\\n // Prototype <= 1.6.1 adds non-standard `toJSON` methods to the\\n // `Number`, `String`, `Date`, and `Array` prototypes. JSON 3\\n // ignores all `toJSON` methods on these objects unless they are\\n // defined directly on an instance.\\n value = value.toJSON(property);\\n }\\n }\\n if (callback) {\\n // If a replacement function was provided, call it to obtain the value\\n // for serialization.\\n value = callback.call(object, property, value);\\n }\\n if (value === null) {\\n return \\\"null\\\";\\n }\\n className = getClass.call(value);\\n if (className == booleanClass) {\\n // Booleans are represented literally.\\n return \\\"\\\" + value;\\n } else if (className == numberClass) {\\n // JSON numbers must be finite. `Infinity` and `NaN` are serialized as\\n // `\\\"null\\\"`.\\n return value > -1 / 0 && value < 1 / 0 ? \\\"\\\" + value : \\\"null\\\";\\n } else if (className == stringClass) {\\n // Strings are double-quoted and escaped.\\n return quote(\\\"\\\" + value);\\n }\\n // Recursively serialize objects and arrays.\\n if (typeof value == \\\"object\\\") {\\n // Check for cyclic structures. This is a linear search; performance\\n // is inversely proportional to the number of unique nested objects.\\n for (length = stack.length; length--;) {\\n if (stack[length] === value) {\\n // Cyclic structures cannot be serialized by `JSON.stringify`.\\n throw TypeError();\\n }\\n }\\n // Add the object to the stack of traversed objects.\\n stack.push(value);\\n results = [];\\n // Save the current indentation level and indent one additional level.\\n prefix = indentation;\\n indentation += whitespace;\\n if (className == arrayClass) {\\n // Recursively serialize array elements.\\n for (index = 0, length = value.length; index < length; index++) {\\n element = serialize(index, value, callback, properties, whitespace, indentation, stack);\\n results.push(element === undef ? \\\"null\\\" : element);\\n }\\n result = results.length ? (whitespace ? \\\"[\\\\n\\\" + indentation + results.join(\\\",\\\\n\\\" + indentation) + \\\"\\\\n\\\" + prefix + \\\"]\\\" : (\\\"[\\\" + results.join(\\\",\\\") + \\\"]\\\")) : \\\"[]\\\";\\n } else {\\n // Recursively serialize object members. Members are selected from\\n // either a user-specified list of property names, or the object\\n // itself.\\n forEach(properties || value, function (property) {\\n var element = serialize(property, value, callback, properties, whitespace, indentation, stack);\\n if (element !== undef) {\\n // According to ES 5.1 section 15.12.3: \\\"If `gap` {whitespace}\\n // is not the empty string, let `member` {quote(property) + \\\":\\\"}\\n // be the concatenation of `member` and the `space` character.\\\"\\n // The \\\"`space` character\\\" refers to the literal space\\n // character, not the `space` {width} argument provided to\\n // `JSON.stringify`.\\n results.push(quote(property) + \\\":\\\" + (whitespace ? \\\" \\\" : \\\"\\\") + element);\\n }\\n });\\n result = results.length ? (whitespace ? \\\"{\\\\n\\\" + indentation + results.join(\\\",\\\\n\\\" + indentation) + \\\"\\\\n\\\" + prefix + \\\"}\\\" : (\\\"{\\\" + results.join(\\\",\\\") + \\\"}\\\")) : \\\"{}\\\";\\n }\\n // Remove the object from the traversed object stack.\\n stack.pop();\\n return result;\\n }\\n };\\n\\n // Public: `JSON.stringify`. See ES 5.1 section 15.12.3.\\n exports.stringify = function (source, filter, width) {\\n var whitespace, callback, properties, className;\\n if (objectTypes[typeof filter] && filter) {\\n if ((className = getClass.call(filter)) == functionClass) {\\n callback = filter;\\n } else if (className == arrayClass) {\\n // Convert the property names array into a makeshift set.\\n properties = {};\\n for (var index = 0, length = filter.length, value; index < length; value = filter[index++], ((className = getClass.call(value)), className == stringClass || className == numberClass) && (properties[value] = 1));\\n }\\n }\\n if (width) {\\n if ((className = getClass.call(width)) == numberClass) {\\n // Convert the `width` to an integer and create a string containing\\n // `width` number of space characters.\\n if ((width -= width % 1) > 0) {\\n for (whitespace = \\\"\\\", width > 10 && (width = 10); whitespace.length < width; whitespace += \\\" \\\");\\n }\\n } else if (className == stringClass) {\\n whitespace = width.length <= 10 ? width : width.slice(0, 10);\\n }\\n }\\n // Opera <= 7.54u2 discards the values associated with empty string keys\\n // (`\\\"\\\"`) only if they are used directly within an object member list\\n // (e.g., `!(\\\"\\\" in { \\\"\\\": 1})`).\\n return serialize(\\\"\\\", (value = {}, value[\\\"\\\"] = source, value), callback, properties, whitespace, \\\"\\\", []);\\n };\\n }\\n\\n // Public: Parses a JSON source string.\\n if (!has(\\\"json-parse\\\")) {\\n var fromCharCode = String.fromCharCode;\\n\\n // Internal: A map of escaped control characters and their unescaped\\n // equivalents.\\n var Unescapes = {\\n 92: \\\"\\\\\\\\\\\",\\n 34: '\\\"',\\n 47: \\\"/\\\",\\n 98: \\\"\\\\b\\\",\\n 116: \\\"\\\\t\\\",\\n 110: \\\"\\\\n\\\",\\n 102: \\\"\\\\f\\\",\\n 114: \\\"\\\\r\\\"\\n };\\n\\n // Internal: Stores the parser state.\\n var Index, Source;\\n\\n // Internal: Resets the parser state and throws a `SyntaxError`.\\n var abort = function () {\\n Index = Source = null;\\n throw SyntaxError();\\n };\\n\\n // Internal: Returns the next token, or `\\\"$\\\"` if the parser has reached\\n // the end of the source string. A token may be a string, number, `null`\\n // literal, or Boolean literal.\\n var lex = function () {\\n var source = Source, length = source.length, value, begin, position, isSigned, charCode;\\n while (Index < length) {\\n charCode = source.charCodeAt(Index);\\n switch (charCode) {\\n case 9: case 10: case 13: case 32:\\n // Skip whitespace tokens, including tabs, carriage returns, line\\n // feeds, and space characters.\\n Index++;\\n break;\\n case 123: case 125: case 91: case 93: case 58: case 44:\\n // Parse a punctuator token (`{`, `}`, `[`, `]`, `:`, or `,`) at\\n // the current position.\\n value = charIndexBuggy ? source.charAt(Index) : source[Index];\\n Index++;\\n return value;\\n case 34:\\n // `\\\"` delimits a JSON string; advance to the next character and\\n // begin parsing the string. String tokens are prefixed with the\\n // sentinel `@` character to distinguish them from punctuators and\\n // end-of-string tokens.\\n for (value = \\\"@\\\", Index++; Index < length;) {\\n charCode = source.charCodeAt(Index);\\n if (charCode < 32) {\\n // Unescaped ASCII control characters (those with a code unit\\n // less than the space character) are not permitted.\\n abort();\\n } else if (charCode == 92) {\\n // A reverse solidus (`\\\\`) marks the beginning of an escaped\\n // control character (including `\\\"`, `\\\\`, and `/`) or Unicode\\n // escape sequence.\\n charCode = source.charCodeAt(++Index);\\n switch (charCode) {\\n case 92: case 34: case 47: case 98: case 116: case 110: case 102: case 114:\\n // Revive escaped control characters.\\n value += Unescapes[charCode];\\n Index++;\\n break;\\n case 117:\\n // `\\\\u` marks the beginning of a Unicode escape sequence.\\n // Advance to the first character and validate the\\n // four-digit code point.\\n begin = ++Index;\\n for (position = Index + 4; Index < position; Index++) {\\n charCode = source.charCodeAt(Index);\\n // A valid sequence comprises four hexdigits (case-\\n // insensitive) that form a single hexadecimal value.\\n if (!(charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70)) {\\n // Invalid Unicode escape sequence.\\n abort();\\n }\\n }\\n // Revive the escaped character.\\n value += fromCharCode(\\\"0x\\\" + source.slice(begin, Index));\\n break;\\n default:\\n // Invalid escape sequence.\\n abort();\\n }\\n } else {\\n if (charCode == 34) {\\n // An unescaped double-quote character marks the end of the\\n // string.\\n break;\\n }\\n charCode = source.charCodeAt(Index);\\n begin = Index;\\n // Optimize for the common case where a string is valid.\\n while (charCode >= 32 && charCode != 92 && charCode != 34) {\\n charCode = source.charCodeAt(++Index);\\n }\\n // Append the string as-is.\\n value += source.slice(begin, Index);\\n }\\n }\\n if (source.charCodeAt(Index) == 34) {\\n // Advance to the next character and return the revived string.\\n Index++;\\n return value;\\n }\\n // Unterminated string.\\n abort();\\n default:\\n // Parse numbers and literals.\\n begin = Index;\\n // Advance past the negative sign, if one is specified.\\n if (charCode == 45) {\\n isSigned = true;\\n charCode = source.charCodeAt(++Index);\\n }\\n // Parse an integer or floating-point value.\\n if (charCode >= 48 && charCode <= 57) {\\n // Leading zeroes are interpreted as octal literals.\\n if (charCode == 48 && ((charCode = source.charCodeAt(Index + 1)), charCode >= 48 && charCode <= 57)) {\\n // Illegal octal literal.\\n abort();\\n }\\n isSigned = false;\\n // Parse the integer component.\\n for (; Index < length && ((charCode = source.charCodeAt(Index)), charCode >= 48 && charCode <= 57); Index++);\\n // Floats cannot contain a leading decimal point; however, this\\n // case is already accounted for by the parser.\\n if (source.charCodeAt(Index) == 46) {\\n position = ++Index;\\n // Parse the decimal component.\\n for (; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);\\n if (position == Index) {\\n // Illegal trailing decimal.\\n abort();\\n }\\n Index = position;\\n }\\n // Parse exponents. The `e` denoting the exponent is\\n // case-insensitive.\\n charCode = source.charCodeAt(Index);\\n if (charCode == 101 || charCode == 69) {\\n charCode = source.charCodeAt(++Index);\\n // Skip past the sign following the exponent, if one is\\n // specified.\\n if (charCode == 43 || charCode == 45) {\\n Index++;\\n }\\n // Parse the exponential component.\\n for (position = Index; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);\\n if (position == Index) {\\n // Illegal empty exponent.\\n abort();\\n }\\n Index = position;\\n }\\n // Coerce the parsed value to a JavaScript number.\\n return +source.slice(begin, Index);\\n }\\n // A negative sign may only precede numbers.\\n if (isSigned) {\\n abort();\\n }\\n // `true`, `false`, and `null` literals.\\n if (source.slice(Index, Index + 4) == \\\"true\\\") {\\n Index += 4;\\n return true;\\n } else if (source.slice(Index, Index + 5) == \\\"false\\\") {\\n Index += 5;\\n return false;\\n } else if (source.slice(Index, Index + 4) == \\\"null\\\") {\\n Index += 4;\\n return null;\\n }\\n // Unrecognized token.\\n abort();\\n }\\n }\\n // Return the sentinel `$` character if the parser has reached the end\\n // of the source string.\\n return \\\"$\\\";\\n };\\n\\n // Internal: Parses a JSON `value` token.\\n var get = function (value) {\\n var results, hasMembers;\\n if (value == \\\"$\\\") {\\n // Unexpected end of input.\\n abort();\\n }\\n if (typeof value == \\\"string\\\") {\\n if ((charIndexBuggy ? value.charAt(0) : value[0]) == \\\"@\\\") {\\n // Remove the sentinel `@` character.\\n return value.slice(1);\\n }\\n // Parse object and array literals.\\n if (value == \\\"[\\\") {\\n // Parses a JSON array, returning a new JavaScript array.\\n results = [];\\n for (;; hasMembers || (hasMembers = true)) {\\n value = lex();\\n // A closing square bracket marks the end of the array literal.\\n if (value == \\\"]\\\") {\\n break;\\n }\\n // If the array literal contains elements, the current token\\n // should be a comma separating the previous element from the\\n // next.\\n if (hasMembers) {\\n if (value == \\\",\\\") {\\n value = lex();\\n if (value == \\\"]\\\") {\\n // Unexpected trailing `,` in array literal.\\n abort();\\n }\\n } else {\\n // A `,` must separate each array element.\\n abort();\\n }\\n }\\n // Elisions and leading commas are not permitted.\\n if (value == \\\",\\\") {\\n abort();\\n }\\n results.push(get(value));\\n }\\n return results;\\n } else if (value == \\\"{\\\") {\\n // Parses a JSON object, returning a new JavaScript object.\\n results = {};\\n for (;; hasMembers || (hasMembers = true)) {\\n value = lex();\\n // A closing curly brace marks the end of the object literal.\\n if (value == \\\"}\\\") {\\n break;\\n }\\n // If the object literal contains members, the current token\\n // should be a comma separator.\\n if (hasMembers) {\\n if (value == \\\",\\\") {\\n value = lex();\\n if (value == \\\"}\\\") {\\n // Unexpected trailing `,` in object literal.\\n abort();\\n }\\n } else {\\n // A `,` must separate each object member.\\n abort();\\n }\\n }\\n // Leading commas are not permitted, object property names must be\\n // double-quoted strings, and a `:` must separate each property\\n // name and value.\\n if (value == \\\",\\\" || typeof value != \\\"string\\\" || (charIndexBuggy ? value.charAt(0) : value[0]) != \\\"@\\\" || lex() != \\\":\\\") {\\n abort();\\n }\\n results[value.slice(1)] = get(lex());\\n }\\n return results;\\n }\\n // Unexpected token encountered.\\n abort();\\n }\\n return value;\\n };\\n\\n // Internal: Updates a traversed object member.\\n var update = function (source, property, callback) {\\n var element = walk(source, property, callback);\\n if (element === undef) {\\n delete source[property];\\n } else {\\n source[property] = element;\\n }\\n };\\n\\n // Internal: Recursively traverses a parsed JSON object, invoking the\\n // `callback` function for each value. This is an implementation of the\\n // `Walk(holder, name)` operation defined in ES 5.1 section 15.12.2.\\n var walk = function (source, property, callback) {\\n var value = source[property], length;\\n if (typeof value == \\\"object\\\" && value) {\\n // `forEach` can't be used to traverse an array in Opera <= 8.54\\n // because its `Object#hasOwnProperty` implementation returns `false`\\n // for array indices (e.g., `![1, 2, 3].hasOwnProperty(\\\"0\\\")`).\\n if (getClass.call(value) == arrayClass) {\\n for (length = value.length; length--;) {\\n update(value, length, callback);\\n }\\n } else {\\n forEach(value, function (property) {\\n update(value, property, callback);\\n });\\n }\\n }\\n return callback.call(source, property, value);\\n };\\n\\n // Public: `JSON.parse`. See ES 5.1 section 15.12.2.\\n exports.parse = function (source, callback) {\\n var result, value;\\n Index = 0;\\n Source = \\\"\\\" + source;\\n result = get(lex());\\n // If a JSON string contains multiple tokens, it is invalid.\\n if (lex() != \\\"$\\\") {\\n abort();\\n }\\n // Reset the parser state.\\n Index = Source = null;\\n return callback && getClass.call(callback) == functionClass ? walk((value = {}, value[\\\"\\\"] = result, value), \\\"\\\", callback) : result;\\n };\\n }\\n }\\n\\n exports[\\\"runInContext\\\"] = runInContext;\\n return exports;\\n }\\n\\n if (freeExports && !isLoader) {\\n // Export for CommonJS environments.\\n runInContext(root, freeExports);\\n } else {\\n // Export for web browsers and JavaScript engines.\\n var nativeJSON = root.JSON,\\n previousJSON = root[\\\"JSON3\\\"],\\n isRestored = false;\\n\\n var JSON3 = runInContext(root, (root[\\\"JSON3\\\"] = {\\n // Public: Restores the original value of the global `JSON` object and\\n // returns a reference to the `JSON3` object.\\n \\\"noConflict\\\": function () {\\n if (!isRestored) {\\n isRestored = true;\\n root.JSON = nativeJSON;\\n root[\\\"JSON3\\\"] = previousJSON;\\n nativeJSON = previousJSON = null;\\n }\\n return JSON3;\\n }\\n }));\\n\\n root.JSON = {\\n \\\"parse\\\": JSON3.parse,\\n \\\"stringify\\\": JSON3.stringify\\n };\\n }\\n\\n // Export for asynchronous module loaders.\\n if (isLoader) {\\n define(function () {\\n return JSON3;\\n });\\n }\\n}).call(this);\\n\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{}],70:[function(require,module,exports){\\n/**\\n * lodash 3.2.0 (Custom Build) <https://lodash.com/>\\n * Build: `lodash modern modularize exports=\\\"npm\\\" -o ./`\\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n * Available under MIT license <https://lodash.com/license>\\n */\\nvar baseCopy = require('lodash._basecopy'),\\n keys = require('lodash.keys');\\n\\n/**\\n * The base implementation of `_.assign` without support for argument juggling,\\n * multiple sources, and `customizer` functions.\\n *\\n * @private\\n * @param {Object} object The destination object.\\n * @param {Object} source The source object.\\n * @returns {Object} Returns `object`.\\n */\\nfunction baseAssign(object, source) {\\n return source == null\\n ? object\\n : baseCopy(source, keys(source), object);\\n}\\n\\nmodule.exports = baseAssign;\\n\\n},{\\\"lodash._basecopy\\\":71,\\\"lodash.keys\\\":78}],71:[function(require,module,exports){\\n/**\\n * lodash 3.0.1 (Custom Build) <https://lodash.com/>\\n * Build: `lodash modern modularize exports=\\\"npm\\\" -o ./`\\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n * Available under MIT license <https://lodash.com/license>\\n */\\n\\n/**\\n * Copies properties of `source` to `object`.\\n *\\n * @private\\n * @param {Object} source The object to copy properties from.\\n * @param {Array} props The property names to copy.\\n * @param {Object} [object={}] The object to copy properties to.\\n * @returns {Object} Returns `object`.\\n */\\nfunction baseCopy(source, props, object) {\\n object || (object = {});\\n\\n var index = -1,\\n length = props.length;\\n\\n while (++index < length) {\\n var key = props[index];\\n object[key] = source[key];\\n }\\n return object;\\n}\\n\\nmodule.exports = baseCopy;\\n\\n},{}],72:[function(require,module,exports){\\n/**\\n * lodash 3.0.3 (Custom Build) <https://lodash.com/>\\n * Build: `lodash modern modularize exports=\\\"npm\\\" -o ./`\\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n * Available under MIT license <https://lodash.com/license>\\n */\\n\\n/**\\n * The base implementation of `_.create` without support for assigning\\n * properties to the created object.\\n *\\n * @private\\n * @param {Object} prototype The object to inherit from.\\n * @returns {Object} Returns the new object.\\n */\\nvar baseCreate = (function() {\\n function object() {}\\n return function(prototype) {\\n if (isObject(prototype)) {\\n object.prototype = prototype;\\n var result = new object;\\n object.prototype = undefined;\\n }\\n return result || {};\\n };\\n}());\\n\\n/**\\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\\n *\\n * @static\\n * @memberOf _\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\\n * @example\\n *\\n * _.isObject({});\\n * // => true\\n *\\n * _.isObject([1, 2, 3]);\\n * // => true\\n *\\n * _.isObject(1);\\n * // => false\\n */\\nfunction isObject(value) {\\n // Avoid a V8 JIT bug in Chrome 19-20.\\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\\n var type = typeof value;\\n return !!value && (type == 'object' || type == 'function');\\n}\\n\\nmodule.exports = baseCreate;\\n\\n},{}],73:[function(require,module,exports){\\n/**\\n * lodash 3.9.1 (Custom Build) <https://lodash.com/>\\n * Build: `lodash modern modularize exports=\\\"npm\\\" -o ./`\\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n * Available under MIT license <https://lodash.com/license>\\n */\\n\\n/** `Object#toString` result references. */\\nvar funcTag = '[object Function]';\\n\\n/** Used to detect host constructors (Safari > 5). */\\nvar reIsHostCtor = /^\\\\[object .+?Constructor\\\\]$/;\\n\\n/**\\n * Checks if `value` is object-like.\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\\n */\\nfunction isObjectLike(value) {\\n return !!value && typeof value == 'object';\\n}\\n\\n/** Used for native method references. */\\nvar objectProto = Object.prototype;\\n\\n/** Used to resolve the decompiled source of functions. */\\nvar fnToString = Function.prototype.toString;\\n\\n/** Used to check objects for own properties. */\\nvar hasOwnProperty = objectProto.hasOwnProperty;\\n\\n/**\\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\\n * of values.\\n */\\nvar objToString = objectProto.toString;\\n\\n/** Used to detect if a method is native. */\\nvar reIsNative = RegExp('^' +\\n fnToString.call(hasOwnProperty).replace(/[\\\\\\\\^$.*+?()[\\\\]{}|]/g, '\\\\\\\\$&')\\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\\\\\\\()| for .+?(?=\\\\\\\\\\\\])/g, '$1.*?') + '$'\\n);\\n\\n/**\\n * Gets the native function at `key` of `object`.\\n *\\n * @private\\n * @param {Object} object The object to query.\\n * @param {string} key The key of the method to get.\\n * @returns {*} Returns the function if it's native, else `undefined`.\\n */\\nfunction getNative(object, key) {\\n var value = object == null ? undefined : object[key];\\n return isNative(value) ? value : undefined;\\n}\\n\\n/**\\n * Checks if `value` is classified as a `Function` object.\\n *\\n * @static\\n * @memberOf _\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\\n * @example\\n *\\n * _.isFunction(_);\\n * // => true\\n *\\n * _.isFunction(/abc/);\\n * // => false\\n */\\nfunction isFunction(value) {\\n // The use of `Object#toString` avoids issues with the `typeof` operator\\n // in older versions of Chrome and Safari which return 'function' for regexes\\n // and Safari 8 equivalents which return 'object' for typed array constructors.\\n return isObject(value) && objToString.call(value) == funcTag;\\n}\\n\\n/**\\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\\n *\\n * @static\\n * @memberOf _\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\\n * @example\\n *\\n * _.isObject({});\\n * // => true\\n *\\n * _.isObject([1, 2, 3]);\\n * // => true\\n *\\n * _.isObject(1);\\n * // => false\\n */\\nfunction isObject(value) {\\n // Avoid a V8 JIT bug in Chrome 19-20.\\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\\n var type = typeof value;\\n return !!value && (type == 'object' || type == 'function');\\n}\\n\\n/**\\n * Checks if `value` is a native function.\\n *\\n * @static\\n * @memberOf _\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\\n * @example\\n *\\n * _.isNative(Array.prototype.push);\\n * // => true\\n *\\n * _.isNative(_);\\n * // => false\\n */\\nfunction isNative(value) {\\n if (value == null) {\\n return false;\\n }\\n if (isFunction(value)) {\\n return reIsNative.test(fnToString.call(value));\\n }\\n return isObjectLike(value) && reIsHostCtor.test(value);\\n}\\n\\nmodule.exports = getNative;\\n\\n},{}],74:[function(require,module,exports){\\n/**\\n * lodash 3.0.9 (Custom Build) <https://lodash.com/>\\n * Build: `lodash modern modularize exports=\\\"npm\\\" -o ./`\\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n * Available under MIT license <https://lodash.com/license>\\n */\\n\\n/** Used to detect unsigned integer values. */\\nvar reIsUint = /^\\\\d+$/;\\n\\n/**\\n * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)\\n * of an array-like value.\\n */\\nvar MAX_SAFE_INTEGER = 9007199254740991;\\n\\n/**\\n * The base implementation of `_.property` without support for deep paths.\\n *\\n * @private\\n * @param {string} key The key of the property to get.\\n * @returns {Function} Returns the new function.\\n */\\nfunction baseProperty(key) {\\n return function(object) {\\n return object == null ? undefined : object[key];\\n };\\n}\\n\\n/**\\n * Gets the \\\"length\\\" property value of `object`.\\n *\\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\\n *\\n * @private\\n * @param {Object} object The object to query.\\n * @returns {*} Returns the \\\"length\\\" value.\\n */\\nvar getLength = baseProperty('length');\\n\\n/**\\n * Checks if `value` is array-like.\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\\n */\\nfunction isArrayLike(value) {\\n return value != null && isLength(getLength(value));\\n}\\n\\n/**\\n * Checks if `value` is a valid array-like index.\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\\n */\\nfunction isIndex(value, length) {\\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\\n length = length == null ? MAX_SAFE_INTEGER : length;\\n return value > -1 && value % 1 == 0 && value < length;\\n}\\n\\n/**\\n * Checks if the provided arguments are from an iteratee call.\\n *\\n * @private\\n * @param {*} value The potential iteratee value argument.\\n * @param {*} index The potential iteratee index or key argument.\\n * @param {*} object The potential iteratee object argument.\\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\\n */\\nfunction isIterateeCall(value, index, object) {\\n if (!isObject(object)) {\\n return false;\\n }\\n var type = typeof index;\\n if (type == 'number'\\n ? (isArrayLike(object) && isIndex(index, object.length))\\n : (type == 'string' && index in object)) {\\n var other = object[index];\\n return value === value ? (value === other) : (other !== other);\\n }\\n return false;\\n}\\n\\n/**\\n * Checks if `value` is a valid array-like length.\\n *\\n * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\\n */\\nfunction isLength(value) {\\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\\n}\\n\\n/**\\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\\n *\\n * @static\\n * @memberOf _\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\\n * @example\\n *\\n * _.isObject({});\\n * // => true\\n *\\n * _.isObject([1, 2, 3]);\\n * // => true\\n *\\n * _.isObject(1);\\n * // => false\\n */\\nfunction isObject(value) {\\n // Avoid a V8 JIT bug in Chrome 19-20.\\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\\n var type = typeof value;\\n return !!value && (type == 'object' || type == 'function');\\n}\\n\\nmodule.exports = isIterateeCall;\\n\\n},{}],75:[function(require,module,exports){\\n/**\\n * lodash 3.1.1 (Custom Build) <https://lodash.com/>\\n * Build: `lodash modern modularize exports=\\\"npm\\\" -o ./`\\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n * Available under MIT license <https://lodash.com/license>\\n */\\nvar baseAssign = require('lodash._baseassign'),\\n baseCreate = require('lodash._basecreate'),\\n isIterateeCall = require('lodash._isiterateecall');\\n\\n/**\\n * Creates an object that inherits from the given `prototype` object. If a\\n * `properties` object is provided its own enumerable properties are assigned\\n * to the created object.\\n *\\n * @static\\n * @memberOf _\\n * @category Object\\n * @param {Object} prototype The object to inherit from.\\n * @param {Object} [properties] The properties to assign to the object.\\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\\n * @returns {Object} Returns the new object.\\n * @example\\n *\\n * function Shape() {\\n * this.x = 0;\\n * this.y = 0;\\n * }\\n *\\n * function Circle() {\\n * Shape.call(this);\\n * }\\n *\\n * Circle.prototype = _.create(Shape.prototype, {\\n * 'constructor': Circle\\n * });\\n *\\n * var circle = new Circle;\\n * circle instanceof Circle;\\n * // => true\\n *\\n * circle instanceof Shape;\\n * // => true\\n */\\nfunction create(prototype, properties, guard) {\\n var result = baseCreate(prototype);\\n if (guard && isIterateeCall(prototype, properties, guard)) {\\n properties = undefined;\\n }\\n return properties ? baseAssign(result, properties) : result;\\n}\\n\\nmodule.exports = create;\\n\\n},{\\\"lodash._baseassign\\\":70,\\\"lodash._basecreate\\\":72,\\\"lodash._isiterateecall\\\":74}],76:[function(require,module,exports){\\n/**\\n * lodash (Custom Build) <https://lodash.com/>\\n * Build: `lodash modularize exports=\\\"npm\\\" -o ./`\\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\\n * Released under MIT license <https://lodash.com/license>\\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n */\\n\\n/** Used as references for various `Number` constants. */\\nvar MAX_SAFE_INTEGER = 9007199254740991;\\n\\n/** `Object#toString` result references. */\\nvar argsTag = '[object Arguments]',\\n funcTag = '[object Function]',\\n genTag = '[object GeneratorFunction]';\\n\\n/** Used for built-in method references. */\\nvar objectProto = Object.prototype;\\n\\n/** Used to check objects for own properties. */\\nvar hasOwnProperty = objectProto.hasOwnProperty;\\n\\n/**\\n * Used to resolve the\\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\\n * of values.\\n */\\nvar objectToString = objectProto.toString;\\n\\n/** Built-in value references. */\\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\\n\\n/**\\n * Checks if `value` is likely an `arguments` object.\\n *\\n * @static\\n * @memberOf _\\n * @since 0.1.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\\n * else `false`.\\n * @example\\n *\\n * _.isArguments(function() { return arguments; }());\\n * // => true\\n *\\n * _.isArguments([1, 2, 3]);\\n * // => false\\n */\\nfunction isArguments(value) {\\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\\n}\\n\\n/**\\n * Checks if `value` is array-like. A value is considered array-like if it's\\n * not a function and has a `value.length` that's an integer greater than or\\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\\n *\\n * @static\\n * @memberOf _\\n * @since 4.0.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\\n * @example\\n *\\n * _.isArrayLike([1, 2, 3]);\\n * // => true\\n *\\n * _.isArrayLike(document.body.children);\\n * // => true\\n *\\n * _.isArrayLike('abc');\\n * // => true\\n *\\n * _.isArrayLike(_.noop);\\n * // => false\\n */\\nfunction isArrayLike(value) {\\n return value != null && isLength(value.length) && !isFunction(value);\\n}\\n\\n/**\\n * This method is like `_.isArrayLike` except that it also checks if `value`\\n * is an object.\\n *\\n * @static\\n * @memberOf _\\n * @since 4.0.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is an array-like object,\\n * else `false`.\\n * @example\\n *\\n * _.isArrayLikeObject([1, 2, 3]);\\n * // => true\\n *\\n * _.isArrayLikeObject(document.body.children);\\n * // => true\\n *\\n * _.isArrayLikeObject('abc');\\n * // => false\\n *\\n * _.isArrayLikeObject(_.noop);\\n * // => false\\n */\\nfunction isArrayLikeObject(value) {\\n return isObjectLike(value) && isArrayLike(value);\\n}\\n\\n/**\\n * Checks if `value` is classified as a `Function` object.\\n *\\n * @static\\n * @memberOf _\\n * @since 0.1.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\\n * @example\\n *\\n * _.isFunction(_);\\n * // => true\\n *\\n * _.isFunction(/abc/);\\n * // => false\\n */\\nfunction isFunction(value) {\\n // The use of `Object#toString` avoids issues with the `typeof` operator\\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\\n var tag = isObject(value) ? objectToString.call(value) : '';\\n return tag == funcTag || tag == genTag;\\n}\\n\\n/**\\n * Checks if `value` is a valid array-like length.\\n *\\n * **Note:** This method is loosely based on\\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\\n *\\n * @static\\n * @memberOf _\\n * @since 4.0.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\\n * @example\\n *\\n * _.isLength(3);\\n * // => true\\n *\\n * _.isLength(Number.MIN_VALUE);\\n * // => false\\n *\\n * _.isLength(Infinity);\\n * // => false\\n *\\n * _.isLength('3');\\n * // => false\\n */\\nfunction isLength(value) {\\n return typeof value == 'number' &&\\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\\n}\\n\\n/**\\n * Checks if `value` is the\\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\\n *\\n * @static\\n * @memberOf _\\n * @since 0.1.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\\n * @example\\n *\\n * _.isObject({});\\n * // => true\\n *\\n * _.isObject([1, 2, 3]);\\n * // => true\\n *\\n * _.isObject(_.noop);\\n * // => true\\n *\\n * _.isObject(null);\\n * // => false\\n */\\nfunction isObject(value) {\\n var type = typeof value;\\n return !!value && (type == 'object' || type == 'function');\\n}\\n\\n/**\\n * Checks if `value` is object-like. A value is object-like if it's not `null`\\n * and has a `typeof` result of \\\"object\\\".\\n *\\n * @static\\n * @memberOf _\\n * @since 4.0.0\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\\n * @example\\n *\\n * _.isObjectLike({});\\n * // => true\\n *\\n * _.isObjectLike([1, 2, 3]);\\n * // => true\\n *\\n * _.isObjectLike(_.noop);\\n * // => false\\n *\\n * _.isObjectLike(null);\\n * // => false\\n */\\nfunction isObjectLike(value) {\\n return !!value && typeof value == 'object';\\n}\\n\\nmodule.exports = isArguments;\\n\\n},{}],77:[function(require,module,exports){\\n/**\\n * lodash 3.0.4 (Custom Build) <https://lodash.com/>\\n * Build: `lodash modern modularize exports=\\\"npm\\\" -o ./`\\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n * Available under MIT license <https://lodash.com/license>\\n */\\n\\n/** `Object#toString` result references. */\\nvar arrayTag = '[object Array]',\\n funcTag = '[object Function]';\\n\\n/** Used to detect host constructors (Safari > 5). */\\nvar reIsHostCtor = /^\\\\[object .+?Constructor\\\\]$/;\\n\\n/**\\n * Checks if `value` is object-like.\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\\n */\\nfunction isObjectLike(value) {\\n return !!value && typeof value == 'object';\\n}\\n\\n/** Used for native method references. */\\nvar objectProto = Object.prototype;\\n\\n/** Used to resolve the decompiled source of functions. */\\nvar fnToString = Function.prototype.toString;\\n\\n/** Used to check objects for own properties. */\\nvar hasOwnProperty = objectProto.hasOwnProperty;\\n\\n/**\\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\\n * of values.\\n */\\nvar objToString = objectProto.toString;\\n\\n/** Used to detect if a method is native. */\\nvar reIsNative = RegExp('^' +\\n fnToString.call(hasOwnProperty).replace(/[\\\\\\\\^$.*+?()[\\\\]{}|]/g, '\\\\\\\\$&')\\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\\\\\\\()| for .+?(?=\\\\\\\\\\\\])/g, '$1.*?') + '$'\\n);\\n\\n/* Native method references for those with the same name as other `lodash` methods. */\\nvar nativeIsArray = getNative(Array, 'isArray');\\n\\n/**\\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\\n * of an array-like value.\\n */\\nvar MAX_SAFE_INTEGER = 9007199254740991;\\n\\n/**\\n * Gets the native function at `key` of `object`.\\n *\\n * @private\\n * @param {Object} object The object to query.\\n * @param {string} key The key of the method to get.\\n * @returns {*} Returns the function if it's native, else `undefined`.\\n */\\nfunction getNative(object, key) {\\n var value = object == null ? undefined : object[key];\\n return isNative(value) ? value : undefined;\\n}\\n\\n/**\\n * Checks if `value` is a valid array-like length.\\n *\\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\\n */\\nfunction isLength(value) {\\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\\n}\\n\\n/**\\n * Checks if `value` is classified as an `Array` object.\\n *\\n * @static\\n * @memberOf _\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\\n * @example\\n *\\n * _.isArray([1, 2, 3]);\\n * // => true\\n *\\n * _.isArray(function() { return arguments; }());\\n * // => false\\n */\\nvar isArray = nativeIsArray || function(value) {\\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\\n};\\n\\n/**\\n * Checks if `value` is classified as a `Function` object.\\n *\\n * @static\\n * @memberOf _\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\\n * @example\\n *\\n * _.isFunction(_);\\n * // => true\\n *\\n * _.isFunction(/abc/);\\n * // => false\\n */\\nfunction isFunction(value) {\\n // The use of `Object#toString` avoids issues with the `typeof` operator\\n // in older versions of Chrome and Safari which return 'function' for regexes\\n // and Safari 8 equivalents which return 'object' for typed array constructors.\\n return isObject(value) && objToString.call(value) == funcTag;\\n}\\n\\n/**\\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\\n *\\n * @static\\n * @memberOf _\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\\n * @example\\n *\\n * _.isObject({});\\n * // => true\\n *\\n * _.isObject([1, 2, 3]);\\n * // => true\\n *\\n * _.isObject(1);\\n * // => false\\n */\\nfunction isObject(value) {\\n // Avoid a V8 JIT bug in Chrome 19-20.\\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\\n var type = typeof value;\\n return !!value && (type == 'object' || type == 'function');\\n}\\n\\n/**\\n * Checks if `value` is a native function.\\n *\\n * @static\\n * @memberOf _\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\\n * @example\\n *\\n * _.isNative(Array.prototype.push);\\n * // => true\\n *\\n * _.isNative(_);\\n * // => false\\n */\\nfunction isNative(value) {\\n if (value == null) {\\n return false;\\n }\\n if (isFunction(value)) {\\n return reIsNative.test(fnToString.call(value));\\n }\\n return isObjectLike(value) && reIsHostCtor.test(value);\\n}\\n\\nmodule.exports = isArray;\\n\\n},{}],78:[function(require,module,exports){\\n/**\\n * lodash 3.1.2 (Custom Build) <https://lodash.com/>\\n * Build: `lodash modern modularize exports=\\\"npm\\\" -o ./`\\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\\n * Available under MIT license <https://lodash.com/license>\\n */\\nvar getNative = require('lodash._getnative'),\\n isArguments = require('lodash.isarguments'),\\n isArray = require('lodash.isarray');\\n\\n/** Used to detect unsigned integer values. */\\nvar reIsUint = /^\\\\d+$/;\\n\\n/** Used for native method references. */\\nvar objectProto = Object.prototype;\\n\\n/** Used to check objects for own properties. */\\nvar hasOwnProperty = objectProto.hasOwnProperty;\\n\\n/* Native method references for those with the same name as other `lodash` methods. */\\nvar nativeKeys = getNative(Object, 'keys');\\n\\n/**\\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\\n * of an array-like value.\\n */\\nvar MAX_SAFE_INTEGER = 9007199254740991;\\n\\n/**\\n * The base implementation of `_.property` without support for deep paths.\\n *\\n * @private\\n * @param {string} key The key of the property to get.\\n * @returns {Function} Returns the new function.\\n */\\nfunction baseProperty(key) {\\n return function(object) {\\n return object == null ? undefined : object[key];\\n };\\n}\\n\\n/**\\n * Gets the \\\"length\\\" property value of `object`.\\n *\\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\\n *\\n * @private\\n * @param {Object} object The object to query.\\n * @returns {*} Returns the \\\"length\\\" value.\\n */\\nvar getLength = baseProperty('length');\\n\\n/**\\n * Checks if `value` is array-like.\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\\n */\\nfunction isArrayLike(value) {\\n return value != null && isLength(getLength(value));\\n}\\n\\n/**\\n * Checks if `value` is a valid array-like index.\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\\n */\\nfunction isIndex(value, length) {\\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\\n length = length == null ? MAX_SAFE_INTEGER : length;\\n return value > -1 && value % 1 == 0 && value < length;\\n}\\n\\n/**\\n * Checks if `value` is a valid array-like length.\\n *\\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\\n *\\n * @private\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\\n */\\nfunction isLength(value) {\\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\\n}\\n\\n/**\\n * A fallback implementation of `Object.keys` which creates an array of the\\n * own enumerable property names of `object`.\\n *\\n * @private\\n * @param {Object} object The object to query.\\n * @returns {Array} Returns the array of property names.\\n */\\nfunction shimKeys(object) {\\n var props = keysIn(object),\\n propsLength = props.length,\\n length = propsLength && object.length;\\n\\n var allowIndexes = !!length && isLength(length) &&\\n (isArray(object) || isArguments(object));\\n\\n var index = -1,\\n result = [];\\n\\n while (++index < propsLength) {\\n var key = props[index];\\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\\n result.push(key);\\n }\\n }\\n return result;\\n}\\n\\n/**\\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\\n *\\n * @static\\n * @memberOf _\\n * @category Lang\\n * @param {*} value The value to check.\\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\\n * @example\\n *\\n * _.isObject({});\\n * // => true\\n *\\n * _.isObject([1, 2, 3]);\\n * // => true\\n *\\n * _.isObject(1);\\n * // => false\\n */\\nfunction isObject(value) {\\n // Avoid a V8 JIT bug in Chrome 19-20.\\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\\n var type = typeof value;\\n return !!value && (type == 'object' || type == 'function');\\n}\\n\\n/**\\n * Creates an array of the own enumerable property names of `object`.\\n *\\n * **Note:** Non-object values are coerced to objects. See the\\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\\n * for more details.\\n *\\n * @static\\n * @memberOf _\\n * @category Object\\n * @param {Object} object The object to query.\\n * @returns {Array} Returns the array of property names.\\n * @example\\n *\\n * function Foo() {\\n * this.a = 1;\\n * this.b = 2;\\n * }\\n *\\n * Foo.prototype.c = 3;\\n *\\n * _.keys(new Foo);\\n * // => ['a', 'b'] (iteration order is not guaranteed)\\n *\\n * _.keys('hi');\\n * // => ['0', '1']\\n */\\nvar keys = !nativeKeys ? shimKeys : function(object) {\\n var Ctor = object == null ? undefined : object.constructor;\\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\\n (typeof object != 'function' && isArrayLike(object))) {\\n return shimKeys(object);\\n }\\n return isObject(object) ? nativeKeys(object) : [];\\n};\\n\\n/**\\n * Creates an array of the own and inherited enumerable property names of `object`.\\n *\\n * **Note:** Non-object values are coerced to objects.\\n *\\n * @static\\n * @memberOf _\\n * @category Object\\n * @param {Object} object The object to query.\\n * @returns {Array} Returns the array of property names.\\n * @example\\n *\\n * function Foo() {\\n * this.a = 1;\\n * this.b = 2;\\n * }\\n *\\n * Foo.prototype.c = 3;\\n *\\n * _.keysIn(new Foo);\\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\\n */\\nfunction keysIn(object) {\\n if (object == null) {\\n return [];\\n }\\n if (!isObject(object)) {\\n object = Object(object);\\n }\\n var length = object.length;\\n length = (length && isLength(length) &&\\n (isArray(object) || isArguments(object)) && length) || 0;\\n\\n var Ctor = object.constructor,\\n index = -1,\\n isProto = typeof Ctor == 'function' && Ctor.prototype === object,\\n result = Array(length),\\n skipIndexes = length > 0;\\n\\n while (++index < length) {\\n result[index] = (index + '');\\n }\\n for (var key in object) {\\n if (!(skipIndexes && isIndex(key, length)) &&\\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\\n result.push(key);\\n }\\n }\\n return result;\\n}\\n\\nmodule.exports = keys;\\n\\n},{\\\"lodash._getnative\\\":73,\\\"lodash.isarguments\\\":76,\\\"lodash.isarray\\\":77}],79:[function(require,module,exports){\\n(function (process){\\nvar path = require('path');\\nvar fs = require('fs');\\nvar _0777 = parseInt('0777', 8);\\n\\nmodule.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;\\n\\nfunction mkdirP (p, opts, f, made) {\\n if (typeof opts === 'function') {\\n f = opts;\\n opts = {};\\n }\\n else if (!opts || typeof opts !== 'object') {\\n opts = { mode: opts };\\n }\\n \\n var mode = opts.mode;\\n var xfs = opts.fs || fs;\\n \\n if (mode === undefined) {\\n mode = _0777 & (~process.umask());\\n }\\n if (!made) made = null;\\n \\n var cb = f || function () {};\\n p = path.resolve(p);\\n \\n xfs.mkdir(p, mode, function (er) {\\n if (!er) {\\n made = made || p;\\n return cb(null, made);\\n }\\n switch (er.code) {\\n case 'ENOENT':\\n mkdirP(path.dirname(p), opts, function (er, made) {\\n if (er) cb(er, made);\\n else mkdirP(p, opts, cb, made);\\n });\\n break;\\n\\n // In the case of any other error, just see if there's a dir\\n // there already. If so, then hooray! If not, then something\\n // is borked.\\n default:\\n xfs.stat(p, function (er2, stat) {\\n // if the stat fails, then that's super weird.\\n // let the original error be the failure reason.\\n if (er2 || !stat.isDirectory()) cb(er, made)\\n else cb(null, made);\\n });\\n break;\\n }\\n });\\n}\\n\\nmkdirP.sync = function sync (p, opts, made) {\\n if (!opts || typeof opts !== 'object') {\\n opts = { mode: opts };\\n }\\n \\n var mode = opts.mode;\\n var xfs = opts.fs || fs;\\n \\n if (mode === undefined) {\\n mode = _0777 & (~process.umask());\\n }\\n if (!made) made = null;\\n\\n p = path.resolve(p);\\n\\n try {\\n xfs.mkdirSync(p, mode);\\n made = made || p;\\n }\\n catch (err0) {\\n switch (err0.code) {\\n case 'ENOENT' :\\n made = sync(path.dirname(p), opts, made);\\n sync(p, opts, made);\\n break;\\n\\n // In the case of any other error, just see if there's a dir\\n // there already. If so, then hooray! If not, then something\\n // is borked.\\n default:\\n var stat;\\n try {\\n stat = xfs.statSync(p);\\n }\\n catch (err1) {\\n throw err0;\\n }\\n if (!stat.isDirectory()) throw err0;\\n break;\\n }\\n }\\n\\n return made;\\n};\\n\\n}).call(this,require('_process'))\\n},{\\\"_process\\\":82,\\\"fs\\\":42,\\\"path\\\":42}],80:[function(require,module,exports){\\nexports.endianness = function () { return 'LE' };\\n\\nexports.hostname = function () {\\n if (typeof location !== 'undefined') {\\n return location.hostname\\n }\\n else return '';\\n};\\n\\nexports.loadavg = function () { return [] };\\n\\nexports.uptime = function () { return 0 };\\n\\nexports.freemem = function () {\\n return Number.MAX_VALUE;\\n};\\n\\nexports.totalmem = function () {\\n return Number.MAX_VALUE;\\n};\\n\\nexports.cpus = function () { return [] };\\n\\nexports.type = function () { return 'Browser' };\\n\\nexports.release = function () {\\n if (typeof navigator !== 'undefined') {\\n return navigator.appVersion;\\n }\\n return '';\\n};\\n\\nexports.networkInterfaces\\n= exports.getNetworkInterfaces\\n= function () { return {} };\\n\\nexports.arch = function () { return 'javascript' };\\n\\nexports.platform = function () { return 'browser' };\\n\\nexports.tmpdir = exports.tmpDir = function () {\\n return '/tmp';\\n};\\n\\nexports.EOL = '\\\\n';\\n\\n},{}],81:[function(require,module,exports){\\n(function (process){\\n'use strict';\\n\\nif (!process.version ||\\n process.version.indexOf('v0.') === 0 ||\\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\\n module.exports = nextTick;\\n} else {\\n module.exports = process.nextTick;\\n}\\n\\nfunction nextTick(fn, arg1, arg2, arg3) {\\n if (typeof fn !== 'function') {\\n throw new TypeError('\\\"callback\\\" argument must be a function');\\n }\\n var len = arguments.length;\\n var args, i;\\n switch (len) {\\n case 0:\\n case 1:\\n return process.nextTick(fn);\\n case 2:\\n return process.nextTick(function afterTickOne() {\\n fn.call(null, arg1);\\n });\\n case 3:\\n return process.nextTick(function afterTickTwo() {\\n fn.call(null, arg1, arg2);\\n });\\n case 4:\\n return process.nextTick(function afterTickThree() {\\n fn.call(null, arg1, arg2, arg3);\\n });\\n default:\\n args = new Array(len - 1);\\n i = 0;\\n while (i < args.length) {\\n args[i++] = arguments[i];\\n }\\n return process.nextTick(function afterTick() {\\n fn.apply(null, args);\\n });\\n }\\n}\\n\\n}).call(this,require('_process'))\\n},{\\\"_process\\\":82}],82:[function(require,module,exports){\\n// shim for using process in browser\\nvar process = module.exports = {};\\n\\n// cached from whatever global is present so that test runners that stub it\\n// don't break things. But we need to wrap it in a try catch in case it is\\n// wrapped in strict mode code which doesn't define any globals. It's inside a\\n// function because try/catches deoptimize in certain engines.\\n\\nvar cachedSetTimeout;\\nvar cachedClearTimeout;\\n\\nfunction defaultSetTimout() {\\n throw new Error('setTimeout has not been defined');\\n}\\nfunction defaultClearTimeout () {\\n throw new Error('clearTimeout has not been defined');\\n}\\n(function () {\\n try {\\n if (typeof setTimeout === 'function') {\\n cachedSetTimeout = setTimeout;\\n } else {\\n cachedSetTimeout = defaultSetTimout;\\n }\\n } catch (e) {\\n cachedSetTimeout = defaultSetTimout;\\n }\\n try {\\n if (typeof clearTimeout === 'function') {\\n cachedClearTimeout = clearTimeout;\\n } else {\\n cachedClearTimeout = defaultClearTimeout;\\n }\\n } catch (e) {\\n cachedClearTimeout = defaultClearTimeout;\\n }\\n} ())\\nfunction runTimeout(fun) {\\n if (cachedSetTimeout === setTimeout) {\\n //normal enviroments in sane situations\\n return setTimeout(fun, 0);\\n }\\n // if setTimeout wasn't available but was latter defined\\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\\n cachedSetTimeout = setTimeout;\\n return setTimeout(fun, 0);\\n }\\n try {\\n // when when somebody has screwed with setTimeout but no I.E. maddness\\n return cachedSetTimeout(fun, 0);\\n } catch(e){\\n try {\\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\\n return cachedSetTimeout.call(null, fun, 0);\\n } catch(e){\\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\\n return cachedSetTimeout.call(this, fun, 0);\\n }\\n }\\n\\n\\n}\\nfunction runClearTimeout(marker) {\\n if (cachedClearTimeout === clearTimeout) {\\n //normal enviroments in sane situations\\n return clearTimeout(marker);\\n }\\n // if clearTimeout wasn't available but was latter defined\\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\\n cachedClearTimeout = clearTimeout;\\n return clearTimeout(marker);\\n }\\n try {\\n // when when somebody has screwed with setTimeout but no I.E. maddness\\n return cachedClearTimeout(marker);\\n } catch (e){\\n try {\\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\\n return cachedClearTimeout.call(null, marker);\\n } catch (e){\\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\\n return cachedClearTimeout.call(this, marker);\\n }\\n }\\n\\n\\n\\n}\\nvar queue = [];\\nvar draining = false;\\nvar currentQueue;\\nvar queueIndex = -1;\\n\\nfunction cleanUpNextTick() {\\n if (!draining || !currentQueue) {\\n return;\\n }\\n draining = false;\\n if (currentQueue.length) {\\n queue = currentQueue.concat(queue);\\n } else {\\n queueIndex = -1;\\n }\\n if (queue.length) {\\n drainQueue();\\n }\\n}\\n\\nfunction drainQueue() {\\n if (draining) {\\n return;\\n }\\n var timeout = runTimeout(cleanUpNextTick);\\n draining = true;\\n\\n var len = queue.length;\\n while(len) {\\n currentQueue = queue;\\n queue = [];\\n while (++queueIndex < len) {\\n if (currentQueue) {\\n currentQueue[queueIndex].run();\\n }\\n }\\n queueIndex = -1;\\n len = queue.length;\\n }\\n currentQueue = null;\\n draining = false;\\n runClearTimeout(timeout);\\n}\\n\\nprocess.nextTick = function (fun) {\\n var args = new Array(arguments.length - 1);\\n if (arguments.length > 1) {\\n for (var i = 1; i < arguments.length; i++) {\\n args[i - 1] = arguments[i];\\n }\\n }\\n queue.push(new Item(fun, args));\\n if (queue.length === 1 && !draining) {\\n runTimeout(drainQueue);\\n }\\n};\\n\\n// v8 likes predictible objects\\nfunction Item(fun, array) {\\n this.fun = fun;\\n this.array = array;\\n}\\nItem.prototype.run = function () {\\n this.fun.apply(null, this.array);\\n};\\nprocess.title = 'browser';\\nprocess.browser = true;\\nprocess.env = {};\\nprocess.argv = [];\\nprocess.version = ''; // empty string to avoid regexp issues\\nprocess.versions = {};\\n\\nfunction noop() {}\\n\\nprocess.on = noop;\\nprocess.addListener = noop;\\nprocess.once = noop;\\nprocess.off = noop;\\nprocess.removeListener = noop;\\nprocess.removeAllListeners = noop;\\nprocess.emit = noop;\\n\\nprocess.binding = function (name) {\\n throw new Error('process.binding is not supported');\\n};\\n\\nprocess.cwd = function () { return '/' };\\nprocess.chdir = function (dir) {\\n throw new Error('process.chdir is not supported');\\n};\\nprocess.umask = function() { return 0; };\\n\\n},{}],83:[function(require,module,exports){\\nmodule.exports = require(\\\"./lib/_stream_duplex.js\\\")\\n\\n},{\\\"./lib/_stream_duplex.js\\\":84}],84:[function(require,module,exports){\\n// a duplex stream is just a stream that is both readable and writable.\\n// Since JS doesn't have multiple prototypal inheritance, this class\\n// prototypally inherits from Readable, and then parasitically from\\n// Writable.\\n\\n'use strict';\\n\\n/*<replacement>*/\\n\\nvar objectKeys = Object.keys || function (obj) {\\n var keys = [];\\n for (var key in obj) {\\n keys.push(key);\\n }return keys;\\n};\\n/*</replacement>*/\\n\\nmodule.exports = Duplex;\\n\\n/*<replacement>*/\\nvar processNextTick = require('process-nextick-args');\\n/*</replacement>*/\\n\\n/*<replacement>*/\\nvar util = require('core-util-is');\\nutil.inherits = require('inherits');\\n/*</replacement>*/\\n\\nvar Readable = require('./_stream_readable');\\nvar Writable = require('./_stream_writable');\\n\\nutil.inherits(Duplex, Readable);\\n\\nvar keys = objectKeys(Writable.prototype);\\nfor (var v = 0; v < keys.length; v++) {\\n var method = keys[v];\\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\\n}\\n\\nfunction Duplex(options) {\\n if (!(this instanceof Duplex)) return new Duplex(options);\\n\\n Readable.call(this, options);\\n Writable.call(this, options);\\n\\n if (options && options.readable === false) this.readable = false;\\n\\n if (options && options.writable === false) this.writable = false;\\n\\n this.allowHalfOpen = true;\\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\\n\\n this.once('end', onend);\\n}\\n\\n// the no-half-open enforcer\\nfunction onend() {\\n // if we allow half-open state, or if the writable side ended,\\n // then we're ok.\\n if (this.allowHalfOpen || this._writableState.ended) return;\\n\\n // no more data can be written.\\n // But allow more writes to happen in this tick.\\n processNextTick(onEndNT, this);\\n}\\n\\nfunction onEndNT(self) {\\n self.end();\\n}\\n\\nfunction forEach(xs, f) {\\n for (var i = 0, l = xs.length; i < l; i++) {\\n f(xs[i], i);\\n }\\n}\\n},{\\\"./_stream_readable\\\":86,\\\"./_stream_writable\\\":88,\\\"core-util-is\\\":45,\\\"inherits\\\":66,\\\"process-nextick-args\\\":81}],85:[function(require,module,exports){\\n// a passthrough stream.\\n// basically just the most minimal sort of Transform stream.\\n// Every written chunk gets output as-is.\\n\\n'use strict';\\n\\nmodule.exports = PassThrough;\\n\\nvar Transform = require('./_stream_transform');\\n\\n/*<replacement>*/\\nvar util = require('core-util-is');\\nutil.inherits = require('inherits');\\n/*</replacement>*/\\n\\nutil.inherits(PassThrough, Transform);\\n\\nfunction PassThrough(options) {\\n if (!(this instanceof PassThrough)) return new PassThrough(options);\\n\\n Transform.call(this, options);\\n}\\n\\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\\n cb(null, chunk);\\n};\\n},{\\\"./_stream_transform\\\":87,\\\"core-util-is\\\":45,\\\"inherits\\\":66}],86:[function(require,module,exports){\\n(function (process){\\n'use strict';\\n\\nmodule.exports = Readable;\\n\\n/*<replacement>*/\\nvar processNextTick = require('process-nextick-args');\\n/*</replacement>*/\\n\\n/*<replacement>*/\\nvar isArray = require('isarray');\\n/*</replacement>*/\\n\\nReadable.ReadableState = ReadableState;\\n\\n/*<replacement>*/\\nvar EE = require('events').EventEmitter;\\n\\nvar EElistenerCount = function (emitter, type) {\\n return emitter.listeners(type).length;\\n};\\n/*</replacement>*/\\n\\n/*<replacement>*/\\nvar Stream;\\n(function () {\\n try {\\n Stream = require('st' + 'ream');\\n } catch (_) {} finally {\\n if (!Stream) Stream = require('events').EventEmitter;\\n }\\n})();\\n/*</replacement>*/\\n\\nvar Buffer = require('buffer').Buffer;\\n/*<replacement>*/\\nvar bufferShim = require('buffer-shims');\\n/*</replacement>*/\\n\\n/*<replacement>*/\\nvar util = require('core-util-is');\\nutil.inherits = require('inherits');\\n/*</replacement>*/\\n\\n/*<replacement>*/\\nvar debugUtil = require('util');\\nvar debug = void 0;\\nif (debugUtil && debugUtil.debuglog) {\\n debug = debugUtil.debuglog('stream');\\n} else {\\n debug = function () {};\\n}\\n/*</replacement>*/\\n\\nvar BufferList = require('./internal/streams/BufferList');\\nvar StringDecoder;\\n\\nutil.inherits(Readable, Stream);\\n\\nfunction prependListener(emitter, event, fn) {\\n if (typeof emitter.prependListener === 'function') {\\n return emitter.prependListener(event, fn);\\n } else {\\n // This is a hack to make sure that our error handler is attached before any\\n // userland ones. NEVER DO THIS. This is here only because this code needs\\n // to continue to work with older versions of Node.js that do not include\\n // the prependListener() method. The goal is to eventually remove this hack.\\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\\n }\\n}\\n\\nvar Duplex;\\nfunction ReadableState(options, stream) {\\n Duplex = Duplex || require('./_stream_duplex');\\n\\n options = options || {};\\n\\n // object stream flag. Used to make read(n) ignore n and to\\n // make all the buffer merging and length checks go away\\n this.objectMode = !!options.objectMode;\\n\\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\\n\\n // the point at which it stops calling _read() to fill the buffer\\n // Note: 0 is a valid value, means \\\"don't call _read preemptively ever\\\"\\n var hwm = options.highWaterMark;\\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\\n\\n // cast to ints.\\n this.highWaterMark = ~ ~this.highWaterMark;\\n\\n // A linked list is used to store data chunks instead of an array because the\\n // linked list can remove elements from the beginning faster than\\n // array.shift()\\n this.buffer = new BufferList();\\n this.length = 0;\\n this.pipes = null;\\n this.pipesCount = 0;\\n this.flowing = null;\\n this.ended = false;\\n this.endEmitted = false;\\n this.reading = false;\\n\\n // a flag to be able to tell if the onwrite cb is called immediately,\\n // or on a later tick. We set this to true at first, because any\\n // actions that shouldn't happen until \\\"later\\\" should generally also\\n // not happen before the first write call.\\n this.sync = true;\\n\\n // whenever we return null, then we set a flag to say\\n // that we're awaiting a 'readable' event emission.\\n this.needReadable = false;\\n this.emittedReadable = false;\\n this.readableListening = false;\\n this.resumeScheduled = false;\\n\\n // Crypto is kind of old and crusty. Historically, its default string\\n // encoding is 'binary' so we have to make this configurable.\\n // Everything else in the universe uses 'utf8', though.\\n this.defaultEncoding = options.defaultEncoding || 'utf8';\\n\\n // when piping, we only care about 'readable' events that happen\\n // after read()ing all the bytes and not getting any pushback.\\n this.ranOut = false;\\n\\n // the number of writers that are awaiting a drain event in .pipe()s\\n this.awaitDrain = 0;\\n\\n // if true, a maybeReadMore has been scheduled\\n this.readingMore = false;\\n\\n this.decoder = null;\\n this.encoding = null;\\n if (options.encoding) {\\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\\n this.decoder = new StringDecoder(options.encoding);\\n this.encoding = options.encoding;\\n }\\n}\\n\\nvar Duplex;\\nfunction Readable(options) {\\n Duplex = Duplex || require('./_stream_duplex');\\n\\n if (!(this instanceof Readable)) return new Readable(options);\\n\\n this._readableState = new ReadableState(options, this);\\n\\n // legacy\\n this.readable = true;\\n\\n if (options && typeof options.read === 'function') this._read = options.read;\\n\\n Stream.call(this);\\n}\\n\\n// Manually shove something into the read() buffer.\\n// This returns true if the highWaterMark has not been hit yet,\\n// similar to how Writable.write() returns true if you should\\n// write() some more.\\nReadable.prototype.push = function (chunk, encoding) {\\n var state = this._readableState;\\n\\n if (!state.objectMode && typeof chunk === 'string') {\\n encoding = encoding || state.defaultEncoding;\\n if (encoding !== state.encoding) {\\n chunk = bufferShim.from(chunk, encoding);\\n encoding = '';\\n }\\n }\\n\\n return readableAddChunk(this, state, chunk, encoding, false);\\n};\\n\\n// Unshift should *always* be something directly out of read()\\nReadable.prototype.unshift = function (chunk) {\\n var state = this._readableState;\\n return readableAddChunk(this, state, chunk, '', true);\\n};\\n\\nReadable.prototype.isPaused = function () {\\n return this._readableState.flowing === false;\\n};\\n\\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\\n var er = chunkInvalid(state, chunk);\\n if (er) {\\n stream.emit('error', er);\\n } else if (chunk === null) {\\n state.reading = false;\\n onEofChunk(stream, state);\\n } else if (state.objectMode || chunk && chunk.length > 0) {\\n if (state.ended && !addToFront) {\\n var e = new Error('stream.push() after EOF');\\n stream.emit('error', e);\\n } else if (state.endEmitted && addToFront) {\\n var _e = new Error('stream.unshift() after end event');\\n stream.emit('error', _e);\\n } else {\\n var skipAdd;\\n if (state.decoder && !addToFront && !encoding) {\\n chunk = state.decoder.write(chunk);\\n skipAdd = !state.objectMode && chunk.length === 0;\\n }\\n\\n if (!addToFront) state.reading = false;\\n\\n // Don't add to the buffer if we've decoded to an empty string chunk and\\n // we're not in object mode\\n if (!skipAdd) {\\n // if we want the data now, just emit it.\\n if (state.flowing && state.length === 0 && !state.sync) {\\n stream.emit('data', chunk);\\n stream.read(0);\\n } else {\\n // update the buffer info.\\n state.length += state.objectMode ? 1 : chunk.length;\\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\\n\\n if (state.needReadable) emitReadable(stream);\\n }\\n }\\n\\n maybeReadMore(stream, state);\\n }\\n } else if (!addToFront) {\\n state.reading = false;\\n }\\n\\n return needMoreData(state);\\n}\\n\\n// if it's past the high water mark, we can push in some more.\\n// Also, if we have no data yet, we can stand some\\n// more bytes. This is to work around cases where hwm=0,\\n// such as the repl. Also, if the push() triggered a\\n// readable event, and the user called read(largeNumber) such that\\n// needReadable was set, then we ought to push more, so that another\\n// 'readable' event will be triggered.\\nfunction needMoreData(state) {\\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\\n}\\n\\n// backwards compatibility.\\nReadable.prototype.setEncoding = function (enc) {\\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\\n this._readableState.decoder = new StringDecoder(enc);\\n this._readableState.encoding = enc;\\n return this;\\n};\\n\\n// Don't raise the hwm > 8MB\\nvar MAX_HWM = 0x800000;\\nfunction computeNewHighWaterMark(n) {\\n if (n >= MAX_HWM) {\\n n = MAX_HWM;\\n } else {\\n // Get the next highest power of 2 to prevent increasing hwm excessively in\\n // tiny amounts\\n n--;\\n n |= n >>> 1;\\n n |= n >>> 2;\\n n |= n >>> 4;\\n n |= n >>> 8;\\n n |= n >>> 16;\\n n++;\\n }\\n return n;\\n}\\n\\n// This function is designed to be inlinable, so please take care when making\\n// changes to the function body.\\nfunction howMuchToRead(n, state) {\\n if (n <= 0 || state.length === 0 && state.ended) return 0;\\n if (state.objectMode) return 1;\\n if (n !== n) {\\n // Only flow one buffer at a time\\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\\n }\\n // If we're asking for more than the current hwm, then raise the hwm.\\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\\n if (n <= state.length) return n;\\n // Don't have enough\\n if (!state.ended) {\\n state.needReadable = true;\\n return 0;\\n }\\n return state.length;\\n}\\n\\n// you can override either this method, or the async _read(n) below.\\nReadable.prototype.read = function (n) {\\n debug('read', n);\\n n = parseInt(n, 10);\\n var state = this._readableState;\\n var nOrig = n;\\n\\n if (n !== 0) state.emittedReadable = false;\\n\\n // if we're doing read(0) to trigger a readable event, but we\\n // already have a bunch of data in the buffer, then just trigger\\n // the 'readable' event and move on.\\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\\n debug('read: emitReadable', state.length, state.ended);\\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\\n return null;\\n }\\n\\n n = howMuchToRead(n, state);\\n\\n // if we've ended, and we're now clear, then finish it up.\\n if (n === 0 && state.ended) {\\n if (state.length === 0) endReadable(this);\\n return null;\\n }\\n\\n // All the actual chunk generation logic needs to be\\n // *below* the call to _read. The reason is that in certain\\n // synthetic stream cases, such as passthrough streams, _read\\n // may be a completely synchronous operation which may change\\n // the state of the read buffer, providing enough data when\\n // before there was *not* enough.\\n //\\n // So, the steps are:\\n // 1. Figure out what the state of things will be after we do\\n // a read from the buffer.\\n //\\n // 2. If that resulting state will trigger a _read, then call _read.\\n // Note that this may be asynchronous, or synchronous. Yes, it is\\n // deeply ugly to write APIs this way, but that still doesn't mean\\n // that the Readable class should behave improperly, as streams are\\n // designed to be sync/async agnostic.\\n // Take note if the _read call is sync or async (ie, if the read call\\n // has returned yet), so that we know whether or not it's safe to emit\\n // 'readable' etc.\\n //\\n // 3. Actually pull the requested chunks out of the buffer and return.\\n\\n // if we need a readable event, then we need to do some reading.\\n var doRead = state.needReadable;\\n debug('need readable', doRead);\\n\\n // if we currently have less than the highWaterMark, then also read some\\n if (state.length === 0 || state.length - n < state.highWaterMark) {\\n doRead = true;\\n debug('length less than watermark', doRead);\\n }\\n\\n // however, if we've ended, then there's no point, and if we're already\\n // reading, then it's unnecessary.\\n if (state.ended || state.reading) {\\n doRead = false;\\n debug('reading or ended', doRead);\\n } else if (doRead) {\\n debug('do read');\\n state.reading = true;\\n state.sync = true;\\n // if the length is currently zero, then we *need* a readable event.\\n if (state.length === 0) state.needReadable = true;\\n // call internal read method\\n this._read(state.highWaterMark);\\n state.sync = false;\\n // If _read pushed data synchronously, then `reading` will be false,\\n // and we need to re-evaluate how much data we can return to the user.\\n if (!state.reading) n = howMuchToRead(nOrig, state);\\n }\\n\\n var ret;\\n if (n > 0) ret = fromList(n, state);else ret = null;\\n\\n if (ret === null) {\\n state.needReadable = true;\\n n = 0;\\n } else {\\n state.length -= n;\\n }\\n\\n if (state.length === 0) {\\n // If we have nothing in the buffer, then we want to know\\n // as soon as we *do* get something into the buffer.\\n if (!state.ended) state.needReadable = true;\\n\\n // If we tried to read() past the EOF, then emit end on the next tick.\\n if (nOrig !== n && state.ended) endReadable(this);\\n }\\n\\n if (ret !== null) this.emit('data', ret);\\n\\n return ret;\\n};\\n\\nfunction chunkInvalid(state, chunk) {\\n var er = null;\\n if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {\\n er = new TypeError('Invalid non-string/buffer chunk');\\n }\\n return er;\\n}\\n\\nfunction onEofChunk(stream, state) {\\n if (state.ended) return;\\n if (state.decoder) {\\n var chunk = state.decoder.end();\\n if (chunk && chunk.length) {\\n state.buffer.push(chunk);\\n state.length += state.objectMode ? 1 : chunk.length;\\n }\\n }\\n state.ended = true;\\n\\n // emit 'readable' now to make sure it gets picked up.\\n emitReadable(stream);\\n}\\n\\n// Don't emit readable right away in sync mode, because this can trigger\\n// another read() call => stack overflow. This way, it might trigger\\n// a nextTick recursion warning, but that's not so bad.\\nfunction emitReadable(stream) {\\n var state = stream._readableState;\\n state.needReadable = false;\\n if (!state.emittedReadable) {\\n debug('emitReadable', state.flowing);\\n state.emittedReadable = true;\\n if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);\\n }\\n}\\n\\nfunction emitReadable_(stream) {\\n debug('emit readable');\\n stream.emit('readable');\\n flow(stream);\\n}\\n\\n// at this point, the user has presumably seen the 'readable' event,\\n// and called read() to consume some data. that may have triggered\\n// in turn another _read(n) call, in which case reading = true if\\n// it's in progress.\\n// However, if we're not ended, or reading, and the length < hwm,\\n// then go ahead and try to read some more preemptively.\\nfunction maybeReadMore(stream, state) {\\n if (!state.readingMore) {\\n state.readingMore = true;\\n processNextTick(maybeReadMore_, stream, state);\\n }\\n}\\n\\nfunction maybeReadMore_(stream, state) {\\n var len = state.length;\\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\\n debug('maybeReadMore read 0');\\n stream.read(0);\\n if (len === state.length)\\n // didn't get any data, stop spinning.\\n break;else len = state.length;\\n }\\n state.readingMore = false;\\n}\\n\\n// abstract method. to be overridden in specific implementation classes.\\n// call cb(er, data) where data is <= n in length.\\n// for virtual (non-string, non-buffer) streams, \\\"length\\\" is somewhat\\n// arbitrary, and perhaps not very meaningful.\\nReadable.prototype._read = function (n) {\\n this.emit('error', new Error('not implemented'));\\n};\\n\\nReadable.prototype.pipe = function (dest, pipeOpts) {\\n var src = this;\\n var state = this._readableState;\\n\\n switch (state.pipesCount) {\\n case 0:\\n state.pipes = dest;\\n break;\\n case 1:\\n state.pipes = [state.pipes, dest];\\n break;\\n default:\\n state.pipes.push(dest);\\n break;\\n }\\n state.pipesCount += 1;\\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\\n\\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\\n\\n var endFn = doEnd ? onend : cleanup;\\n if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);\\n\\n dest.on('unpipe', onunpipe);\\n function onunpipe(readable) {\\n debug('onunpipe');\\n if (readable === src) {\\n cleanup();\\n }\\n }\\n\\n function onend() {\\n debug('onend');\\n dest.end();\\n }\\n\\n // when the dest drains, it reduces the awaitDrain counter\\n // on the source. This would be more elegant with a .once()\\n // handler in flow(), but adding and removing repeatedly is\\n // too slow.\\n var ondrain = pipeOnDrain(src);\\n dest.on('drain', ondrain);\\n\\n var cleanedUp = false;\\n function cleanup() {\\n debug('cleanup');\\n // cleanup event handlers once the pipe is broken\\n dest.removeListener('close', onclose);\\n dest.removeListener('finish', onfinish);\\n dest.removeListener('drain', ondrain);\\n dest.removeListener('error', onerror);\\n dest.removeListener('unpipe', onunpipe);\\n src.removeListener('end', onend);\\n src.removeListener('end', cleanup);\\n src.removeListener('data', ondata);\\n\\n cleanedUp = true;\\n\\n // if the reader is waiting for a drain event from this\\n // specific writer, then it would cause it to never start\\n // flowing again.\\n // So, if this is awaiting a drain, then we just call it now.\\n // If we don't know, then assume that we are waiting for one.\\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\\n }\\n\\n // If the user pushes more data while we're writing to dest then we'll end up\\n // in ondata again. However, we only want to increase awaitDrain once because\\n // dest will only emit one 'drain' event for the multiple writes.\\n // => Introduce a guard on increasing awaitDrain.\\n var increasedAwaitDrain = false;\\n src.on('data', ondata);\\n function ondata(chunk) {\\n debug('ondata');\\n increasedAwaitDrain = false;\\n var ret = dest.write(chunk);\\n if (false === ret && !increasedAwaitDrain) {\\n // If the user unpiped during `dest.write()`, it is possible\\n // to get stuck in a permanently paused state if that write\\n // also returned false.\\n // => Check whether `dest` is still a piping destination.\\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\\n debug('false write response, pause', src._readableState.awaitDrain);\\n src._readableState.awaitDrain++;\\n increasedAwaitDrain = true;\\n }\\n src.pause();\\n }\\n }\\n\\n // if the dest has an error, then stop piping into it.\\n // however, don't suppress the throwing behavior for this.\\n function onerror(er) {\\n debug('onerror', er);\\n unpipe();\\n dest.removeListener('error', onerror);\\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\\n }\\n\\n // Make sure our error handler is attached before userland ones.\\n prependListener(dest, 'error', onerror);\\n\\n // Both close and finish should trigger unpipe, but only once.\\n function onclose() {\\n dest.removeListener('finish', onfinish);\\n unpipe();\\n }\\n dest.once('close', onclose);\\n function onfinish() {\\n debug('onfinish');\\n dest.removeListener('close', onclose);\\n unpipe();\\n }\\n dest.once('finish', onfinish);\\n\\n function unpipe() {\\n debug('unpipe');\\n src.unpipe(dest);\\n }\\n\\n // tell the dest that it's being piped to\\n dest.emit('pipe', src);\\n\\n // start the flow if it hasn't been started already.\\n if (!state.flowing) {\\n debug('pipe resume');\\n src.resume();\\n }\\n\\n return dest;\\n};\\n\\nfunction pipeOnDrain(src) {\\n return function () {\\n var state = src._readableState;\\n debug('pipeOnDrain', state.awaitDrain);\\n if (state.awaitDrain) state.awaitDrain--;\\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\\n state.flowing = true;\\n flow(src);\\n }\\n };\\n}\\n\\nReadable.prototype.unpipe = function (dest) {\\n var state = this._readableState;\\n\\n // if we're not piping anywhere, then do nothing.\\n if (state.pipesCount === 0) return this;\\n\\n // just one destination. most common case.\\n if (state.pipesCount === 1) {\\n // passed in one, but it's not the right one.\\n if (dest && dest !== state.pipes) return this;\\n\\n if (!dest) dest = state.pipes;\\n\\n // got a match.\\n state.pipes = null;\\n state.pipesCount = 0;\\n state.flowing = false;\\n if (dest) dest.emit('unpipe', this);\\n return this;\\n }\\n\\n // slow case. multiple pipe destinations.\\n\\n if (!dest) {\\n // remove all.\\n var dests = state.pipes;\\n var len = state.pipesCount;\\n state.pipes = null;\\n state.pipesCount = 0;\\n state.flowing = false;\\n\\n for (var _i = 0; _i < len; _i++) {\\n dests[_i].emit('unpipe', this);\\n }return this;\\n }\\n\\n // try to find the right one.\\n var i = indexOf(state.pipes, dest);\\n if (i === -1) return this;\\n\\n state.pipes.splice(i, 1);\\n state.pipesCount -= 1;\\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\\n\\n dest.emit('unpipe', this);\\n\\n return this;\\n};\\n\\n// set up data events if they are asked for\\n// Ensure readable listeners eventually get something\\nReadable.prototype.on = function (ev, fn) {\\n var res = Stream.prototype.on.call(this, ev, fn);\\n\\n if (ev === 'data') {\\n // Start flowing on next tick if stream isn't explicitly paused\\n if (this._readableState.flowing !== false) this.resume();\\n } else if (ev === 'readable') {\\n var state = this._readableState;\\n if (!state.endEmitted && !state.readableListening) {\\n state.readableListening = state.needReadable = true;\\n state.emittedReadable = false;\\n if (!state.reading) {\\n processNextTick(nReadingNextTick, this);\\n } else if (state.length) {\\n emitReadable(this, state);\\n }\\n }\\n }\\n\\n return res;\\n};\\nReadable.prototype.addListener = Readable.prototype.on;\\n\\nfunction nReadingNextTick(self) {\\n debug('readable nexttick read 0');\\n self.read(0);\\n}\\n\\n// pause() and resume() are remnants of the legacy readable stream API\\n// If the user uses them, then switch into old mode.\\nReadable.prototype.resume = function () {\\n var state = this._readableState;\\n if (!state.flowing) {\\n debug('resume');\\n state.flowing = true;\\n resume(this, state);\\n }\\n return this;\\n};\\n\\nfunction resume(stream, state) {\\n if (!state.resumeScheduled) {\\n state.resumeScheduled = true;\\n processNextTick(resume_, stream, state);\\n }\\n}\\n\\nfunction resume_(stream, state) {\\n if (!state.reading) {\\n debug('resume read 0');\\n stream.read(0);\\n }\\n\\n state.resumeScheduled = false;\\n state.awaitDrain = 0;\\n stream.emit('resume');\\n flow(stream);\\n if (state.flowing && !state.reading) stream.read(0);\\n}\\n\\nReadable.prototype.pause = function () {\\n debug('call pause flowing=%j', this._readableState.flowing);\\n if (false !== this._readableState.flowing) {\\n debug('pause');\\n this._readableState.flowing = false;\\n this.emit('pause');\\n }\\n return this;\\n};\\n\\nfunction flow(stream) {\\n var state = stream._readableState;\\n debug('flow', state.flowing);\\n while (state.flowing && stream.read() !== null) {}\\n}\\n\\n// wrap an old-style stream as the async data source.\\n// This is *not* part of the readable stream interface.\\n// It is an ugly unfortunate mess of history.\\nReadable.prototype.wrap = function (stream) {\\n var state = this._readableState;\\n var paused = false;\\n\\n var self = this;\\n stream.on('end', function () {\\n debug('wrapped end');\\n if (state.decoder && !state.ended) {\\n var chunk = state.decoder.end();\\n if (chunk && chunk.length) self.push(chunk);\\n }\\n\\n self.push(null);\\n });\\n\\n stream.on('data', function (chunk) {\\n debug('wrapped data');\\n if (state.decoder) chunk = state.decoder.write(chunk);\\n\\n // don't skip over falsy values in objectMode\\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\\n\\n var ret = self.push(chunk);\\n if (!ret) {\\n paused = true;\\n stream.pause();\\n }\\n });\\n\\n // proxy all the other methods.\\n // important when wrapping filters and duplexes.\\n for (var i in stream) {\\n if (this[i] === undefined && typeof stream[i] === 'function') {\\n this[i] = function (method) {\\n return function () {\\n return stream[method].apply(stream, arguments);\\n };\\n }(i);\\n }\\n }\\n\\n // proxy certain important events.\\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\\n forEach(events, function (ev) {\\n stream.on(ev, self.emit.bind(self, ev));\\n });\\n\\n // when we try to consume some more bytes, simply unpause the\\n // underlying stream.\\n self._read = function (n) {\\n debug('wrapped _read', n);\\n if (paused) {\\n paused = false;\\n stream.resume();\\n }\\n };\\n\\n return self;\\n};\\n\\n// exposed for testing purposes only.\\nReadable._fromList = fromList;\\n\\n// Pluck off n bytes from an array of buffers.\\n// Length is the combined lengths of all the buffers in the list.\\n// This function is designed to be inlinable, so please take care when making\\n// changes to the function body.\\nfunction fromList(n, state) {\\n // nothing buffered\\n if (state.length === 0) return null;\\n\\n var ret;\\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\\n // read it all, truncate the list\\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\\n state.buffer.clear();\\n } else {\\n // read part of list\\n ret = fromListPartial(n, state.buffer, state.decoder);\\n }\\n\\n return ret;\\n}\\n\\n// Extracts only enough buffered data to satisfy the amount requested.\\n// This function is designed to be inlinable, so please take care when making\\n// changes to the function body.\\nfunction fromListPartial(n, list, hasStrings) {\\n var ret;\\n if (n < list.head.data.length) {\\n // slice is the same for buffers and strings\\n ret = list.head.data.slice(0, n);\\n list.head.data = list.head.data.slice(n);\\n } else if (n === list.head.data.length) {\\n // first chunk is a perfect match\\n ret = list.shift();\\n } else {\\n // result spans more than one buffer\\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\\n }\\n return ret;\\n}\\n\\n// Copies a specified amount of characters from the list of buffered data\\n// chunks.\\n// This function is designed to be inlinable, so please take care when making\\n// changes to the function body.\\nfunction copyFromBufferString(n, list) {\\n var p = list.head;\\n var c = 1;\\n var ret = p.data;\\n n -= ret.length;\\n while (p = p.next) {\\n var str = p.data;\\n var nb = n > str.length ? str.length : n;\\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\\n n -= nb;\\n if (n === 0) {\\n if (nb === str.length) {\\n ++c;\\n if (p.next) list.head = p.next;else list.head = list.tail = null;\\n } else {\\n list.head = p;\\n p.data = str.slice(nb);\\n }\\n break;\\n }\\n ++c;\\n }\\n list.length -= c;\\n return ret;\\n}\\n\\n// Copies a specified amount of bytes from the list of buffered data chunks.\\n// This function is designed to be inlinable, so please take care when making\\n// changes to the function body.\\nfunction copyFromBuffer(n, list) {\\n var ret = bufferShim.allocUnsafe(n);\\n var p = list.head;\\n var c = 1;\\n p.data.copy(ret);\\n n -= p.data.length;\\n while (p = p.next) {\\n var buf = p.data;\\n var nb = n > buf.length ? buf.length : n;\\n buf.copy(ret, ret.length - n, 0, nb);\\n n -= nb;\\n if (n === 0) {\\n if (nb === buf.length) {\\n ++c;\\n if (p.next) list.head = p.next;else list.head = list.tail = null;\\n } else {\\n list.head = p;\\n p.data = buf.slice(nb);\\n }\\n break;\\n }\\n ++c;\\n }\\n list.length -= c;\\n return ret;\\n}\\n\\nfunction endReadable(stream) {\\n var state = stream._readableState;\\n\\n // If we get here before consuming all the bytes, then that is a\\n // bug in node. Should never happen.\\n if (state.length > 0) throw new Error('\\\"endReadable()\\\" called on non-empty stream');\\n\\n if (!state.endEmitted) {\\n state.ended = true;\\n processNextTick(endReadableNT, state, stream);\\n }\\n}\\n\\nfunction endReadableNT(state, stream) {\\n // Check that we didn't get one last unshift.\\n if (!state.endEmitted && state.length === 0) {\\n state.endEmitted = true;\\n stream.readable = false;\\n stream.emit('end');\\n }\\n}\\n\\nfunction forEach(xs, f) {\\n for (var i = 0, l = xs.length; i < l; i++) {\\n f(xs[i], i);\\n }\\n}\\n\\nfunction indexOf(xs, x) {\\n for (var i = 0, l = xs.length; i < l; i++) {\\n if (xs[i] === x) return i;\\n }\\n return -1;\\n}\\n}).call(this,require('_process'))\\n},{\\\"./_stream_duplex\\\":84,\\\"./internal/streams/BufferList\\\":89,\\\"_process\\\":82,\\\"buffer\\\":44,\\\"buffer-shims\\\":43,\\\"core-util-is\\\":45,\\\"events\\\":63,\\\"inherits\\\":66,\\\"isarray\\\":68,\\\"process-nextick-args\\\":81,\\\"string_decoder/\\\":95,\\\"util\\\":40}],87:[function(require,module,exports){\\n// a transform stream is a readable/writable stream where you do\\n// something with the data. Sometimes it's called a \\\"filter\\\",\\n// but that's not a great name for it, since that implies a thing where\\n// some bits pass through, and others are simply ignored. (That would\\n// be a valid example of a transform, of course.)\\n//\\n// While the output is causally related to the input, it's not a\\n// necessarily symmetric or synchronous transformation. For example,\\n// a zlib stream might take multiple plain-text writes(), and then\\n// emit a single compressed chunk some time in the future.\\n//\\n// Here's how this works:\\n//\\n// The Transform stream has all the aspects of the readable and writable\\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\\n// internally, and returns false if there's a lot of pending writes\\n// buffered up. When you call read(), that calls _read(n) until\\n// there's enough pending readable data buffered up.\\n//\\n// In a transform stream, the written data is placed in a buffer. When\\n// _read(n) is called, it transforms the queued up data, calling the\\n// buffered _write cb's as it consumes chunks. If consuming a single\\n// written chunk would result in multiple output chunks, then the first\\n// outputted bit calls the readcb, and subsequent chunks just go into\\n// the read buffer, and will cause it to emit 'readable' if necessary.\\n//\\n// This way, back-pressure is actually determined by the reading side,\\n// since _read has to be called to start processing a new chunk. However,\\n// a pathological inflate type of transform can cause excessive buffering\\n// here. For example, imagine a stream where every byte of input is\\n// interpreted as an integer from 0-255, and then results in that many\\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\\n// 1kb of data being output. In this case, you could write a very small\\n// amount of input, and end up with a very large amount of output. In\\n// such a pathological inflating mechanism, there'd be no way to tell\\n// the system to stop doing the transform. A single 4MB write could\\n// cause the system to run out of memory.\\n//\\n// However, even in such a pathological case, only a single written chunk\\n// would be consumed, and then the rest would wait (un-transformed) until\\n// the results of the previous transformed chunk were consumed.\\n\\n'use strict';\\n\\nmodule.exports = Transform;\\n\\nvar Duplex = require('./_stream_duplex');\\n\\n/*<replacement>*/\\nvar util = require('core-util-is');\\nutil.inherits = require('inherits');\\n/*</replacement>*/\\n\\nutil.inherits(Transform, Duplex);\\n\\nfunction TransformState(stream) {\\n this.afterTransform = function (er, data) {\\n return afterTransform(stream, er, data);\\n };\\n\\n this.needTransform = false;\\n this.transforming = false;\\n this.writecb = null;\\n this.writechunk = null;\\n this.writeencoding = null;\\n}\\n\\nfunction afterTransform(stream, er, data) {\\n var ts = stream._transformState;\\n ts.transforming = false;\\n\\n var cb = ts.writecb;\\n\\n if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));\\n\\n ts.writechunk = null;\\n ts.writecb = null;\\n\\n if (data !== null && data !== undefined) stream.push(data);\\n\\n cb(er);\\n\\n var rs = stream._readableState;\\n rs.reading = false;\\n if (rs.needReadable || rs.length < rs.highWaterMark) {\\n stream._read(rs.highWaterMark);\\n }\\n}\\n\\nfunction Transform(options) {\\n if (!(this instanceof Transform)) return new Transform(options);\\n\\n Duplex.call(this, options);\\n\\n this._transformState = new TransformState(this);\\n\\n // when the writable side finishes, then flush out anything remaining.\\n var stream = this;\\n\\n // start out asking for a readable event once data is transformed.\\n this._readableState.needReadable = true;\\n\\n // we have implemented the _read method, and done the other things\\n // that Readable wants before the first _read call, so unset the\\n // sync guard flag.\\n this._readableState.sync = false;\\n\\n if (options) {\\n if (typeof options.transform === 'function') this._transform = options.transform;\\n\\n if (typeof options.flush === 'function') this._flush = options.flush;\\n }\\n\\n this.once('prefinish', function () {\\n if (typeof this._flush === 'function') this._flush(function (er) {\\n done(stream, er);\\n });else done(stream);\\n });\\n}\\n\\nTransform.prototype.push = function (chunk, encoding) {\\n this._transformState.needTransform = false;\\n return Duplex.prototype.push.call(this, chunk, encoding);\\n};\\n\\n// This is the part where you do stuff!\\n// override this function in implementation classes.\\n// 'chunk' is an input chunk.\\n//\\n// Call `push(newChunk)` to pass along transformed output\\n// to the readable side. You may call 'push' zero or more times.\\n//\\n// Call `cb(err)` when you are done with this chunk. If you pass\\n// an error, then that'll put the hurt on the whole operation. If you\\n// never call cb(), then you'll never get another chunk.\\nTransform.prototype._transform = function (chunk, encoding, cb) {\\n throw new Error('Not implemented');\\n};\\n\\nTransform.prototype._write = function (chunk, encoding, cb) {\\n var ts = this._transformState;\\n ts.writecb = cb;\\n ts.writechunk = chunk;\\n ts.writeencoding = encoding;\\n if (!ts.transforming) {\\n var rs = this._readableState;\\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\\n }\\n};\\n\\n// Doesn't matter what the args are here.\\n// _transform does all the work.\\n// That we got here means that the readable side wants more data.\\nTransform.prototype._read = function (n) {\\n var ts = this._transformState;\\n\\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\\n ts.transforming = true;\\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\\n } else {\\n // mark that we need a transform, so that any data that comes in\\n // will get processed, now that we've asked for it.\\n ts.needTransform = true;\\n }\\n};\\n\\nfunction done(stream, er) {\\n if (er) return stream.emit('error', er);\\n\\n // if there's nothing in the write buffer, then that means\\n // that nothing more will ever be provided\\n var ws = stream._writableState;\\n var ts = stream._transformState;\\n\\n if (ws.length) throw new Error('Calling transform done when ws.length != 0');\\n\\n if (ts.transforming) throw new Error('Calling transform done when still transforming');\\n\\n return stream.push(null);\\n}\\n},{\\\"./_stream_duplex\\\":84,\\\"core-util-is\\\":45,\\\"inherits\\\":66}],88:[function(require,module,exports){\\n(function (process){\\n// A bit simpler than readable streams.\\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\\n// the drain event emission and buffering.\\n\\n'use strict';\\n\\nmodule.exports = Writable;\\n\\n/*<replacement>*/\\nvar processNextTick = require('process-nextick-args');\\n/*</replacement>*/\\n\\n/*<replacement>*/\\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\\n/*</replacement>*/\\n\\nWritable.WritableState = WritableState;\\n\\n/*<replacement>*/\\nvar util = require('core-util-is');\\nutil.inherits = require('inherits');\\n/*</replacement>*/\\n\\n/*<replacement>*/\\nvar internalUtil = {\\n deprecate: require('util-deprecate')\\n};\\n/*</replacement>*/\\n\\n/*<replacement>*/\\nvar Stream;\\n(function () {\\n try {\\n Stream = require('st' + 'ream');\\n } catch (_) {} finally {\\n if (!Stream) Stream = require('events').EventEmitter;\\n }\\n})();\\n/*</replacement>*/\\n\\nvar Buffer = require('buffer').Buffer;\\n/*<replacement>*/\\nvar bufferShim = require('buffer-shims');\\n/*</replacement>*/\\n\\nutil.inherits(Writable, Stream);\\n\\nfunction nop() {}\\n\\nfunction WriteReq(chunk, encoding, cb) {\\n this.chunk = chunk;\\n this.encoding = encoding;\\n this.callback = cb;\\n this.next = null;\\n}\\n\\nvar Duplex;\\nfunction WritableState(options, stream) {\\n Duplex = Duplex || require('./_stream_duplex');\\n\\n options = options || {};\\n\\n // object stream flag to indicate whether or not this stream\\n // contains buffers or objects.\\n this.objectMode = !!options.objectMode;\\n\\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\\n\\n // the point at which write() starts returning false\\n // Note: 0 is a valid value, means that we always return false if\\n // the entire buffer is not flushed immediately on write()\\n var hwm = options.highWaterMark;\\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\\n\\n // cast to ints.\\n this.highWaterMark = ~ ~this.highWaterMark;\\n\\n this.needDrain = false;\\n // at the start of calling end()\\n this.ending = false;\\n // when end() has been called, and returned\\n this.ended = false;\\n // when 'finish' is emitted\\n this.finished = false;\\n\\n // should we decode strings into buffers before passing to _write?\\n // this is here so that some node-core streams can optimize string\\n // handling at a lower level.\\n var noDecode = options.decodeStrings === false;\\n this.decodeStrings = !noDecode;\\n\\n // Crypto is kind of old and crusty. Historically, its default string\\n // encoding is 'binary' so we have to make this configurable.\\n // Everything else in the universe uses 'utf8', though.\\n this.defaultEncoding = options.defaultEncoding || 'utf8';\\n\\n // not an actual buffer we keep track of, but a measurement\\n // of how much we're waiting to get pushed to some underlying\\n // socket or file.\\n this.length = 0;\\n\\n // a flag to see when we're in the middle of a write.\\n this.writing = false;\\n\\n // when true all writes will be buffered until .uncork() call\\n this.corked = 0;\\n\\n // a flag to be able to tell if the onwrite cb is called immediately,\\n // or on a later tick. We set this to true at first, because any\\n // actions that shouldn't happen until \\\"later\\\" should generally also\\n // not happen before the first write call.\\n this.sync = true;\\n\\n // a flag to know if we're processing previously buffered items, which\\n // may call the _write() callback in the same tick, so that we don't\\n // end up in an overlapped onwrite situation.\\n this.bufferProcessing = false;\\n\\n // the callback that's passed to _write(chunk,cb)\\n this.onwrite = function (er) {\\n onwrite(stream, er);\\n };\\n\\n // the callback that the user supplies to write(chunk,encoding,cb)\\n this.writecb = null;\\n\\n // the amount that is being written when _write is called.\\n this.writelen = 0;\\n\\n this.bufferedRequest = null;\\n this.lastBufferedRequest = null;\\n\\n // number of pending user-supplied write callbacks\\n // this must be 0 before 'finish' can be emitted\\n this.pendingcb = 0;\\n\\n // emit prefinish if the only thing we're waiting for is _write cbs\\n // This is relevant for synchronous Transform streams\\n this.prefinished = false;\\n\\n // True if the error was already emitted and should not be thrown again\\n this.errorEmitted = false;\\n\\n // count buffered requests\\n this.bufferedRequestCount = 0;\\n\\n // allocate the first CorkedRequest, there is always\\n // one allocated and free to use, and we maintain at most two\\n this.corkedRequestsFree = new CorkedRequest(this);\\n}\\n\\nWritableState.prototype.getBuffer = function writableStateGetBuffer() {\\n var current = this.bufferedRequest;\\n var out = [];\\n while (current) {\\n out.push(current);\\n current = current.next;\\n }\\n return out;\\n};\\n\\n(function () {\\n try {\\n Object.defineProperty(WritableState.prototype, 'buffer', {\\n get: internalUtil.deprecate(function () {\\n return this.getBuffer();\\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')\\n });\\n } catch (_) {}\\n})();\\n\\nvar Duplex;\\nfunction Writable(options) {\\n Duplex = Duplex || require('./_stream_duplex');\\n\\n // Writable ctor is applied to Duplexes, though they're not\\n // instanceof Writable, they're instanceof Readable.\\n if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options);\\n\\n this._writableState = new WritableState(options, this);\\n\\n // legacy.\\n this.writable = true;\\n\\n if (options) {\\n if (typeof options.write === 'function') this._write = options.write;\\n\\n if (typeof options.writev === 'function') this._writev = options.writev;\\n }\\n\\n Stream.call(this);\\n}\\n\\n// Otherwise people can pipe Writable streams, which is just wrong.\\nWritable.prototype.pipe = function () {\\n this.emit('error', new Error('Cannot pipe, not readable'));\\n};\\n\\nfunction writeAfterEnd(stream, cb) {\\n var er = new Error('write after end');\\n // TODO: defer error events consistently everywhere, not just the cb\\n stream.emit('error', er);\\n processNextTick(cb, er);\\n}\\n\\n// If we get something that is not a buffer, string, null, or undefined,\\n// and we're not in objectMode, then that's an error.\\n// Otherwise stream chunks are all considered to be of length=1, and the\\n// watermarks determine how many objects to keep in the buffer, rather than\\n// how many bytes or characters.\\nfunction validChunk(stream, state, chunk, cb) {\\n var valid = true;\\n var er = false;\\n // Always throw error if a null is written\\n // if we are not in object mode then throw\\n // if it is not a buffer, string, or undefined.\\n if (chunk === null) {\\n er = new TypeError('May not write null values to stream');\\n } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\\n er = new TypeError('Invalid non-string/buffer chunk');\\n }\\n if (er) {\\n stream.emit('error', er);\\n processNextTick(cb, er);\\n valid = false;\\n }\\n return valid;\\n}\\n\\nWritable.prototype.write = function (chunk, encoding, cb) {\\n var state = this._writableState;\\n var ret = false;\\n\\n if (typeof encoding === 'function') {\\n cb = encoding;\\n encoding = null;\\n }\\n\\n if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\\n\\n if (typeof cb !== 'function') cb = nop;\\n\\n if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {\\n state.pendingcb++;\\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\\n }\\n\\n return ret;\\n};\\n\\nWritable.prototype.cork = function () {\\n var state = this._writableState;\\n\\n state.corked++;\\n};\\n\\nWritable.prototype.uncork = function () {\\n var state = this._writableState;\\n\\n if (state.corked) {\\n state.corked--;\\n\\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\\n }\\n};\\n\\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\\n // node::ParseEncoding() requires lower case.\\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\\n this._writableState.defaultEncoding = encoding;\\n return this;\\n};\\n\\nfunction decodeChunk(state, chunk, encoding) {\\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\\n chunk = bufferShim.from(chunk, encoding);\\n }\\n return chunk;\\n}\\n\\n// if we're already writing something, then just put this\\n// in the queue, and wait our turn. Otherwise, call _write\\n// If we return false, then we need a drain event, so set that flag.\\nfunction writeOrBuffer(stream, state, chunk, encoding, cb) {\\n chunk = decodeChunk(state, chunk, encoding);\\n\\n if (Buffer.isBuffer(chunk)) encoding = 'buffer';\\n var len = state.objectMode ? 1 : chunk.length;\\n\\n state.length += len;\\n\\n var ret = state.length < state.highWaterMark;\\n // we must ensure that previous needDrain will not be reset to false.\\n if (!ret) state.needDrain = true;\\n\\n if (state.writing || state.corked) {\\n var last = state.lastBufferedRequest;\\n state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);\\n if (last) {\\n last.next = state.lastBufferedRequest;\\n } else {\\n state.bufferedRequest = state.lastBufferedRequest;\\n }\\n state.bufferedRequestCount += 1;\\n } else {\\n doWrite(stream, state, false, len, chunk, encoding, cb);\\n }\\n\\n return ret;\\n}\\n\\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\\n state.writelen = len;\\n state.writecb = cb;\\n state.writing = true;\\n state.sync = true;\\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\\n state.sync = false;\\n}\\n\\nfunction onwriteError(stream, state, sync, er, cb) {\\n --state.pendingcb;\\n if (sync) processNextTick(cb, er);else cb(er);\\n\\n stream._writableState.errorEmitted = true;\\n stream.emit('error', er);\\n}\\n\\nfunction onwriteStateUpdate(state) {\\n state.writing = false;\\n state.writecb = null;\\n state.length -= state.writelen;\\n state.writelen = 0;\\n}\\n\\nfunction onwrite(stream, er) {\\n var state = stream._writableState;\\n var sync = state.sync;\\n var cb = state.writecb;\\n\\n onwriteStateUpdate(state);\\n\\n if (er) onwriteError(stream, state, sync, er, cb);else {\\n // Check if we're actually ready to finish, but don't emit yet\\n var finished = needFinish(state);\\n\\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\\n clearBuffer(stream, state);\\n }\\n\\n if (sync) {\\n /*<replacement>*/\\n asyncWrite(afterWrite, stream, state, finished, cb);\\n /*</replacement>*/\\n } else {\\n afterWrite(stream, state, finished, cb);\\n }\\n }\\n}\\n\\nfunction afterWrite(stream, state, finished, cb) {\\n if (!finished) onwriteDrain(stream, state);\\n state.pendingcb--;\\n cb();\\n finishMaybe(stream, state);\\n}\\n\\n// Must force callback to be called on nextTick, so that we don't\\n// emit 'drain' before the write() consumer gets the 'false' return\\n// value, and has a chance to attach a 'drain' listener.\\nfunction onwriteDrain(stream, state) {\\n if (state.length === 0 && state.needDrain) {\\n state.needDrain = false;\\n stream.emit('drain');\\n }\\n}\\n\\n// if there's something in the buffer waiting, then process it\\nfunction clearBuffer(stream, state) {\\n state.bufferProcessing = true;\\n var entry = state.bufferedRequest;\\n\\n if (stream._writev && entry && entry.next) {\\n // Fast case, write everything using _writev()\\n var l = state.bufferedRequestCount;\\n var buffer = new Array(l);\\n var holder = state.corkedRequestsFree;\\n holder.entry = entry;\\n\\n var count = 0;\\n while (entry) {\\n buffer[count] = entry;\\n entry = entry.next;\\n count += 1;\\n }\\n\\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\\n\\n // doWrite is almost always async, defer these to save a bit of time\\n // as the hot path ends with doWrite\\n state.pendingcb++;\\n state.lastBufferedRequest = null;\\n if (holder.next) {\\n state.corkedRequestsFree = holder.next;\\n holder.next = null;\\n } else {\\n state.corkedRequestsFree = new CorkedRequest(state);\\n }\\n } else {\\n // Slow case, write chunks one-by-one\\n while (entry) {\\n var chunk = entry.chunk;\\n var encoding = entry.encoding;\\n var cb = entry.callback;\\n var len = state.objectMode ? 1 : chunk.length;\\n\\n doWrite(stream, state, false, len, chunk, encoding, cb);\\n entry = entry.next;\\n // if we didn't call the onwrite immediately, then\\n // it means that we need to wait until it does.\\n // also, that means that the chunk and cb are currently\\n // being processed, so move the buffer counter past them.\\n if (state.writing) {\\n break;\\n }\\n }\\n\\n if (entry === null) state.lastBufferedRequest = null;\\n }\\n\\n state.bufferedRequestCount = 0;\\n state.bufferedRequest = entry;\\n state.bufferProcessing = false;\\n}\\n\\nWritable.prototype._write = function (chunk, encoding, cb) {\\n cb(new Error('not implemented'));\\n};\\n\\nWritable.prototype._writev = null;\\n\\nWritable.prototype.end = function (chunk, encoding, cb) {\\n var state = this._writableState;\\n\\n if (typeof chunk === 'function') {\\n cb = chunk;\\n chunk = null;\\n encoding = null;\\n } else if (typeof encoding === 'function') {\\n cb = encoding;\\n encoding = null;\\n }\\n\\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\\n\\n // .end() fully uncorks\\n if (state.corked) {\\n state.corked = 1;\\n this.uncork();\\n }\\n\\n // ignore unnecessary end() calls.\\n if (!state.ending && !state.finished) endWritable(this, state, cb);\\n};\\n\\nfunction needFinish(state) {\\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\\n}\\n\\nfunction prefinish(stream, state) {\\n if (!state.prefinished) {\\n state.prefinished = true;\\n stream.emit('prefinish');\\n }\\n}\\n\\nfunction finishMaybe(stream, state) {\\n var need = needFinish(state);\\n if (need) {\\n if (state.pendingcb === 0) {\\n prefinish(stream, state);\\n state.finished = true;\\n stream.emit('finish');\\n } else {\\n prefinish(stream, state);\\n }\\n }\\n return need;\\n}\\n\\nfunction endWritable(stream, state, cb) {\\n state.ending = true;\\n finishMaybe(stream, state);\\n if (cb) {\\n if (state.finished) processNextTick(cb);else stream.once('finish', cb);\\n }\\n state.ended = true;\\n stream.writable = false;\\n}\\n\\n// It seems a linked list but it is not\\n// there will be only 2 of these for each stream\\nfunction CorkedRequest(state) {\\n var _this = this;\\n\\n this.next = null;\\n this.entry = null;\\n\\n this.finish = function (err) {\\n var entry = _this.entry;\\n _this.entry = null;\\n while (entry) {\\n var cb = entry.callback;\\n state.pendingcb--;\\n cb(err);\\n entry = entry.next;\\n }\\n if (state.corkedRequestsFree) {\\n state.corkedRequestsFree.next = _this;\\n } else {\\n state.corkedRequestsFree = _this;\\n }\\n };\\n}\\n}).call(this,require('_process'))\\n},{\\\"./_stream_duplex\\\":84,\\\"_process\\\":82,\\\"buffer\\\":44,\\\"buffer-shims\\\":43,\\\"core-util-is\\\":45,\\\"events\\\":63,\\\"inherits\\\":66,\\\"process-nextick-args\\\":81,\\\"util-deprecate\\\":96}],89:[function(require,module,exports){\\n'use strict';\\n\\nvar Buffer = require('buffer').Buffer;\\n/*<replacement>*/\\nvar bufferShim = require('buffer-shims');\\n/*</replacement>*/\\n\\nmodule.exports = BufferList;\\n\\nfunction BufferList() {\\n this.head = null;\\n this.tail = null;\\n this.length = 0;\\n}\\n\\nBufferList.prototype.push = function (v) {\\n var entry = { data: v, next: null };\\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\\n this.tail = entry;\\n ++this.length;\\n};\\n\\nBufferList.prototype.unshift = function (v) {\\n var entry = { data: v, next: this.head };\\n if (this.length === 0) this.tail = entry;\\n this.head = entry;\\n ++this.length;\\n};\\n\\nBufferList.prototype.shift = function () {\\n if (this.length === 0) return;\\n var ret = this.head.data;\\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\\n --this.length;\\n return ret;\\n};\\n\\nBufferList.prototype.clear = function () {\\n this.head = this.tail = null;\\n this.length = 0;\\n};\\n\\nBufferList.prototype.join = function (s) {\\n if (this.length === 0) return '';\\n var p = this.head;\\n var ret = '' + p.data;\\n while (p = p.next) {\\n ret += s + p.data;\\n }return ret;\\n};\\n\\nBufferList.prototype.concat = function (n) {\\n if (this.length === 0) return bufferShim.alloc(0);\\n if (this.length === 1) return this.head.data;\\n var ret = bufferShim.allocUnsafe(n >>> 0);\\n var p = this.head;\\n var i = 0;\\n while (p) {\\n p.data.copy(ret, i);\\n i += p.data.length;\\n p = p.next;\\n }\\n return ret;\\n};\\n},{\\\"buffer\\\":44,\\\"buffer-shims\\\":43}],90:[function(require,module,exports){\\nmodule.exports = require(\\\"./lib/_stream_passthrough.js\\\")\\n\\n},{\\\"./lib/_stream_passthrough.js\\\":85}],91:[function(require,module,exports){\\n(function (process){\\nvar Stream = (function (){\\n try {\\n return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify\\n } catch(_){}\\n}());\\nexports = module.exports = require('./lib/_stream_readable.js');\\nexports.Stream = Stream || exports;\\nexports.Readable = exports;\\nexports.Writable = require('./lib/_stream_writable.js');\\nexports.Duplex = require('./lib/_stream_duplex.js');\\nexports.Transform = require('./lib/_stream_transform.js');\\nexports.PassThrough = require('./lib/_stream_passthrough.js');\\n\\nif (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {\\n module.exports = Stream;\\n}\\n\\n}).call(this,require('_process'))\\n},{\\\"./lib/_stream_duplex.js\\\":84,\\\"./lib/_stream_passthrough.js\\\":85,\\\"./lib/_stream_readable.js\\\":86,\\\"./lib/_stream_transform.js\\\":87,\\\"./lib/_stream_writable.js\\\":88,\\\"_process\\\":82}],92:[function(require,module,exports){\\nmodule.exports = require(\\\"./lib/_stream_transform.js\\\")\\n\\n},{\\\"./lib/_stream_transform.js\\\":87}],93:[function(require,module,exports){\\nmodule.exports = require(\\\"./lib/_stream_writable.js\\\")\\n\\n},{\\\"./lib/_stream_writable.js\\\":88}],94:[function(require,module,exports){\\n// Copyright Joyent, Inc. and other Node contributors.\\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a\\n// copy of this software and associated documentation files (the\\n// \\\"Software\\\"), to deal in the Software without restriction, including\\n// without limitation the rights to use, copy, modify, merge, publish,\\n// distribute, sublicense, and/or sell copies of the Software, and to permit\\n// persons to whom the Software is furnished to do so, subject to the\\n// following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included\\n// in all copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\nmodule.exports = Stream;\\n\\nvar EE = require('events').EventEmitter;\\nvar inherits = require('inherits');\\n\\ninherits(Stream, EE);\\nStream.Readable = require('readable-stream/readable.js');\\nStream.Writable = require('readable-stream/writable.js');\\nStream.Duplex = require('readable-stream/duplex.js');\\nStream.Transform = require('readable-stream/transform.js');\\nStream.PassThrough = require('readable-stream/passthrough.js');\\n\\n// Backwards-compat with node 0.4.x\\nStream.Stream = Stream;\\n\\n\\n\\n// old-style streams. Note that the pipe method (the only relevant\\n// part of this class) is overridden in the Readable class.\\n\\nfunction Stream() {\\n EE.call(this);\\n}\\n\\nStream.prototype.pipe = function(dest, options) {\\n var source = this;\\n\\n function ondata(chunk) {\\n if (dest.writable) {\\n if (false === dest.write(chunk) && source.pause) {\\n source.pause();\\n }\\n }\\n }\\n\\n source.on('data', ondata);\\n\\n function ondrain() {\\n if (source.readable && source.resume) {\\n source.resume();\\n }\\n }\\n\\n dest.on('drain', ondrain);\\n\\n // If the 'end' option is not supplied, dest.end() will be called when\\n // source gets the 'end' or 'close' events. Only dest.end() once.\\n if (!dest._isStdio && (!options || options.end !== false)) {\\n source.on('end', onend);\\n source.on('close', onclose);\\n }\\n\\n var didOnEnd = false;\\n function onend() {\\n if (didOnEnd) return;\\n didOnEnd = true;\\n\\n dest.end();\\n }\\n\\n\\n function onclose() {\\n if (didOnEnd) return;\\n didOnEnd = true;\\n\\n if (typeof dest.destroy === 'function') dest.destroy();\\n }\\n\\n // don't leave dangling pipes when there are errors.\\n function onerror(er) {\\n cleanup();\\n if (EE.listenerCount(this, 'error') === 0) {\\n throw er; // Unhandled stream error in pipe.\\n }\\n }\\n\\n source.on('error', onerror);\\n dest.on('error', onerror);\\n\\n // remove all the event listeners that were added.\\n function cleanup() {\\n source.removeListener('data', ondata);\\n dest.removeListener('drain', ondrain);\\n\\n source.removeListener('end', onend);\\n source.removeListener('close', onclose);\\n\\n source.removeListener('error', onerror);\\n dest.removeListener('error', onerror);\\n\\n source.removeListener('end', cleanup);\\n source.removeListener('close', cleanup);\\n\\n dest.removeListener('close', cleanup);\\n }\\n\\n source.on('end', cleanup);\\n source.on('close', cleanup);\\n\\n dest.on('close', cleanup);\\n\\n dest.emit('pipe', source);\\n\\n // Allow for unix-like usage: A.pipe(B).pipe(C)\\n return dest;\\n};\\n\\n},{\\\"events\\\":63,\\\"inherits\\\":66,\\\"readable-stream/duplex.js\\\":83,\\\"readable-stream/passthrough.js\\\":90,\\\"readable-stream/readable.js\\\":91,\\\"readable-stream/transform.js\\\":92,\\\"readable-stream/writable.js\\\":93}],95:[function(require,module,exports){\\n// Copyright Joyent, Inc. and other Node contributors.\\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a\\n// copy of this software and associated documentation files (the\\n// \\\"Software\\\"), to deal in the Software without restriction, including\\n// without limitation the rights to use, copy, modify, merge, publish,\\n// distribute, sublicense, and/or sell copies of the Software, and to permit\\n// persons to whom the Software is furnished to do so, subject to the\\n// following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included\\n// in all copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\nvar Buffer = require('buffer').Buffer;\\n\\nvar isBufferEncoding = Buffer.isEncoding\\n || function(encoding) {\\n switch (encoding && encoding.toLowerCase()) {\\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\\n default: return false;\\n }\\n }\\n\\n\\nfunction assertEncoding(encoding) {\\n if (encoding && !isBufferEncoding(encoding)) {\\n throw new Error('Unknown encoding: ' + encoding);\\n }\\n}\\n\\n// StringDecoder provides an interface for efficiently splitting a series of\\n// buffers into a series of JS strings without breaking apart multi-byte\\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\\n//\\n// @TODO Handling all encodings inside a single object makes it very difficult\\n// to reason about this code, so it should be split up in the future.\\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\\n// points as used by CESU-8.\\nvar StringDecoder = exports.StringDecoder = function(encoding) {\\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\\n assertEncoding(encoding);\\n switch (this.encoding) {\\n case 'utf8':\\n // CESU-8 represents each of Surrogate Pair by 3-bytes\\n this.surrogateSize = 3;\\n break;\\n case 'ucs2':\\n case 'utf16le':\\n // UTF-16 represents each of Surrogate Pair by 2-bytes\\n this.surrogateSize = 2;\\n this.detectIncompleteChar = utf16DetectIncompleteChar;\\n break;\\n case 'base64':\\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\\n this.surrogateSize = 3;\\n this.detectIncompleteChar = base64DetectIncompleteChar;\\n break;\\n default:\\n this.write = passThroughWrite;\\n return;\\n }\\n\\n // Enough space to store all bytes of a single character. UTF-8 needs 4\\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\\n this.charBuffer = new Buffer(6);\\n // Number of bytes received for the current incomplete multi-byte character.\\n this.charReceived = 0;\\n // Number of bytes expected for the current incomplete multi-byte character.\\n this.charLength = 0;\\n};\\n\\n\\n// write decodes the given buffer and returns it as JS string that is\\n// guaranteed to not contain any partial multi-byte characters. Any partial\\n// character found at the end of the buffer is buffered up, and will be\\n// returned when calling write again with the remaining bytes.\\n//\\n// Note: Converting a Buffer containing an orphan surrogate to a String\\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\\n// Buffer#write) will replace incomplete surrogates with the unicode\\n// replacement character. See https://codereview.chromium.org/121173009/ .\\nStringDecoder.prototype.write = function(buffer) {\\n var charStr = '';\\n // if our last write ended with an incomplete multibyte character\\n while (this.charLength) {\\n // determine how many remaining bytes this buffer has to offer for this char\\n var available = (buffer.length >= this.charLength - this.charReceived) ?\\n this.charLength - this.charReceived :\\n buffer.length;\\n\\n // add the new bytes to the char buffer\\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\\n this.charReceived += available;\\n\\n if (this.charReceived < this.charLength) {\\n // still not enough chars in this buffer? wait for more ...\\n return '';\\n }\\n\\n // remove bytes belonging to the current character from the buffer\\n buffer = buffer.slice(available, buffer.length);\\n\\n // get the character that was split\\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\\n\\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\\n var charCode = charStr.charCodeAt(charStr.length - 1);\\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\\n this.charLength += this.surrogateSize;\\n charStr = '';\\n continue;\\n }\\n this.charReceived = this.charLength = 0;\\n\\n // if there are no more bytes in this buffer, just emit our char\\n if (buffer.length === 0) {\\n return charStr;\\n }\\n break;\\n }\\n\\n // determine and set charLength / charReceived\\n this.detectIncompleteChar(buffer);\\n\\n var end = buffer.length;\\n if (this.charLength) {\\n // buffer the incomplete character bytes we got\\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\\n end -= this.charReceived;\\n }\\n\\n charStr += buffer.toString(this.encoding, 0, end);\\n\\n var end = charStr.length - 1;\\n var charCode = charStr.charCodeAt(end);\\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\\n var size = this.surrogateSize;\\n this.charLength += size;\\n this.charReceived += size;\\n this.charBuffer.copy(this.charBuffer, size, 0, size);\\n buffer.copy(this.charBuffer, 0, 0, size);\\n return charStr.substring(0, end);\\n }\\n\\n // or just emit the charStr\\n return charStr;\\n};\\n\\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\\n// the end of the given buffer. If so, it sets this.charLength to the byte\\n// length that character, and sets this.charReceived to the number of bytes\\n// that are available for this character.\\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\\n // determine how many bytes we have to check at the end of this buffer\\n var i = (buffer.length >= 3) ? 3 : buffer.length;\\n\\n // Figure out if one of the last i bytes of our buffer announces an\\n // incomplete char.\\n for (; i > 0; i--) {\\n var c = buffer[buffer.length - i];\\n\\n // See http://en.wikipedia.org/wiki/UTF-8#Description\\n\\n // 110XXXXX\\n if (i == 1 && c >> 5 == 0x06) {\\n this.charLength = 2;\\n break;\\n }\\n\\n // 1110XXXX\\n if (i <= 2 && c >> 4 == 0x0E) {\\n this.charLength = 3;\\n break;\\n }\\n\\n // 11110XXX\\n if (i <= 3 && c >> 3 == 0x1E) {\\n this.charLength = 4;\\n break;\\n }\\n }\\n this.charReceived = i;\\n};\\n\\nStringDecoder.prototype.end = function(buffer) {\\n var res = '';\\n if (buffer && buffer.length)\\n res = this.write(buffer);\\n\\n if (this.charReceived) {\\n var cr = this.charReceived;\\n var buf = this.charBuffer;\\n var enc = this.encoding;\\n res += buf.slice(0, cr).toString(enc);\\n }\\n\\n return res;\\n};\\n\\nfunction passThroughWrite(buffer) {\\n return buffer.toString(this.encoding);\\n}\\n\\nfunction utf16DetectIncompleteChar(buffer) {\\n this.charReceived = buffer.length % 2;\\n this.charLength = this.charReceived ? 2 : 0;\\n}\\n\\nfunction base64DetectIncompleteChar(buffer) {\\n this.charReceived = buffer.length % 3;\\n this.charLength = this.charReceived ? 3 : 0;\\n}\\n\\n},{\\\"buffer\\\":44}],96:[function(require,module,exports){\\n(function (global){\\n\\n/**\\n * Module exports.\\n */\\n\\nmodule.exports = deprecate;\\n\\n/**\\n * Mark that a method should not be used.\\n * Returns a modified function which warns once by default.\\n *\\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\\n *\\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\\n * will throw an Error when invoked.\\n *\\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\\n * will invoke `console.trace()` instead of `console.error()`.\\n *\\n * @param {Function} fn - the function to deprecate\\n * @param {String} msg - the string to print to the console when `fn` is invoked\\n * @returns {Function} a new \\\"deprecated\\\" version of `fn`\\n * @api public\\n */\\n\\nfunction deprecate (fn, msg) {\\n if (config('noDeprecation')) {\\n return fn;\\n }\\n\\n var warned = false;\\n function deprecated() {\\n if (!warned) {\\n if (config('throwDeprecation')) {\\n throw new Error(msg);\\n } else if (config('traceDeprecation')) {\\n console.trace(msg);\\n } else {\\n console.warn(msg);\\n }\\n warned = true;\\n }\\n return fn.apply(this, arguments);\\n }\\n\\n return deprecated;\\n}\\n\\n/**\\n * Checks `localStorage` for boolean values for the given `name`.\\n *\\n * @param {String} name\\n * @returns {Boolean}\\n * @api private\\n */\\n\\nfunction config (name) {\\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\\n try {\\n if (!global.localStorage) return false;\\n } catch (_) {\\n return false;\\n }\\n var val = global.localStorage[name];\\n if (null == val) return false;\\n return String(val).toLowerCase() === 'true';\\n}\\n\\n}).call(this,typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{}],97:[function(require,module,exports){\\narguments[4][66][0].apply(exports,arguments)\\n},{\\\"dup\\\":66}],98:[function(require,module,exports){\\nmodule.exports = function isBuffer(arg) {\\n return arg && typeof arg === 'object'\\n && typeof arg.copy === 'function'\\n && typeof arg.fill === 'function'\\n && typeof arg.readUInt8 === 'function';\\n}\\n},{}],99:[function(require,module,exports){\\n(function (process,global){\\n// Copyright Joyent, Inc. and other Node contributors.\\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a\\n// copy of this software and associated documentation files (the\\n// \\\"Software\\\"), to deal in the Software without restriction, including\\n// without limitation the rights to use, copy, modify, merge, publish,\\n// distribute, sublicense, and/or sell copies of the Software, and to permit\\n// persons to whom the Software is furnished to do so, subject to the\\n// following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included\\n// in all copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\\n\\nvar formatRegExp = /%[sdj%]/g;\\nexports.format = function(f) {\\n if (!isString(f)) {\\n var objects = [];\\n for (var i = 0; i < arguments.length; i++) {\\n objects.push(inspect(arguments[i]));\\n }\\n return objects.join(' ');\\n }\\n\\n var i = 1;\\n var args = arguments;\\n var len = args.length;\\n var str = String(f).replace(formatRegExp, function(x) {\\n if (x === '%%') return '%';\\n if (i >= len) return x;\\n switch (x) {\\n case '%s': return String(args[i++]);\\n case '%d': return Number(args[i++]);\\n case '%j':\\n try {\\n return JSON.stringify(args[i++]);\\n } catch (_) {\\n return '[Circular]';\\n }\\n default:\\n return x;\\n }\\n });\\n for (var x = args[i]; i < len; x = args[++i]) {\\n if (isNull(x) || !isObject(x)) {\\n str += ' ' + x;\\n } else {\\n str += ' ' + inspect(x);\\n }\\n }\\n return str;\\n};\\n\\n\\n// Mark that a method should not be used.\\n// Returns a modified function which warns once by default.\\n// If --no-deprecation is set, then it is a no-op.\\nexports.deprecate = function(fn, msg) {\\n // Allow for deprecating things in the process of starting up.\\n if (isUndefined(global.process)) {\\n return function() {\\n return exports.deprecate(fn, msg).apply(this, arguments);\\n };\\n }\\n\\n if (process.noDeprecation === true) {\\n return fn;\\n }\\n\\n var warned = false;\\n function deprecated() {\\n if (!warned) {\\n if (process.throwDeprecation) {\\n throw new Error(msg);\\n } else if (process.traceDeprecation) {\\n console.trace(msg);\\n } else {\\n console.error(msg);\\n }\\n warned = true;\\n }\\n return fn.apply(this, arguments);\\n }\\n\\n return deprecated;\\n};\\n\\n\\nvar debugs = {};\\nvar debugEnviron;\\nexports.debuglog = function(set) {\\n if (isUndefined(debugEnviron))\\n debugEnviron = process.env.NODE_DEBUG || '';\\n set = set.toUpperCase();\\n if (!debugs[set]) {\\n if (new RegExp('\\\\\\\\b' + set + '\\\\\\\\b', 'i').test(debugEnviron)) {\\n var pid = process.pid;\\n debugs[set] = function() {\\n var msg = exports.format.apply(exports, arguments);\\n console.error('%s %d: %s', set, pid, msg);\\n };\\n } else {\\n debugs[set] = function() {};\\n }\\n }\\n return debugs[set];\\n};\\n\\n\\n/**\\n * Echos the value of a value. Trys to print the value out\\n * in the best way possible given the different types.\\n *\\n * @param {Object} obj The object to print out.\\n * @param {Object} opts Optional options object that alters the output.\\n */\\n/* legacy: obj, showHidden, depth, colors*/\\nfunction inspect(obj, opts) {\\n // default options\\n var ctx = {\\n seen: [],\\n stylize: stylizeNoColor\\n };\\n // legacy...\\n if (arguments.length >= 3) ctx.depth = arguments[2];\\n if (arguments.length >= 4) ctx.colors = arguments[3];\\n if (isBoolean(opts)) {\\n // legacy...\\n ctx.showHidden = opts;\\n } else if (opts) {\\n // got an \\\"options\\\" object\\n exports._extend(ctx, opts);\\n }\\n // set default options\\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\\n if (isUndefined(ctx.depth)) ctx.depth = 2;\\n if (isUndefined(ctx.colors)) ctx.colors = false;\\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\\n if (ctx.colors) ctx.stylize = stylizeWithColor;\\n return formatValue(ctx, obj, ctx.depth);\\n}\\nexports.inspect = inspect;\\n\\n\\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\\ninspect.colors = {\\n 'bold' : [1, 22],\\n 'italic' : [3, 23],\\n 'underline' : [4, 24],\\n 'inverse' : [7, 27],\\n 'white' : [37, 39],\\n 'grey' : [90, 39],\\n 'black' : [30, 39],\\n 'blue' : [34, 39],\\n 'cyan' : [36, 39],\\n 'green' : [32, 39],\\n 'magenta' : [35, 39],\\n 'red' : [31, 39],\\n 'yellow' : [33, 39]\\n};\\n\\n// Don't use 'blue' not visible on cmd.exe\\ninspect.styles = {\\n 'special': 'cyan',\\n 'number': 'yellow',\\n 'boolean': 'yellow',\\n 'undefined': 'grey',\\n 'null': 'bold',\\n 'string': 'green',\\n 'date': 'magenta',\\n // \\\"name\\\": intentionally not styling\\n 'regexp': 'red'\\n};\\n\\n\\nfunction stylizeWithColor(str, styleType) {\\n var style = inspect.styles[styleType];\\n\\n if (style) {\\n return '\\\\u001b[' + inspect.colors[style][0] + 'm' + str +\\n '\\\\u001b[' + inspect.colors[style][1] + 'm';\\n } else {\\n return str;\\n }\\n}\\n\\n\\nfunction stylizeNoColor(str, styleType) {\\n return str;\\n}\\n\\n\\nfunction arrayToHash(array) {\\n var hash = {};\\n\\n array.forEach(function(val, idx) {\\n hash[val] = true;\\n });\\n\\n return hash;\\n}\\n\\n\\nfunction formatValue(ctx, value, recurseTimes) {\\n // Provide a hook for user-specified inspect functions.\\n // Check that value is an object with an inspect function on it\\n if (ctx.customInspect &&\\n value &&\\n isFunction(value.inspect) &&\\n // Filter out the util module, it's inspect function is special\\n value.inspect !== exports.inspect &&\\n // Also filter out any prototype objects using the circular check.\\n !(value.constructor && value.constructor.prototype === value)) {\\n var ret = value.inspect(recurseTimes, ctx);\\n if (!isString(ret)) {\\n ret = formatValue(ctx, ret, recurseTimes);\\n }\\n return ret;\\n }\\n\\n // Primitive types cannot have properties\\n var primitive = formatPrimitive(ctx, value);\\n if (primitive) {\\n return primitive;\\n }\\n\\n // Look up the keys of the object.\\n var keys = Object.keys(value);\\n var visibleKeys = arrayToHash(keys);\\n\\n if (ctx.showHidden) {\\n keys = Object.getOwnPropertyNames(value);\\n }\\n\\n // IE doesn't make error fields non-enumerable\\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\\n if (isError(value)\\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\\n return formatError(value);\\n }\\n\\n // Some type of object without properties can be shortcutted.\\n if (keys.length === 0) {\\n if (isFunction(value)) {\\n var name = value.name ? ': ' + value.name : '';\\n return ctx.stylize('[Function' + name + ']', 'special');\\n }\\n if (isRegExp(value)) {\\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\\n }\\n if (isDate(value)) {\\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\\n }\\n if (isError(value)) {\\n return formatError(value);\\n }\\n }\\n\\n var base = '', array = false, braces = ['{', '}'];\\n\\n // Make Array say that they are Array\\n if (isArray(value)) {\\n array = true;\\n braces = ['[', ']'];\\n }\\n\\n // Make functions say that they are functions\\n if (isFunction(value)) {\\n var n = value.name ? ': ' + value.name : '';\\n base = ' [Function' + n + ']';\\n }\\n\\n // Make RegExps say that they are RegExps\\n if (isRegExp(value)) {\\n base = ' ' + RegExp.prototype.toString.call(value);\\n }\\n\\n // Make dates with properties first say the date\\n if (isDate(value)) {\\n base = ' ' + Date.prototype.toUTCString.call(value);\\n }\\n\\n // Make error with message first say the error\\n if (isError(value)) {\\n base = ' ' + formatError(value);\\n }\\n\\n if (keys.length === 0 && (!array || value.length == 0)) {\\n return braces[0] + base + braces[1];\\n }\\n\\n if (recurseTimes < 0) {\\n if (isRegExp(value)) {\\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\\n } else {\\n return ctx.stylize('[Object]', 'special');\\n }\\n }\\n\\n ctx.seen.push(value);\\n\\n var output;\\n if (array) {\\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\\n } else {\\n output = keys.map(function(key) {\\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\\n });\\n }\\n\\n ctx.seen.pop();\\n\\n return reduceToSingleString(output, base, braces);\\n}\\n\\n\\nfunction formatPrimitive(ctx, value) {\\n if (isUndefined(value))\\n return ctx.stylize('undefined', 'undefined');\\n if (isString(value)) {\\n var simple = '\\\\'' + JSON.stringify(value).replace(/^\\\"|\\\"$/g, '')\\n .replace(/'/g, \\\"\\\\\\\\'\\\")\\n .replace(/\\\\\\\\\\\"/g, '\\\"') + '\\\\'';\\n return ctx.stylize(simple, 'string');\\n }\\n if (isNumber(value))\\n return ctx.stylize('' + value, 'number');\\n if (isBoolean(value))\\n return ctx.stylize('' + value, 'boolean');\\n // For some reason typeof null is \\\"object\\\", so special case here.\\n if (isNull(value))\\n return ctx.stylize('null', 'null');\\n}\\n\\n\\nfunction formatError(value) {\\n return '[' + Error.prototype.toString.call(value) + ']';\\n}\\n\\n\\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\\n var output = [];\\n for (var i = 0, l = value.length; i < l; ++i) {\\n if (hasOwnProperty(value, String(i))) {\\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\\n String(i), true));\\n } else {\\n output.push('');\\n }\\n }\\n keys.forEach(function(key) {\\n if (!key.match(/^\\\\d+$/)) {\\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\\n key, true));\\n }\\n });\\n return output;\\n}\\n\\n\\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\\n var name, str, desc;\\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\\n if (desc.get) {\\n if (desc.set) {\\n str = ctx.stylize('[Getter/Setter]', 'special');\\n } else {\\n str = ctx.stylize('[Getter]', 'special');\\n }\\n } else {\\n if (desc.set) {\\n str = ctx.stylize('[Setter]', 'special');\\n }\\n }\\n if (!hasOwnProperty(visibleKeys, key)) {\\n name = '[' + key + ']';\\n }\\n if (!str) {\\n if (ctx.seen.indexOf(desc.value) < 0) {\\n if (isNull(recurseTimes)) {\\n str = formatValue(ctx, desc.value, null);\\n } else {\\n str = formatValue(ctx, desc.value, recurseTimes - 1);\\n }\\n if (str.indexOf('\\\\n') > -1) {\\n if (array) {\\n str = str.split('\\\\n').map(function(line) {\\n return ' ' + line;\\n }).join('\\\\n').substr(2);\\n } else {\\n str = '\\\\n' + str.split('\\\\n').map(function(line) {\\n return ' ' + line;\\n }).join('\\\\n');\\n }\\n }\\n } else {\\n str = ctx.stylize('[Circular]', 'special');\\n }\\n }\\n if (isUndefined(name)) {\\n if (array && key.match(/^\\\\d+$/)) {\\n return str;\\n }\\n name = JSON.stringify('' + key);\\n if (name.match(/^\\\"([a-zA-Z_][a-zA-Z_0-9]*)\\\"$/)) {\\n name = name.substr(1, name.length - 2);\\n name = ctx.stylize(name, 'name');\\n } else {\\n name = name.replace(/'/g, \\\"\\\\\\\\'\\\")\\n .replace(/\\\\\\\\\\\"/g, '\\\"')\\n .replace(/(^\\\"|\\\"$)/g, \\\"'\\\");\\n name = ctx.stylize(name, 'string');\\n }\\n }\\n\\n return name + ': ' + str;\\n}\\n\\n\\nfunction reduceToSingleString(output, base, braces) {\\n var numLinesEst = 0;\\n var length = output.reduce(function(prev, cur) {\\n numLinesEst++;\\n if (cur.indexOf('\\\\n') >= 0) numLinesEst++;\\n return prev + cur.replace(/\\\\u001b\\\\[\\\\d\\\\d?m/g, '').length + 1;\\n }, 0);\\n\\n if (length > 60) {\\n return braces[0] +\\n (base === '' ? '' : base + '\\\\n ') +\\n ' ' +\\n output.join(',\\\\n ') +\\n ' ' +\\n braces[1];\\n }\\n\\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\\n}\\n\\n\\n// NOTE: These type checking functions intentionally don't use `instanceof`\\n// because it is fragile and can be easily faked with `Object.create()`.\\nfunction isArray(ar) {\\n return Array.isArray(ar);\\n}\\nexports.isArray = isArray;\\n\\nfunction isBoolean(arg) {\\n return typeof arg === 'boolean';\\n}\\nexports.isBoolean = isBoolean;\\n\\nfunction isNull(arg) {\\n return arg === null;\\n}\\nexports.isNull = isNull;\\n\\nfunction isNullOrUndefined(arg) {\\n return arg == null;\\n}\\nexports.isNullOrUndefined = isNullOrUndefined;\\n\\nfunction isNumber(arg) {\\n return typeof arg === 'number';\\n}\\nexports.isNumber = isNumber;\\n\\nfunction isString(arg) {\\n return typeof arg === 'string';\\n}\\nexports.isString = isString;\\n\\nfunction isSymbol(arg) {\\n return typeof arg === 'symbol';\\n}\\nexports.isSymbol = isSymbol;\\n\\nfunction isUndefined(arg) {\\n return arg === void 0;\\n}\\nexports.isUndefined = isUndefined;\\n\\nfunction isRegExp(re) {\\n return isObject(re) && objectToString(re) === '[object RegExp]';\\n}\\nexports.isRegExp = isRegExp;\\n\\nfunction isObject(arg) {\\n return typeof arg === 'object' && arg !== null;\\n}\\nexports.isObject = isObject;\\n\\nfunction isDate(d) {\\n return isObject(d) && objectToString(d) === '[object Date]';\\n}\\nexports.isDate = isDate;\\n\\nfunction isError(e) {\\n return isObject(e) &&\\n (objectToString(e) === '[object Error]' || e instanceof Error);\\n}\\nexports.isError = isError;\\n\\nfunction isFunction(arg) {\\n return typeof arg === 'function';\\n}\\nexports.isFunction = isFunction;\\n\\nfunction isPrimitive(arg) {\\n return arg === null ||\\n typeof arg === 'boolean' ||\\n typeof arg === 'number' ||\\n typeof arg === 'string' ||\\n typeof arg === 'symbol' || // ES6 symbol\\n typeof arg === 'undefined';\\n}\\nexports.isPrimitive = isPrimitive;\\n\\nexports.isBuffer = require('./support/isBuffer');\\n\\nfunction objectToString(o) {\\n return Object.prototype.toString.call(o);\\n}\\n\\n\\nfunction pad(n) {\\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\\n}\\n\\n\\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\\n 'Oct', 'Nov', 'Dec'];\\n\\n// 26 Feb 16:19:34\\nfunction timestamp() {\\n var d = new Date();\\n var time = [pad(d.getHours()),\\n pad(d.getMinutes()),\\n pad(d.getSeconds())].join(':');\\n return [d.getDate(), months[d.getMonth()], time].join(' ');\\n}\\n\\n\\n// log is just a thin wrapper to console.log that prepends a timestamp\\nexports.log = function() {\\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\\n};\\n\\n\\n/**\\n * Inherit the prototype methods from one constructor into another.\\n *\\n * The Function.prototype.inherits from lang.js rewritten as a standalone\\n * function (not on Function.prototype). NOTE: If this file is to be loaded\\n * during bootstrapping this function needs to be rewritten using some native\\n * functions as prototype setup using normal JavaScript does not work as\\n * expected during bootstrapping (see mirror.js in r114903).\\n *\\n * @param {function} ctor Constructor function which needs to inherit the\\n * prototype.\\n * @param {function} superCtor Constructor function to inherit prototype from.\\n */\\nexports.inherits = require('inherits');\\n\\nexports._extend = function(origin, add) {\\n // Don't do anything if add isn't an object\\n if (!add || !isObject(add)) return origin;\\n\\n var keys = Object.keys(add);\\n var i = keys.length;\\n while (i--) {\\n origin[keys[i]] = add[keys[i]];\\n }\\n return origin;\\n};\\n\\nfunction hasOwnProperty(obj, prop) {\\n return Object.prototype.hasOwnProperty.call(obj, prop);\\n}\\n\\n}).call(this,require('_process'),typeof global !== \\\"undefined\\\" ? global : typeof self !== \\\"undefined\\\" ? self : typeof window !== \\\"undefined\\\" ? window : {})\\n},{\\\"./support/isBuffer\\\":98,\\\"_process\\\":82,\\\"inherits\\\":97}]},{},[1]);\\n\"\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/raw-loader!./~/mocha/mocha.js\n// module id = 323\n// module chunks = 1\n//# sourceURL=webpack:///./~/mocha/mocha.js?./~/raw-loader");
2968
2969/***/ },
2970/* 324 */
2971/*!*********************************!*\
2972 !*** ./~/mocha-loader/start.js ***!
2973 \*********************************/
2974/***/ function(module, exports, __webpack_require__) {
2975
2976 eval("/* WEBPACK VAR INJECTION */(function(process) {process.nextTick(function() {\n\tdelete __webpack_require__.c[module.id];\n\tif(typeof window !== \"undefined\" && window.mochaPhantomJS)\n\t\tmochaPhantomJS.run();\n\telse\n\t\tmocha.run();\n});\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../process/browser.js */ 49)))\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/mocha-loader/start.js\n// module id = 324\n// module chunks = 1\n//# sourceURL=webpack:///./~/mocha-loader/start.js?");
2977
2978/***/ }
2979/******/ ])
2980});
2981;
\No newline at end of file